*{box-sizing:border-box}:root{--bg:#f4f5f1;--card:#fff;--text:#111827;--muted:#667085;--line:#e5e7eb;--gold:#c9a227;--green:#027a48;--red:#b42318;--orange:#b54708;--blue:#175cd3;--dark:#162033;--shadow:0 18px 50px rgba(15,23,42,.08);--radius:24px}body{margin:0;min-height:100vh;color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:radial-gradient(circle at 10% 0%,rgba(201,162,39,.14),transparent 35%),linear-gradient(180deg,#fcfcfa 0%,var(--bg) 100%)}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.login-screen{min-height:100vh;display:grid;place-items:center;padding:22px}.login-card{width:min(470px,100%);background:var(--card);border:1px solid var(--line);border-radius:30px;box-shadow:var(--shadow);padding:28px}.brand-row{display:flex;align-items:center;gap:14px;margin-bottom:12px}.brand-mark{width:60px;height:60px;border-radius:20px;background:var(--dark);color:#f9e7a1;display:grid;place-items:center;font-weight:950}.eyebrow{margin:0 0 4px;color:var(--gold);font-size:12px;font-weight:950;text-transform:uppercase;letter-spacing:.08em}h1,h2,h3{margin-top:0}h1{margin-bottom:6px;font-size:clamp(25px,5vw,38px)}h2{margin-bottom:5px}h3{margin-bottom:5px}.muted{color:var(--muted)}.form-stack{display:grid;gap:10px}.form-stack label{color:#344054;font-weight:900;font-size:13px}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:16px;padding:12px 13px;outline:none;background:#fff;color:var(--text)}textarea{min-height:110px;resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--gold);box-shadow:0 0 0 4px rgba(201,162,39,.14)}.primary-btn,.secondary-btn,.ghost-light-btn,.mini-btn,.danger-btn,.tiny-light-btn{border:0;border-radius:16px;font-weight:950;padding:12px 14px}.primary-btn{background:var(--dark);color:#fff}.secondary-btn{background:#fff3bf;color:#4d3b00}.ghost-light-btn{background:rgba(255,255,255,.13);color:#fff}.tiny-light-btn{padding:8px 10px;background:rgba(255,255,255,.13);color:#fff;font-size:12px}.mini-btn{background:#f2f4f7;color:#344054;padding:9px 12px;font-size:13px}.danger-btn{background:#fee4e2;color:var(--red)}.round-btn{border:0;width:42px;height:42px;border-radius:15px;background:var(--dark);color:#fff;font-size:19px;flex:0 0 auto}.message{min-height:20px;margin:0;font-size:13px;font-weight:850}.message.error{color:var(--red)}.message.success{color:var(--green)}.app-shell{min-height:100vh;padding-bottom:96px}.app-header{position:sticky;top:0;z-index:20;background:rgba(244,245,241,.92);backdrop-filter:blur(14px);border-bottom:1px solid rgba(229,231,235,.9);display:flex;justify-content:space-between;gap:14px;align-items:center;padding:14px 16px}.app-header h1{font-size:23px;margin-bottom:2px}.app-main{max-width:1080px;margin:0 auto;padding:14px}.view{display:none}.active-view{display:block;animation:fadeIn .18s ease}@keyframes fadeIn{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}.hero-card,.card{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:0 13px 34px rgba(15,23,42,.05);padding:16px;margin-bottom:14px}.hero-card{background:radial-gradient(circle at top right,rgba(249,231,161,.18),transparent 34%),linear-gradient(135deg,#162033,#30394b);color:#fff}.hero-card .muted,.hero-card p{color:rgba(255,255,255,.76)}.hero-card h2{font-size:27px;margin:14px 0 6px}.hero-top,.card-head,.item-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.card-head{margin-bottom:12px}.split{align-items:center}.hero-actions,.filter-row,.item-actions,.month-controls{display:flex;flex-wrap:wrap;gap:8px}.hero-actions{margin-top:14px}.pill,.status-pill{display:inline-flex;width:fit-content;border-radius:999px;padding:6px 10px;font-size:11px;font-weight:950;text-transform:uppercase}.pill.light{background:rgba(255,255,255,.14);color:#f9e7a1}.pill.gray{background:#f2f4f7;color:#475467}.pill.blue{background:#dbeafe;color:var(--blue)}.pill.green,.status-done{background:#dcfae6;color:var(--green)}.pill.orange,.status-pending{background:#fff7ed;color:var(--orange)}.pill.red,.status-missed{background:#fee4e2;color:var(--red)}.status-rescheduled{background:#dbeafe;color:var(--blue)}.status-utilized{background:#ede9fe;color:#5b21b6}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}.stat-card{border:1px solid var(--line);background:#fff;color:var(--text);border-radius:20px;padding:14px;display:grid;gap:2px;text-align:left;box-shadow:0 8px 22px rgba(15,23,42,.04)}.stat-card small{color:var(--muted);font-size:11px;font-weight:950;text-transform:uppercase}.stat-card strong{font-size:30px}.stat-card.danger{background:#fff7f6}.list-stack{display:grid;gap:10px}.empty{color:var(--muted);text-align:center;padding:18px}.item-card{border:1px solid var(--line);background:#fff;border-radius:19px;padding:14px;display:grid;gap:8px}.item-card.clickable{cursor:pointer;transition:.15s ease}.item-card.clickable:hover{transform:translateY(-2px);border-color:var(--gold);box-shadow:0 14px 30px rgba(15,23,42,.08)}.item-top h3{margin:4px 0 0;font-size:17px}.item-meta{display:flex;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:12px;font-weight:850}.search-input{margin-bottom:12px}.chip{border:1px solid var(--line);background:#fff;color:#344054;border-radius:999px;padding:8px 11px;font-size:12px;font-weight:950}.chip.active{background:var(--dark);color:#fff;border-color:var(--dark)}.mini-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-bottom:12px}.mini-summary-grid article{background:#f8fafc;border:1px solid var(--line);border-radius:16px;padding:11px}.mini-summary-grid small{display:block;color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:950}.mini-summary-grid strong{font-size:22px}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}.calendar-weekdays{margin-bottom:8px}.calendar-weekdays span{text-align:center;color:var(--muted);font-size:11px;font-weight:950;text-transform:uppercase}.calendar-day{min-height:72px;border:1px solid var(--line);background:#fff;border-radius:17px;padding:9px;display:grid;align-content:space-between;text-align:left}.calendar-day.blank{background:transparent;border-color:transparent}.calendar-day.has-class{border-color:rgba(201,162,39,.8);background:#fffdf4}.calendar-day.today{outline:3px solid rgba(201,162,39,.24)}.calendar-count{justify-self:start;border-radius:999px;background:var(--dark);color:#fff;min-width:25px;height:25px;padding:0 7px;display:grid;place-items:center;font-weight:950;font-size:12px}.time-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:10px}.time-card{border:1px solid var(--line);background:#fff;border-radius:18px;padding:13px;display:grid;gap:5px;cursor:pointer}.time-card small{color:var(--gold);font-weight:950;text-transform:uppercase}.time-card strong{font-size:19px}.time-card.inactive{opacity:.65;background:#f8fafc}.time-card.utilized{background:#fbfaff;border-color:#ddd6fe}.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}.profile-box{border:1px solid var(--line);background:#f8fafc;border-radius:16px;padding:12px;display:grid;gap:4px}.profile-box small{color:var(--muted);font-size:11px;font-weight:950;text-transform:uppercase}.profile-box strong{overflow-wrap:anywhere}.bottom-nav{position:fixed;left:10px;right:10px;bottom:10px;z-index:50;background:rgba(22,32,51,.96);border:1px solid rgba(255,255,255,.08);border-radius:25px;box-shadow:0 24px 60px rgba(15,23,42,.28);display:grid;grid-template-columns:repeat(5,1fr);gap:5px;padding:8px}.bottom-nav button{border:0;background:transparent;color:rgba(255,255,255,.68);border-radius:17px;padding:8px 4px;display:grid;gap:3px;place-items:center;font-weight:950}.bottom-nav button span{font-size:10px}.bottom-nav button.active{background:#fff;color:var(--dark)}.more-menu{position:fixed;bottom:88px;right:14px;z-index:60;min-width:210px;background:#fff;border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow);padding:8px;display:grid}.more-menu button{border:0;background:#fff;text-align:left;padding:12px;border-radius:13px;font-weight:950}.more-menu button:hover{background:#f8fafc}.modal{position:fixed;inset:0;z-index:100;background:rgba(15,23,42,.56);backdrop-filter:blur(7px);display:none;place-items:center;padding:16px}.modal.show{display:grid}.modal-box{width:min(680px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:28px;box-shadow:0 34px 90px rgba(15,23,42,.32);padding:18px}.modal-header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}.success-box{text-align:center;max-width:430px}.success-icon{width:72px;height:72px;margin:8px auto 14px;border-radius:999px;display:grid;place-items:center;background:#dcfae6;color:var(--green);font-size:42px;font-weight:950}.attendance-list{display:grid;gap:8px}.attendance-row{border:1px solid var(--line);background:#f8fafc;border-radius:15px;padding:10px;display:grid;gap:8px}@media(max-width:780px){.app-main{padding:12px}.stats-grid{grid-template-columns:repeat(2,1fr)}.hero-top,.card-head,.split,.item-top{display:grid}.hero-actions,.item-actions{display:grid}.primary-btn,.secondary-btn,.ghost-light-btn,.danger-btn{width:100%}.month-controls{justify-content:space-between;width:100%}.calendar-grid,.calendar-weekdays{gap:5px}.calendar-day{min-height:58px;padding:7px;border-radius:13px}.calendar-count{min-width:22px;height:22px;font-size:11px}}

/* ================================
   TEACHER PORTAL V4 ADDITIONS
================================ */
.top-action-row{display:flex;gap:8px;align-items:center}
.notification-btn{position:relative;background:#fff;color:var(--dark);border:1px solid var(--line)}
.notification-badge{position:absolute;top:-4px;right:-4px;background:var(--red);color:#fff;min-width:20px;height:20px;border-radius:999px;display:grid;place-items:center;font-size:11px;font-weight:950;padding:0 5px}
.notification-card{border-left:5px solid var(--gold)}
.notification-card.urgent{border-left-color:var(--red);background:#fff7f6}
.notification-card.message{border-left-color:var(--blue)}
.messages-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin-bottom:12px}
.messages-summary-grid article{border:1px solid var(--line);background:#f8fafc;border-radius:16px;padding:12px}
.messages-summary-grid small{display:block;color:var(--muted);font-size:11px;font-weight:950;text-transform:uppercase}
.messages-summary-grid strong{font-size:24px}
.messages-thread-list{display:grid;gap:10px}
.message-thread-card{border:1px solid var(--line);background:linear-gradient(180deg,#fff,#f8fafc);border-radius:19px;padding:14px;cursor:pointer;transition:.15s ease}
.message-thread-card:hover{transform:translateY(-2px);border-color:var(--gold);box-shadow:0 14px 30px rgba(15,23,42,.08)}
.message-thread-card.has-unread{border-color:var(--gold);background:#fffdf4}
.message-thread-top{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.message-priority{border-radius:999px;padding:6px 9px;font-size:11px;font-weight:950;text-transform:uppercase;background:#f2f4f7;color:#475467}
.message-priority.urgent{background:#fee4e2;color:var(--red)}
.message-priority.important{background:#fff7ed;color:var(--orange)}
.message-preview{color:var(--muted);line-height:1.45}
.message-thread-meta{display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-size:12px;font-weight:850}
.thread-messages-list{display:grid;gap:10px;max-height:50vh;overflow:auto;padding:4px}
.thread-message-bubble{border:1px solid var(--line);border-radius:16px;padding:12px;max-width:84%}
.thread-message-bubble.mine{justify-self:end;background:#ecfdf3;border-color:#bbf7d0}
.thread-message-bubble.theirs{justify-self:start;background:#f8fafc}
.thread-message-meta{display:flex;justify-content:space-between;gap:10px;font-size:12px;color:var(--muted);font-weight:850}
.schedule-target-card{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start}
.schedule-target-card input{width:20px;height:20px;margin-top:4px}
.event-card{border-left:5px solid var(--blue)}
@media(max-width:760px){.message-thread-top,.message-thread-meta{display:grid}.thread-message-bubble{max-width:100%}}

/* =========================================================
   TEACHER PORTAL V5 STYLE PATCH
========================================================= */
.app-header {
  transition: 0.22s ease;
}

.app-header.compact {
  padding: 8px 14px;
  box-shadow: 0 12px 35px rgba(15, 23, 42, 0.08);
}

.app-header.compact h1 {
  font-size: 18px;
  margin-bottom: 0;
  line-height: 1.05;
}

.app-header.compact .eyebrow,
.app-header.compact .muted {
  font-size: 10px;
}

.quick-entry-fab {
  position: fixed;
  right: 18px;
  bottom: 98px;
  z-index: 70;
  width: 62px;
  height: 62px;
  border-radius: 999px;
  border: 0;
  background: #c9a227;
  color: #162033;
  font-size: 34px;
  font-weight: 950;
  box-shadow: 0 18px 45px rgba(15, 23, 42, 0.24);
}

.new-item {
  border-color: #c9a227;
  background: linear-gradient(180deg, #fffdf4 0%, #ffffff 100%);
}

.new-badge {
  display: inline-flex;
  margin-left: 6px;
  padding: 4px 7px;
  border-radius: 999px;
  background: #fff7ed;
  color: #b54708;
  font-size: 10px;
  font-weight: 950;
  vertical-align: middle;
}

.contact-actions {
  margin-bottom: 12px;
}

.delete-entry-actions {
  margin-top: 12px;
}

.thread-action-row {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 10px;
}

.delete-message-btn {
  width: fit-content;
  margin-top: 8px;
  background: #fee4e2 !important;
  color: #b42318 !important;
}

.attachment-link {
  display: inline-flex;
  width: fit-content;
  padding: 8px 10px;
  border-radius: 12px;
  background: #f2f4f7;
  color: #175cd3;
  font-weight: 900;
  text-decoration: none;
}

body.dark-mode {
  --bg: #070b12;
  --card: #111827;
  --text: #f8fafc;
  --muted: #cbd5e1;
  --line: rgba(255, 255, 255, 0.12);
  background: radial-gradient(circle at 10% 0%, rgba(201, 162, 39, 0.14), transparent 35%), #070b12;
}

body.dark-mode .app-header {
  background: rgba(7, 11, 18, 0.92);
}

body.dark-mode .card,
body.dark-mode .item-card,
body.dark-mode .modal-box,
body.dark-mode .login-card,
body.dark-mode .more-menu,
body.dark-mode .more-menu button,
body.dark-mode .time-card,
body.dark-mode .stat-card,
body.dark-mode .profile-box,
body.dark-mode input,
body.dark-mode select,
body.dark-mode textarea {
  background: #111827;
  color: #f8fafc;
  border-color: rgba(255, 255, 255, 0.12);
}

body.dark-mode .muted,
body.dark-mode .item-meta,
body.dark-mode .profile-box small {
  color: #cbd5e1;
}

body.dark-mode .bottom-nav {
  background: rgba(15, 23, 42, 0.98);
}

body.dark-mode .mini-btn,
body.dark-mode .chip {
  background: #1f2937;
  color: #f8fafc;
  border-color: rgba(255, 255, 255, 0.12);
}

body.dark-mode .chip.active,
body.dark-mode .primary-btn,
body.dark-mode .round-btn {
  background: #c9a227;
  color: #111827;
}

body.dark-mode .new-item {
  background: linear-gradient(180deg, rgba(201, 162, 39, 0.18), #111827 100%);
}

body.dark-mode .thread-message-bubble.mine {
  background: #163122;
}

body.dark-mode .thread-message-bubble.theirs {
  background: #1f2937;
}

@media (max-width: 760px) {
  .quick-entry-fab {
    right: 16px;
    bottom: 104px;
    width: 58px;
    height: 58px;
  }

  .app-header.compact .top-action-row {
    transform: scale(0.92);
    transform-origin: right center;
  }
}
