/* StressLens UI — calm mist + deep teal, one warm accent. Light/dark via [data-theme]. */
@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap');
:root{
  --bg:#eef3f1;--surface:#fff;--surface-2:#f6f9f8;--line:#dce6e2;--ink:#14272a;--muted:#5b7073;
  --brand:#1d6b66;--brand-ink:#fff;--brand-soft:#dcefeb;--accent:#f0a35e;--accent-soft:#fdeedd;
  --good:#2f8f5b;--warn:#c9821f;--bad:#c4483f;--bad-soft:#fbe6e3;
  --r-s:10px;--r-m:18px;--r-l:28px;--shadow:0 1px 2px rgba(20,39,42,.05),0 8px 24px -12px rgba(20,39,42,.12);
  --font:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;--side:264px;
}
[data-theme="dark"]{
  --bg:#0e1a1c;--surface:#152427;--surface-2:#1a2d30;--line:#26393c;--ink:#e8f1ef;--muted:#92a9ab;
  --brand:#5fc2b6;--brand-ink:#08201e;--brand-soft:#1d3a3b;--accent:#f2b176;--accent-soft:#3a2d20;--bad-soft:#3a1f1d;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px -12px rgba(0,0,0,.5);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.6 var(--font);min-height:100vh;display:flex;flex-direction:column}
img,svg{max-width:100%}
a{color:var(--brand);text-underline-offset:3px}
a:hover{text-decoration-thickness:2px}
h1,h2,h3{line-height:1.2;letter-spacing:-.02em;margin:0 0 .5em;font-weight:700}
h1{font-size:clamp(1.8rem,3vw,2.4rem);font-weight:800}
h2{font-size:clamp(1.25rem,2vw,1.55rem)}
h3{font-size:1.1rem}
p{margin:0 0 1em}
ul{padding-left:1.2em}
.muted,small{color:var(--muted)}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:6px}
.eyebrow{display:inline-block;font-size:.8rem;font-weight:700;letter-spacing:.02em;text-transform:none;color:var(--brand);margin-bottom:.5rem}
.resource-category{font-size:.78rem;font-weight:700;color:var(--brand)}

/* Layout shell */
.container{width:100%;max-width:1080px;margin:0 auto;padding:32px 24px 56px;flex:1}
footer{padding:20px 24px 28px;text-align:center;color:var(--muted);font-size:.85rem}
footer p{max-width:640px;margin:0 auto}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 28px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
.topbar nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.topbar nav a,.link-button{color:var(--ink);text-decoration:none;font-weight:600;font-size:.92rem;padding:8px 12px;border-radius:var(--r-s);background:none;border:0;cursor:pointer;font-family:inherit;width:auto}
.topbar nav a:hover,.link-button:hover{background:var(--brand-soft)}
.topbar nav a.active{background:var(--brand-soft);color:var(--brand)}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:1.1rem;color:var(--ink);text-decoration:none}
.brand-mark{position:relative;display:inline-flex}
.brand-leaf{position:absolute;inset:0;width:0;height:0}
.inline{display:inline}
.theme-toggle{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;font-size:1.05rem;padding:0;display:inline-grid;place-items:center}
.theme-toggle:hover{background:var(--brand-soft)}

/* Student app shell */
.student-app-shell{display:grid;grid-template-columns:var(--side) 1fr;min-height:100vh;flex:1}
.student-sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;padding:24px 16px;background:var(--surface);border-right:1px solid var(--line)}
.student-sidebar-brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:1.15rem;color:var(--ink);text-decoration:none;padding:0 8px 24px}
.student-sidebar-nav{display:flex;flex-direction:column;gap:4px}
.student-sidebar-nav a{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:12px;color:var(--muted);text-decoration:none;font-weight:600;font-size:.95rem}
.student-sidebar-nav a span[aria-hidden]{width:22px;text-align:center;font-size:1.05rem}
.student-sidebar-nav a:hover{background:var(--surface-2);color:var(--ink)}
.student-sidebar-nav a.active{background:var(--brand);color:var(--brand-ink)}
.sidebar-unread,.badge,.quick-unread{background:var(--accent);color:#3a2308;border-radius:99px;font-size:.72rem;font-weight:800;padding:2px 8px;margin-left:auto}
.student-sidebar-bottom{margin-top:auto;display:grid;gap:6px}
.student-profile{display:flex;align-items:center;gap:10px;padding:10px;border-radius:14px;background:var(--surface-2);text-decoration:none;color:var(--ink)}
.student-profile strong{display:block;font-size:.9rem;line-height:1.2}
.student-profile small{font-size:.75rem}
.student-avatar,.conversation-avatar{width:38px;height:38px;border-radius:50%;background:var(--brand);color:var(--brand-ink);display:grid;place-items:center;font-weight:800;flex:none}
.sidebar-utility-link{padding:8px 12px;color:var(--muted);font-size:.85rem;text-decoration:none}
.sidebar-logout{width:100%;background:none;border:1px solid var(--line);color:var(--ink);border-radius:12px;padding:10px;font-weight:600;cursor:pointer;font-family:inherit}
.sidebar-logout:hover{background:var(--surface-2)}
.student-main{display:flex;flex-direction:column;min-width:0}
.student-topbar{display:flex;justify-content:space-between;align-items:center;padding:14px 32px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 85%,transparent);backdrop-filter:blur(10px);position:sticky;top:0;z-index:15}
.student-topbar>div{display:flex;gap:10px;align-items:center}
.student-topbar-label{font-weight:700;color:var(--muted);font-size:.9rem}
.topbar-message-link{position:relative;width:40px;height:40px;display:grid;place-items:center;border-radius:50%;border:1px solid var(--line);background:var(--surface);text-decoration:none;color:var(--ink)}
.topbar-message-link i{position:absolute;top:8px;right:9px;width:9px;height:9px;border-radius:50%;background:var(--accent)}
.student-app .container{padding-top:28px}
.dashboard-page .container>h1{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.app-tabbar{display:none}

/* Sprig companion */
.global-companion{position:fixed;right:20px;bottom:20px;z-index:12;display:flex;align-items:flex-end;gap:8px;pointer-events:none}
.sprig-stage{width:76px;animation:sprig 4s ease-in-out infinite}
.sprig-note{background:var(--surface);border:1px solid var(--line);border-radius:14px 14px 4px 14px;padding:8px 12px;font-size:.78rem;margin:0;box-shadow:var(--shadow);line-height:1.3}
.sprig-note strong{display:block;color:var(--brand)}
.sprig-note span{color:var(--muted)}
.sprig-shadow{fill:rgba(0,0,0,.12)}
.sprig-leaf{fill:#6bb07e}.sprig-vein{stroke:#3f7d54;stroke-width:2;fill:none}
.sprig-stem{stroke:#3f7d54;stroke-width:4;stroke-linecap:round}
.sprig-face{fill:#f7efe2}.sprig-cheek{fill:#f4b8a4}.sprig-eye{fill:#14272a}
.sprig-smile{stroke:#14272a;stroke-width:2.5;fill:none;stroke-linecap:round}
.sprig-pot{fill:#d9824f}.sprig-pot-rim{fill:#c26f40}
@keyframes sprig{50%{transform:translateY(-4px)}}

/* Controls */
label{display:block;font-weight:600;font-size:.92rem;margin-bottom:16px}
input,select,textarea{display:block;width:100%;margin-top:6px;padding:12px 14px;font:inherit;color:var(--ink);background:var(--surface);border:1.5px solid var(--line);border-radius:var(--r-s);transition:border-color .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px var(--brand-soft)}
textarea{min-height:130px;resize:vertical}
input[type=checkbox],input[type=radio]{width:auto;display:inline-block;margin:0 8px 0 0;accent-color:var(--brand)}
button,.button-link{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 22px;border:0;border-radius:12px;background:var(--brand);color:var(--brand-ink);font:700 .95rem var(--font);cursor:pointer;text-decoration:none;transition:transform .12s,filter .15s}
button:hover,.button-link:hover{filter:brightness(1.08);transform:translateY(-1px)}
button:active{transform:none}
.quiet-button,.admin-clear-link{background:var(--surface-2);color:var(--ink);border:1px solid var(--line)}
.danger-button{background:var(--bad)}
.text-link{font-weight:600;text-decoration:none;white-space:nowrap}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:24px;box-shadow:var(--shadow);margin-bottom:24px}
.notice{padding:14px 18px;border-radius:var(--r-s);margin:0 0 24px;font-weight:600;border:1px solid}
.notice.success{background:#e4f5ea;color:#1f6b40;border-color:#bfe3cc}
.notice.error{background:var(--bad-soft);color:var(--bad);border-color:#f0c1bc}
[data-theme="dark"] .notice.success{background:#16301f;color:#8fdcae;border-color:#25503a}
fieldset{border:0;padding:0;margin:0 0 24px}
legend{font-weight:700;padding:0;margin-bottom:12px}
legend span{display:block;font-weight:400;color:var(--muted);font-size:.88rem;margin-top:2px}
.tag{display:inline-flex;align-items:center;margin:0 8px 8px 0;padding:9px 16px;border:1.5px solid var(--line);border-radius:99px;background:var(--surface);cursor:pointer;font-weight:600}
.tag:has(input:checked){background:var(--brand-soft);border-color:var(--brand);color:var(--brand)}
.tag input{position:absolute;opacity:0;width:0;height:0;margin:0}
.acknowledge{display:flex;align-items:flex-start;font-weight:500;font-size:.88rem}
.page-sub{color:var(--muted);max-width:60ch}
.section-title{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px}
.section-title h2,.section-title p{margin-bottom:0}
.dashboard-section{margin-bottom:40px}
.data-context,.data-note p{color:var(--muted);font-size:.88rem}
.empty-start,.history-empty,.admin-empty-state,.guidance-empty{background:var(--surface);border:1.5px dashed var(--line);border-radius:var(--r-m);padding:24px;display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.empty-start h3,.empty-start p{margin-bottom:4px}
.history-empty,.admin-empty-state,.guidance-empty{display:block;text-align:center;color:var(--muted)}

/* Auth */
.auth-page .container{max-width:1100px;display:flex;align-items:center;padding-top:48px}
.auth-page .container>h1{display:none}
.auth-layout{display:grid;grid-template-columns:1.1fr 1fr;gap:56px;align-items:center;width:100%}
.auth-story h1{display:block;font-size:clamp(2.2rem,4.5vw,3.4rem);letter-spacing:-.03em;margin-bottom:16px}
.auth-story .intro{font-size:1.1rem;color:var(--muted);max-width:46ch}
.auth-feature-list{list-style:none;padding:0;margin:28px 0;display:grid;gap:14px}
.auth-feature-list li{display:grid;padding-left:18px;border-left:3px solid var(--accent)}
.auth-feature-list span{color:var(--muted);font-size:.92rem}
.auth-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);padding:36px;box-shadow:var(--shadow)}
.auth-card form button{width:100%;margin-top:4px}
.auth-card h2{font-size:1.7rem}
.data-note{background:var(--surface-2);box-shadow:none}
.data-note h2{font-size:1.05rem}
.data-note ul{font-size:.88rem;color:var(--muted)}

/* Dashboard */
.dashboard-hero{display:grid;grid-template-columns:1fr 280px;gap:24px;background:linear-gradient(135deg,var(--brand) 0%,#2a8a7f 100%);color:#fff;border-radius:var(--r-l);padding:36px;margin-bottom:32px;overflow:hidden;position:relative}
[data-theme="dark"] .dashboard-hero{background:linear-gradient(135deg,#1d4e4b,#25706a);color:#e8f1ef}
.dashboard-hero h2{font-size:clamp(1.8rem,3.4vw,2.6rem);color:inherit;margin-bottom:6px}
.dashboard-hero .eyebrow{color:var(--accent-soft);opacity:.9}
.dashboard-hero p{opacity:.9}
.dashboard-daily-link{color:#fff;font-weight:600}
.dashboard-weekly-card{display:flex;gap:16px;align-items:center;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25);border-radius:var(--r-m);padding:16px 18px;margin:20px 0 16px;color:#fff;text-decoration:none;backdrop-filter:blur(6px)}
.dashboard-weekly-icon{font-size:1.5rem}
.dashboard-weekly-copy{flex:1;display:grid;gap:4px}
.dashboard-weekly-copy small{color:rgba(255,255,255,.85)}
.dashboard-weekly-track{display:block;height:6px;background:rgba(255,255,255,.25);border-radius:9px;overflow:hidden}
.dashboard-weekly-track i{display:block;height:100%;background:var(--accent)}
.dashboard-weekly-state{font-size:.78rem;font-weight:700;background:rgba(255,255,255,.2);padding:4px 10px;border-radius:99px;white-space:nowrap}
.dashboard-checkin-button{background:#fff;color:var(--brand)}
[data-theme="dark"] .dashboard-checkin-button{background:var(--accent);color:#3a2308}
.dashboard-hero-art{display:grid;place-items:center;text-align:center;font-size:.85rem;opacity:.95}
.dashboard-hero-art svg{width:220px}
.announcement-card,.support-card{background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);border-radius:var(--r-m);padding:22px 26px;margin-bottom:24px}
.announcement-card h2,.support-card h2{font-size:1.2rem}
.support-card{background:var(--brand-soft);border-color:color-mix(in srgb,var(--brand) 30%,transparent)}
.urgent-contact{font-size:.88rem}
.overview-grid,.checkin-result-grid,.history-summary-grid,.challenge-summary-grid,.guidance-metrics,.admin-metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;margin-bottom:20px}
.overview-stat,.checkin-result-grid article,.history-summary-grid article,.challenge-summary,.guidance-metric,.admin-metric{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:20px;display:grid;gap:4px;box-shadow:var(--shadow)}
.overview-stat>span,.checkin-result-grid span,.history-summary-grid span,.challenge-summary span,.guidance-metric span,.admin-metric span{color:var(--muted);font-weight:600;font-size:.88rem}
.overview-stat strong,.checkin-result-grid strong,.history-summary-grid strong,.challenge-summary strong,.guidance-metric strong,.admin-metric strong{font-size:2.1rem;line-height:1.1;letter-spacing:-.03em}
.overview-stat strong small,.checkin-result-grid strong small,.history-summary-grid strong small{font-size:.95rem;font-weight:500}
.overview-stress{border-top:4px solid var(--accent)}.overview-sleep{border-top:4px solid #6c8fd6}.overview-workload{border-top:4px solid #b388d9}.overview-study{border-top:4px solid var(--good)}
.quick-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:32px}
.quick-action,.coping-card,.toolkit-resource-card,.video-resource-card{position:relative;display:grid;gap:4px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:20px;text-decoration:none;color:var(--ink);box-shadow:var(--shadow);transition:transform .15s,border-color .15s}
.quick-action:hover,.coping-card:hover,.toolkit-resource-card:hover,.video-resource-card:hover{transform:translateY(-3px);border-color:var(--brand)}
.action-icon,.toolkit-resource-icon,.video-resource-art{width:44px;height:44px;border-radius:12px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-size:1.2rem;margin-bottom:8px}
.quick-unread{position:absolute;top:16px;right:16px}
.quick-action small,.coping-card small{color:var(--muted)}
.dashboard-reminder{background:var(--accent-soft);border-radius:var(--r-m);padding:18px 24px;margin-bottom:40px}
.dashboard-reminder p{margin:0;font-weight:600}
.dashboard-challenge-list{display:grid;gap:12px;margin-bottom:16px}
.dashboard-challenge-card{display:flex;align-items:center;gap:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:16px 20px}
.dashboard-challenge-main{flex:1;display:grid;gap:8px}
.dashboard-challenge-main small{display:block}
.challenge-icon{width:46px;height:46px;border-radius:14px;background:var(--accent-soft);display:grid;place-items:center;font-size:1.3rem;flex:none}
.challenge-progress{height:8px;background:var(--surface-2);border-radius:9px;overflow:hidden;border:1px solid var(--line)}
.challenge-progress span{display:block;height:100%;background:linear-gradient(90deg,var(--brand),var(--good));border-radius:9px}
.dashboard-support-link{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 22px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);text-decoration:none;color:var(--ink)}
.dashboard-support-link small{display:block}
.dashboard-support-link .badge{margin:0;background:var(--brand-soft);color:var(--brand)}
.chart-card{padding:20px}
.chart-scroll{overflow-x:auto}
.dashboard-stress-chart svg{width:100%;min-width:300px;height:auto}
.dashboard-stress-chart line,.chart-gridline{stroke:var(--line);stroke-width:1}
.dashboard-stress-chart polyline,.history-chart-line{fill:none;stroke:var(--brand);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.dashboard-stress-chart circle,.history-chart-point{fill:var(--surface);stroke:var(--brand);stroke-width:3}
.chart-labels,.history-chart-dates{display:flex;justify-content:space-between;color:var(--muted);font-size:.8rem;margin-top:8px}
.coping-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}
.recent-log-list{display:grid;gap:10px}
.recent-log-list article,.previous-checkin-list article,.history-record-list article{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 18px;align-items:center}
.recent-log-list time,.previous-checkin-list time,.history-record-list time{font-weight:700}
.recent-log-list span,.previous-checkin-list span,.history-record-list span{color:var(--muted);font-size:.9rem}
.history-record-list>article>div{display:flex;gap:16px;flex-wrap:wrap}
.intention-disclosure,.history-details{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:4px 22px;margin-bottom:24px}
summary{cursor:pointer;font-weight:700;padding:14px 0;display:flex;justify-content:space-between;gap:12px;list-style:none}
summary::-webkit-details-marker{display:none}
summary::after{content:'+';color:var(--brand);font-size:1.3rem;line-height:1}
details[open]>summary::after{content:'–'}
summary span{margin-left:auto;margin-right:8px;color:var(--muted);font-weight:500}
.intention-content{padding-bottom:18px}
.intention-content form{display:flex;gap:10px;margin-bottom:10px}
.intention-content input{margin:0}
.completed-goal{color:var(--good);font-weight:700}
.dashboard-foot{display:flex;gap:20px;flex-wrap:wrap;color:var(--muted);font-size:.9rem}

/* Weekly check-in */
.weekly-checkin-form{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);padding:32px;box-shadow:var(--shadow);margin:24px 0 40px}
.checkin-week-label{color:var(--muted);margin-bottom:28px}
.rating-question,.scale-question{padding-bottom:24px;margin-bottom:24px;border-bottom:1px solid var(--line)}
.rating-scale{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}
.rating-choice{margin:0;cursor:pointer}
.rating-choice input{position:absolute;opacity:0}
.rating-choice-card{display:grid;gap:2px;text-align:center;padding:14px 6px;border:1.5px solid var(--line);border-radius:14px;background:var(--surface);transition:all .15s;height:100%}
.rating-choice-card strong{font-size:1.4rem}
.rating-choice-card small{font-size:.74rem;font-weight:500}
.rating-choice:hover .rating-choice-card{border-color:var(--brand)}
.rating-choice input:checked+.rating-choice-card{background:var(--brand);border-color:var(--brand);color:var(--brand-ink);box-shadow:0 6px 16px -6px var(--brand)}
.rating-choice input:checked+.rating-choice-card small{color:inherit}
.rating-choice input:focus-visible+.rating-choice-card{outline:3px solid var(--accent);outline-offset:2px}
.hours-field{display:flex;align-items:center;gap:12px;max-width:280px}
.hours-field input{margin:0;max-width:120px}
.checkin-submit-row{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.checkin-submit-row p{margin:0;color:var(--muted);font-size:.88rem;max-width:44ch}
.previous-checkins h2{font-size:1.1rem}
.previous-checkin-list{display:grid;gap:10px}
.checkin-result-hero,.toolkit-intro,.learn-intro,.history-intro,.support-message-intro,.challenge-intro,.guidance-intro{margin-bottom:28px;max-width:70ch}
.checkin-result-hero h2,.toolkit-intro h2,.learn-intro h2,.history-intro h2,.support-message-intro h2,.challenge-intro h2{font-size:clamp(1.5rem,3vw,2.1rem)}
.result-idea-list{display:grid;gap:10px}
.result-idea-list a{display:flex;gap:12px;padding:14px 18px;border:1px solid var(--line);border-radius:14px;text-decoration:none;font-weight:600;background:var(--surface-2)}
.result-idea-list a:hover{border-color:var(--brand)}

/* Toolkit + Learn */
.toolkit-resource-grid,.learn-library-grid,.learn-video-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:18px;margin-bottom:32px}
.toolkit-resource-card h2{font-size:1.15rem;margin:4px 0}
.toolkit-resource-card p{color:var(--muted);font-size:.92rem}
.toolkit-resource-card strong{color:var(--brand)}
.learn-category-nav,.challenge-filters,.challenge-view-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:24px}
.learn-category-nav a,.challenge-filters a,.challenge-view-tabs a{padding:8px 18px;border-radius:99px;border:1.5px solid var(--line);background:var(--surface);text-decoration:none;color:var(--ink);font-weight:600;font-size:.9rem}
.learn-category-nav a:hover{border-color:var(--brand)}
.challenge-filters a.selected,.challenge-view-tabs a.selected{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}
.challenge-view-tabs a span{opacity:.7;margin-left:4px}
.learn-resource-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column}
.learn-resource-art{height:110px;display:grid;place-items:center;font-size:2.2rem;color:var(--brand);background:var(--brand-soft)}
.art-reflect{background:var(--accent-soft);color:var(--warn)}.art-learn{background:#e7e8fb;color:#5560c4}
[data-theme="dark"] .art-learn{background:#252a4a;color:#a5adf0}
.learn-resource-copy{padding:20px}
.learn-resource-copy h3{margin:4px 0 8px}
.learn-resource-copy p{color:var(--muted);font-size:.92rem}
.learn-resource-guide{background:var(--surface-2);border-radius:var(--r-m);padding:24px;margin-bottom:32px}
.video-resource-card small{color:var(--muted)}

/* History */
.history-intro{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;max-width:none}
.history-range-form{display:flex;align-items:center;gap:10px}
.history-range-form label{margin:0}
.history-range-form select{margin:0;width:auto}
.history-chart-scroll{position:relative;overflow-x:auto;padding-left:22px}
.history-chart-scroll svg{width:100%;min-width:420px;height:auto}
.history-axis-labels{position:absolute;left:0;top:0;height:calc(100% * 170/196);display:flex;flex-direction:column;justify-content:space-between;font-size:.72rem;color:var(--muted);padding-top:0}
.mood-calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;max-width:520px}
.mood-calendar-day{display:grid;place-items:center;aspect-ratio:1;border-radius:12px;background:var(--surface-2);border:1px solid var(--line);font-size:.9rem;line-height:1.1}
.mood-calendar-day small{font-size:.65rem}
.mood-calendar-day.has-entry{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}
.mood-calendar-day.has-entry small{color:inherit;opacity:.8}

/* Messages */
.student-conversation{padding:0;overflow:hidden}
.conversation-heading{display:flex;gap:14px;align-items:center;padding:18px 24px;border-bottom:1px solid var(--line);background:var(--surface-2)}
.conversation-heading small{display:block}
.student-conversation>form,.admin-conversation>form{padding:20px 24px;border-top:1px solid var(--line)}
.student-conversation>.admin-empty-state{margin:24px;border-style:solid}
.message-thread{display:flex;flex-direction:column;gap:10px;padding:24px;max-height:520px;overflow-y:auto}
.message-date-separator{align-self:center;font-size:.78rem;color:var(--muted);background:var(--surface-2);padding:3px 12px;border-radius:99px;margin:8px 0}
.message-bubble{max-width:78%;padding:12px 16px;border-radius:18px;word-wrap:break-word}
.message-bubble p{margin:0 0 4px}
.message-bubble small{font-size:.72rem;opacity:.75}
.message-outgoing{align-self:flex-end;background:var(--brand);color:var(--brand-ink);border-bottom-right-radius:4px}
.message-incoming{align-self:flex-start;background:var(--surface-2);border:1px solid var(--line);border-bottom-left-radius:4px}
.message-outgoing small{color:inherit}

/* Challenges */
.challenge-summary.challenge-active{border-top:4px solid var(--brand)}.challenge-summary.challenge-complete{border-top:4px solid var(--good)}.challenge-summary.challenge-points{border-top:4px solid var(--accent)}
.challenge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}
.challenge-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:24px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:6px}
.challenge-card h2{font-size:1.2rem;margin:8px 0 0}
.challenge-card>p{color:var(--muted);font-size:.92rem}
.challenge-card-head{display:flex;align-items:center;gap:10px}
.challenge-category{font-size:.8rem;font-weight:600;color:var(--muted)}
.challenge-status{margin-left:auto;font-size:.72rem;font-weight:700;padding:3px 10px;border-radius:99px}
.status-active{background:var(--brand-soft);color:var(--brand)}.status-done{background:#e4f5ea;color:var(--good)}
.challenge-meta{display:flex;gap:14px;flex-wrap:wrap;font-size:.82rem;color:var(--muted);margin-bottom:8px}
.challenge-progress-copy{display:flex;justify-content:space-between;font-size:.88rem}
.challenge-week-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:12px 0}
.challenge-week-day{display:grid;place-items:center;padding:6px 0;border-radius:10px;background:var(--surface-2);border:1px solid var(--line);font-size:.8rem}
.challenge-week-day small{font-size:.65rem}
.challenge-week-day.completed{background:var(--good);border-color:var(--good);color:#fff}
.challenge-week-day.completed small{color:#fff}
.challenge-week-day.upcoming{opacity:.5}
.challenge-history{margin:4px 0 12px}
.challenge-history summary{font-size:.88rem;padding:6px 0}
.challenge-step-list{display:flex;flex-wrap:wrap;gap:6px}
.challenge-step-done{font-size:.78rem;background:var(--surface-2);border-radius:99px;padding:3px 10px}
.challenge-completed-note,.challenge-today-note{font-size:.88rem;color:var(--good);font-weight:600;margin:0}
.challenge-card form{margin-top:auto}
.challenge-card form button{width:100%}
.challenge-footnote{margin-top:28px;color:var(--muted);font-size:.85rem}

/* Guidance */
.guidance-metric.metric-average strong{color:var(--brand)}
.guidance-caveat{background:var(--accent-soft);border-radius:var(--r-s);padding:14px 18px;font-size:.88rem}
.guidance-week-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.guidance-week-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:20px;display:grid;gap:12px}
.guidance-week-head,.guidance-week-stats{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;font-size:.9rem}
.guidance-week-head span{color:var(--muted)}
.group-stress-meter{height:10px;border-radius:9px;background:var(--surface-2);overflow:hidden}
.group-stress-meter span{display:block;height:100%;background:linear-gradient(90deg,var(--good),var(--accent),var(--bad))}

/* Admin console */
.admin-console-page .container{max-width:none;padding:0}
.admin-layout{display:grid;grid-template-columns:240px 1fr;min-height:calc(100vh - 140px)}
.admin-sidebar{background:var(--ink);color:#e8f1ef;padding:28px 18px;display:flex;flex-direction:column;gap:20px;position:sticky;top:0;align-self:start;min-height:100vh}
[data-theme="dark"] .admin-sidebar{background:#0a1214;border-right:1px solid var(--line)}
.admin-sidebar-brand{color:#fff;text-decoration:none;font-weight:800;font-size:1.15rem;display:grid}
.admin-sidebar-brand small{font-size:.7rem;color:var(--accent);font-weight:600}
.admin-sidebar nav{display:grid;gap:4px}
.admin-sidebar nav a{color:#b9cdca;text-decoration:none;padding:10px 14px;border-radius:10px;font-weight:600}
.admin-sidebar nav a:hover{background:rgba(255,255,255,.08)}
.admin-sidebar nav a.active{background:var(--brand);color:var(--brand-ink)}
.admin-sidebar-note{margin-top:auto;font-size:.78rem;color:#8ba3a0}
.admin-main{padding:32px 36px;min-width:0}
.admin-page-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:24px;flex-wrap:wrap}
.admin-page-heading h2{font-size:1.8rem;margin-bottom:4px}
.admin-page-heading p{margin:0;color:var(--muted)}
.admin-table-card{padding:22px}
.admin-filter-form,.filter-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;align-items:end;margin-bottom:16px}
.admin-filter-form label{margin:0;font-size:.82rem}
.admin-clear-link{padding:12px 18px;border-radius:12px;text-decoration:none;text-align:center;font-weight:600;font-size:.9rem}
.admin-result-count{color:var(--muted);font-size:.88rem}
.table-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:14px}
table{width:100%;border-collapse:collapse;font-size:.9rem;background:var(--surface)}
th{text-align:left;background:var(--surface-2);font-weight:700;font-size:.8rem;color:var(--muted);padding:12px 16px;white-space:nowrap}
td{padding:14px 16px;border-top:1px solid var(--line);vertical-align:middle}
tbody tr:hover{background:var(--surface-2)}
td small{display:block}
td a:not(.button-link){font-weight:700;text-decoration:none}
td .button-link{padding:7px 14px;font-size:.82rem}
.status-pill{display:inline-block;padding:3px 12px;border-radius:99px;font-size:.78rem;font-weight:700}
.status-pill.status-active{background:#e4f5ea;color:var(--good)}.status-pill.status-suspended{background:var(--bad-soft);color:var(--bad)}
.admin-pagination{display:flex;justify-content:center;align-items:center;gap:20px;margin-top:18px}
.admin-pagination a{font-weight:600;text-decoration:none}
.account-control-card{display:flex;gap:24px;align-items:center;flex-wrap:wrap;justify-content:space-between}
.account-control-card form{display:flex;gap:12px;align-items:end}
.account-control-card label{margin:0}
.admin-conversation{padding:0;overflow:hidden}
.admin-conversation>.admin-page-heading{padding:22px 24px 0}
.admin-auth-layout{max-width:1000px;margin:0 auto}

/* Responsive */
@media(max-width:1000px){
  .dashboard-hero{grid-template-columns:1fr}.dashboard-hero-art{display:none}
  .auth-layout{grid-template-columns:1fr;gap:32px}
  .admin-layout{grid-template-columns:1fr}
  .admin-sidebar{position:static;min-height:0;flex-direction:row;align-items:center;flex-wrap:wrap;padding:14px 18px}
  .admin-sidebar-note{display:none}.admin-sidebar nav{display:flex}
}
@media(max-width:860px){
  .student-app-shell{grid-template-columns:1fr}
  .student-sidebar{display:none}
  .student-topbar{padding:12px 18px}
  .container{padding:20px 16px 110px}
  .app-tabbar{display:grid;grid-template-columns:repeat(6,1fr);position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--surface);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
  .app-tabbar a{display:grid;justify-items:center;gap:0;padding:6px 2px;color:var(--muted);text-decoration:none;border-radius:12px;font-size:1.1rem}
  .app-tabbar a small{font-size:.62rem;font-weight:600}
  .app-tabbar a.active{color:var(--brand);background:var(--brand-soft)}
  .global-companion{bottom:84px;right:10px}.sprig-note{display:none}.sprig-stage{width:56px}
  .rating-scale{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
  .rating-choice-card small{font-size:.62rem}
  .weekly-checkin-form,.auth-card{padding:22px}
  .dashboard-hero{padding:24px}
  .admin-main{padding:20px 16px}
  .intention-content form{flex-direction:column}
  .message-bubble{max-width:90%}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* Utility pages: daily log, reflection, gratitude, breathing, grounding, digest, password, privacy */
.page-hero{max-width:64ch;margin:4px 0 24px}
.page-hero h2{font-size:clamp(1.5rem,3vw,2.1rem)}
.page-hero p{color:var(--muted)}
.form-card{max-width:760px}
.form-actions{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-top:8px}
.form-actions p{margin:0;font-size:.88rem;color:var(--muted);max-width:44ch}
.tag-grid{display:flex;flex-wrap:wrap}
.tag:has(input:focus-visible){outline:3px solid var(--accent);outline-offset:2px}
.chip{display:inline-block;background:var(--brand-soft);color:var(--brand);border-radius:99px;padding:3px 12px;font-size:.82rem;font-weight:600;margin:2px 6px 2px 0}
.entry-timeline{max-width:760px;margin-top:36px}
.entry-timeline h2{font-size:1.15rem}
.entry-timeline ol{list-style:none;margin:0;padding:0 0 0 22px;border-left:2px solid var(--line);display:grid;gap:14px}
.entry-timeline li{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 18px}
.entry-timeline li::before{content:'';position:absolute;left:-30px;top:20px;width:12px;height:12px;border-radius:50%;background:var(--brand);border:3px solid var(--bg)}
.entry-timeline time{display:block;font-weight:700;font-size:.9rem;margin-bottom:4px}
.entry-timeline li strong{display:block;font-size:.88rem;color:var(--brand);margin-bottom:4px}
.entry-timeline li p{margin:0;color:var(--muted)}
.entry-timeline li.is-empty{background:transparent;border-style:dashed;color:var(--muted)}
.entry-timeline li.is-empty::before{background:var(--line)}
.prompt-card{max-width:760px;background:var(--accent-soft);border-radius:var(--r-m);padding:20px 24px;margin-bottom:20px;font-weight:700;font-size:1.15rem}
.two-col{display:grid;grid-template-columns:1.4fr 1fr;gap:24px;align-items:start}
.two-col .form-card{max-width:none}
.tips-card ul{margin:0;color:var(--muted)}
.practice-card{max-width:760px;text-align:center}
.breath-orb{position:relative;width:min(260px,70vw);aspect-ratio:1;margin:12px auto 24px;display:grid;place-items:center}
.breath-orb::before{content:'';position:absolute;inset:0;border-radius:50%;background:var(--brand);box-shadow:0 0 0 14px var(--brand-soft);animation:breathe 10s ease-in-out infinite}
.breath-label{position:absolute;color:var(--brand-ink);font-weight:700;font-size:1.05rem;opacity:0}
.breath-in{animation:labelIn 10s infinite}.breath-out{animation:labelOut 10s infinite}
@keyframes breathe{0%,100%{transform:scale(.55)}45%,55%{transform:scale(1)}}
@keyframes labelIn{0%,40%{opacity:1}45%,100%{opacity:0}}
@keyframes labelOut{0%,50%{opacity:0}55%,95%{opacity:1}100%{opacity:0}}
.grounding-steps{list-style:none;padding:0;margin:0 0 24px;display:grid;gap:12px;max-width:760px}
.grounding-steps li{display:flex;align-items:center;gap:18px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-m);padding:14px 20px}
.grounding-steps strong{width:48px;height:48px;border-radius:14px;background:var(--brand-soft);color:var(--brand);display:grid;place-items:center;font-size:1.8rem;line-height:1}
.grounding-steps span{font-weight:600}
.privacy-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;margin-bottom:32px}
.privacy-grid .card{margin:0}
.privacy-grid h3{font-size:1rem}
.privacy-grid p{margin:0;color:var(--muted);font-size:.9rem}
.record-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.record-grid article{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:grid}
.record-grid strong{font-size:1.6rem;line-height:1.1}
.record-grid span{color:var(--muted);font-size:.82rem}
.danger-zone{border-color:color-mix(in srgb,var(--bad) 40%,var(--line))}
.danger-zone h2{color:var(--bad);font-size:1.2rem}
@media(max-width:860px){.two-col{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.breath-label{display:none}.breath-orb::before{transform:scale(.85)}}

/* Login/register: keep flash messages as a banner above the two-column layout */
.auth-page .container{flex-direction:column;align-items:stretch;justify-content:center}
.auth-page .container>.notice{max-width:620px;width:100%;margin:0 auto 20px;text-align:center}

/* Personalization: accents, avatars, Sprig variants, profile page */
:root{--hero-1:#1d6b66;--hero-2:#2a8a7f}
[data-theme="dark"]{--hero-1:#1d4e4b;--hero-2:#25706a}
html[data-theme] .dashboard-hero{background:linear-gradient(135deg,var(--hero-1),var(--hero-2))}
[data-accent="blue"]{--brand:#2f62c4;--brand-soft:#e0e9fb;--hero-1:#2a4fa3;--hero-2:#3f78d6}
[data-accent="purple"]{--brand:#6b4bc4;--brand-soft:#ebe4fa;--hero-1:#53389f;--hero-2:#7c5fd6}
[data-accent="peach"]{--brand:#c2602a;--brand-soft:#fdeadb;--hero-1:#b5532a;--hero-2:#e0834f}
[data-accent="blue"][data-theme="dark"]{--brand:#7ea6f2;--brand-soft:#1f2f55;--brand-ink:#0b1730;--hero-1:#1f3a73;--hero-2:#2b5bb0}
[data-accent="purple"][data-theme="dark"]{--brand:#b39cf0;--brand-soft:#2d2450;--brand-ink:#170f33;--hero-1:#3a2a78;--hero-2:#5a43a8}
[data-accent="peach"][data-theme="dark"]{--brand:#f2a572;--brand-soft:#3d2a1d;--brand-ink:#2b1405;--hero-1:#7a3f1f;--hero-2:#a65a2c}
.student-avatar[class*="av-"]{color:#fff}
.av-teal{background:#1d6b66}.av-blue{background:#2f62c4}.av-purple{background:#6b4bc4}.av-peach{background:#c2602a}.av-rose{background:#c94f76}.av-slate{background:#4b5f66}
.av-icon{font-size:1.15rem}
.topbar-avatar{display:grid;place-items:center;text-decoration:none}
.topbar-avatar .student-avatar{width:40px;height:40px}
.student-profile strong{display:block;max-width:132px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.student-profile.active{outline:2px solid var(--brand)}
.sprig-pot{fill:var(--pot,#d9824f)}.sprig-pot-rim{fill:var(--pot-rim,#c26f40)}
.sprig-petal{fill:#f4a6c0}.sprig-center{fill:#f2c14e}.sprig-bloom{fill:#f4a6c0}
.sprig-cactus{fill:#8cc29a;stroke:#5f9a70;stroke-width:1.5}
.sprig-spine{stroke:#e8f4ea;stroke-width:2;stroke-linecap:round;fill:none}
.sprig-art{display:block;width:100%;height:auto}
.profile-preview{display:flex;align-items:center;gap:24px;flex-wrap:wrap;background:linear-gradient(135deg,var(--brand-soft),var(--surface))}
.pv-avatar{width:84px;height:84px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:2.2rem;font-weight:800;background:#1d6b66;flex:none}
.pv-icon,.pv-sprig{display:none}
.pv-text{flex:1;min-width:160px}
.pv-name{display:block;font-size:1.4rem;font-weight:800;letter-spacing:-.02em}
.pv-sprigs{width:120px;flex:none}
.profile-section h2{font-size:1.15rem}
.profile-section .option-grid+.option-grid{margin-top:14px}
.option-grid{display:flex;flex-wrap:wrap;gap:10px}
.option-card{position:relative;margin:0;cursor:pointer}
.option-card input{position:absolute;opacity:0;width:1px;height:1px;margin:0}
.option-card>span{display:grid;justify-items:center;gap:6px;min-width:88px;padding:12px 14px;border:1.5px solid var(--line);border-radius:14px;background:var(--surface);font-weight:600;font-size:.88rem;transition:border-color .15s,box-shadow .15s}
.option-card:hover>span{border-color:var(--brand)}
.option-card input:checked+span{border-color:var(--brand);background:var(--brand-soft);box-shadow:0 0 0 3px var(--brand-soft)}
.option-card input:focus-visible+span{outline:3px solid var(--accent);outline-offset:2px}
.option-card .mini{display:block;width:64px}
.option-card.round>span{min-width:0;padding:6px;border-radius:50%}
.option-card.round input:checked+span{box-shadow:0 0 0 3px var(--brand)}
.swatch{display:block;width:34px;height:34px;border-radius:50%}
.icon-choice{min-width:56px;font-size:1.4rem}
.theme-choice{font-size:.92rem;padding:12px 20px}
.profile-actions{max-width:760px;margin-bottom:28px}
.profile-form .card,.profile-links{max-width:760px}
.profile-link-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.profile-link-list a{display:grid;padding:14px 16px;border:1px solid var(--line);border-radius:14px;text-decoration:none;color:var(--ink);background:var(--surface-2)}
.profile-link-list a:hover{border-color:var(--brand)}
.profile-link-list small{color:var(--muted)}
