html,body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-sans)}
.auth{max-width:420px;margin:0 auto;padding:40px 20px 28px;display:grid;gap:16px;align-content:start;min-height:100vh;box-sizing:border-box}
.auth .logo{display:grid;justify-items:center;margin-bottom:12px}
.auth .logo img{height:36px}
.logo-dark{display:none}
:root[data-theme="dark"] .logo-light{display:none}:root[data-theme="dark"] .logo-dark{display:block}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .logo-light{display:none}:root:not([data-theme="light"]) .logo-dark{display:block}}
.center{text-align:center}
.link{color:var(--accent);font-weight:600;background:none;border:0;padding:0;cursor:pointer;font:inherit;text-decoration:none}
.link:hover{text-decoration:underline}
.ltr{direction:ltr;text-align:right}
.code-row{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;direction:ltr}
.code-row input{text-align:center;font-size:20px;padding-inline:0}
.hint{font-size:13px;color:var(--ink-muted)}
.ok{color:var(--status-done)}
.demo-code{background:var(--accent-soft);border:1px dashed var(--accent);border-radius:var(--radius-md);padding:10px 14px;font-size:14px}
.demo-code b{font-family:var(--font-display);letter-spacing:2px}
.seats{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:8px}
.seats label{border:1px solid var(--line-control);border-radius:var(--radius-md);padding:10px 8px;text-align:center;cursor:pointer;display:grid;gap:2px;background:var(--surface)}
.seats input{position:absolute;opacity:0;pointer-events:none}
.seats label:has(input:checked){border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent)}
.seats label:has(input:focus-visible){outline:2px solid var(--focus-ring);outline-offset:2px}
.seats b{font-family:var(--font-display);font-size:20px}
.seats span{font-size:12px;color:var(--ink-muted)}
.steps{display:flex;gap:6px;justify-content:center}
.steps i{width:28px;height:4px;border-radius:2px;background:var(--line-control)}
.steps i.on{background:var(--accent)}
.topbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.topbar .who{margin-inline-start:auto;display:flex;align-items:center;gap:10px;font-size:14px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px;display:grid;gap:8px}
.kpi .num-xl{line-height:1}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.toolbar .lc-input{flex:1;min-width:180px;max-width:320px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px;display:grid;gap:12px}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
.tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface)}
.tbl-wrap .lc-table{border:0;min-width:560px}
.row-actions{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}
.lc-input:focus-visible,.lc-btn:focus-visible,.link:focus-visible,select:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
select.lc-input{appearance:auto}
.toast{position:fixed;inset-inline:16px;bottom:20px;max-width:420px;margin-inline:auto;background:var(--ink);color:var(--paper);border-radius:var(--radius-md);padding:12px 16px;z-index:30;box-shadow:var(--shadow-lg);text-align:center}
.toast[hidden]{display:none}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.note{display:flex;gap:12px;justify-content:space-between;align-items:baseline;padding:10px 12px;border-radius:var(--radius-sm);background:var(--surface-sunken)}
.note.is-unread{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}
a.lc-btn{text-decoration:none}

/* ---------- app shell ---------- */
.shell{max-width:760px;margin:0 auto}
.shell__col{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;min-width:0}
.shell__bar{display:flex;align-items:center;gap:12px;padding:12px 16px}
.shell__who{margin-inline-start:auto;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:50%}
.shell__main{flex:1;padding:4px 16px 24px}
.shell__nav{position:sticky;bottom:0;z-index:10;padding-bottom:calc(12px + env(safe-area-inset-bottom,0px))}
.stack{display:grid;gap:14px;align-content:start}
.menu{padding:4px 8px}
.menu-row{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:8px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--ink);font:inherit;text-align:start;cursor:pointer}
.menu-row:hover{background:var(--surface-sunken)}
.menu-row:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.menu-row__t{flex:1;display:grid;gap:0;min-width:0}
.menu-row.is-danger{color:var(--danger)}
.flip-end{margin-inline-start:auto;color:var(--ink-subtle)}
.back-head{display:flex;align-items:center;gap:8px}
.back-head .lc-icon-btn{flex:none}
.back-head svg{transform:scaleX(-1)}
.kv{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-block-end:1px solid var(--line)}
.kv:last-child{border-block-end:0}
.kv b{min-width:0;overflow-wrap:anywhere}
.profile{display:flex;gap:14px;align-items:center}
.today-card{display:flex;gap:14px;align-items:center;background:var(--surface);border-radius:var(--radius-lg);padding:14px 16px;border:1px solid var(--line)}
.empty{justify-items:start}
.skeleton{height:64px;border-radius:var(--radius-md);background:linear-gradient(90deg,var(--surface-sunken),var(--surface),var(--surface-sunken));background-size:200% 100%;animation:sk 1.2s ease infinite}
@keyframes sk{from{background-position:200% 0}to{background-position:-200% 0}}
.subj-row{display:grid;grid-template-columns:96px 1fr auto;gap:10px;align-items:center}
.subj-bars{position:relative;height:10px;border-radius:5px;background:var(--surface-sunken)}
.subj-bars span{position:absolute;inset-block:0;inset-inline-start:0;border-radius:5px}
.subj-bars .plan{background:var(--subj-soft,var(--line))}
.subj-bars .act{background:var(--subj,var(--accent));height:100%}
.celebrate{background:var(--status-done-soft);color:var(--status-done);border:1px solid var(--status-done);border-radius:var(--radius-md);padding:12px 16px;font-weight:600}
.ro-banner{display:flex;gap:8px;align-items:center;background:var(--accent-soft);border:1px solid var(--accent);border-radius:var(--radius-md);padding:10px 14px;font-size:14px}
.lc-item.ro{cursor:default}
.lc-check{cursor:pointer;position:relative;padding:0}
.lc-check::after{content:"";position:absolute;inset:-8px}
.lc-check[aria-disabled="true"]{cursor:default;opacity:.7}
.lc-check.is-done svg{animation:draw .2s ease;stroke-dasharray:24}
@keyframes draw{from{stroke-dashoffset:24}to{stroke-dashoffset:0}}
.lc-day__head svg.chev{transition:transform .15s ease}
.lc-day__head[aria-expanded="true"] svg.chev{transform:rotate(180deg)}
.lc-day__head:focus-visible,.lc-item:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.scrim{position:fixed;inset:0;background:rgba(10,12,20,.45);z-index:20}
.sheet-host{position:fixed;inset-inline:0;bottom:0;z-index:21;display:flex;justify-content:center}
.sheet-host[hidden],.scrim[hidden]{display:none}
.sheet-host .lc-sheet{width:100%;max-width:480px;max-height:92vh;overflow:auto;box-sizing:border-box;animation:up .2s ease}
@keyframes up{from{transform:translateY(24px);opacity:.4}to{transform:none;opacity:1}}
.lc-seg button svg{pointer-events:none}
.kpis{margin-block:0}

/* ---------- people, roster, plan editor ---------- */
.people{display:grid;gap:10px}
.person{display:grid;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:12px 14px}
.person__head{display:flex;align-items:center;gap:10px}
.person__main{flex:1;min-width:0;display:grid;gap:2px}
.person__main b{overflow-wrap:anywhere}
.person--link{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none;cursor:pointer}
.person--link:hover{border-color:var(--line-control)}
.person--link:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.person--link .person__main{gap:3px}
.lc-input--sm{min-height:40px;padding-block:4px}
select.lc-input--sm{max-width:240px}
.actions{display:flex;gap:8px;flex-wrap:wrap}
.actions .lc-btn{flex:1;min-width:120px}
.report{display:grid;gap:2px;background:var(--surface-sunken);border-radius:var(--radius-sm);padding:10px 12px;font-size:14px}
.sheet-host .lc-thread{max-height:220px;overflow:auto}
.lc-pill{white-space:nowrap}
.person__main .num,.t-caption .num{font-size:inherit;line-height:inherit;font-weight:500}

/* ---------- staff shell (side menu on wide screens) ---------- */
.shell__side{display:none}
.side-card{margin-top:24px;padding:12px;border-radius:var(--radius-md);background:var(--surface-sunken);font-size:13px;display:grid;gap:2px}
@media(min-width:1100px){
  .shell.is-staff{display:grid;grid-template-columns:240px minmax(0,1fr);max-width:1560px}
  .shell.is-staff .shell__side{display:grid;position:sticky;top:0;height:100vh;align-content:start;overflow:auto}
  .shell.is-staff .shell__nav,.shell.is-staff .shell__bar{display:none}
  .shell.is-staff .shell__main{padding:24px 28px 48px}
}
.page-head{display:flex;gap:12px;align-items:center;flex-wrap:wrap;justify-content:space-between}
.week-head{display:flex;align-items:center;gap:8px}
.week-head--inline{min-width:240px}
.back-ico{transform:scaleX(-1)}
.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- plan editor ---------- */
.pe-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.pe-toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pe-toolbar .pe-count{margin-inline-start:auto}
.pe-validity{border:0;cursor:pointer;background:var(--accent-soft);color:var(--accent);font-weight:600}
.pe-validity:focus-visible,.vs-card:focus-visible,.pe-pills .lc-pill:focus-visible,.sw:focus-visible,.ib-row:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.pe-body{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}
.pe-grid .lc-grid__c{cursor:cell}
.pe-grid .lc-grid__c:focus-visible,.pe-grid .lc-block:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-2px}
.pe-grid .lc-grid__t{font-size:11px}
.pe-grid{grid-template-columns:64px repeat(7,minmax(0,1fr))}
.blk-st{display:inline-flex;margin-inline-start:6px;vertical-align:middle}
.blk-st.st-done{color:var(--status-done)}.blk-st.st-partial{color:var(--status-partial)}.blk-st.st-skipped{color:var(--status-skipped)}
.pe-side{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:16px;display:grid;gap:12px;position:sticky;top:16px}
.pe-side--hint{gap:8px;background:var(--surface-sunken);border-style:dashed}
.pe-pills{display:flex;gap:6px;flex-wrap:wrap}
.pe-pills .lc-pill{border:0;cursor:pointer;min-height:32px}
.pe-pills .lc-pill.is-on{background:var(--subj-soft);color:var(--subj);box-shadow:inset 0 0 0 1.5px var(--subj)}
.pe-two{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pe-actions{display:flex;gap:8px;flex-wrap:wrap}
.pe-note{padding:8px 12px;font-size:13px}
.vs{display:grid;gap:8px}
.vs-card{display:grid;gap:2px;text-align:start;padding:12px 14px;border:1px solid var(--line-control);border-radius:var(--radius-md);background:var(--surface);color:var(--ink);font:inherit;cursor:pointer}
.vs-card.is-on{background:var(--accent-soft);border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.vs-date{display:grid;grid-template-columns:1fr 1.4fr 1.2fr;gap:8px}
.tp{display:grid;gap:4px;margin-top:6px}
.tp-row{display:flex;gap:10px;align-items:baseline}
.tp-row b{min-width:76px}

/* ---------- advisor: roster, inbox, report ---------- */
.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}
.kpi-num{font-size:30px;line-height:40px;font-weight:800}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:16px}
.person.is-low{border-color:var(--danger)}
.lc-table tr.is-flagged td:first-child{box-shadow:inset -3px 0 0 var(--danger)}
.ib-grid{display:grid;grid-template-columns:400px minmax(0,1fr);gap:16px;align-items:start}
.ib-list{padding:6px;display:grid;gap:2px}
.ib-row{display:flex;gap:10px;align-items:flex-start;padding:10px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--ink);font:inherit;cursor:pointer;width:100%}
.ib-row:hover{background:var(--surface-sunken)}
.ib-row.is-sel{background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}
.ib-detail{display:grid;gap:14px}
.rp-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:16px}
@media(max-width:1099px){.rp-grid,.pe-body,.ib-grid{grid-template-columns:1fr}}
.chart{width:100%;height:auto;max-height:260px}
.chart .bar-plan{fill:none;stroke:var(--line-control);stroke-width:1.5}
.chart .bar-done{fill:var(--status-done)}
.chart .ax{fill:var(--ink-muted);font-size:11px;font-family:var(--font-sans)}
.chart .grid{stroke:var(--line);stroke-width:1}
.chart .thr{stroke:var(--danger);stroke-width:1.5;stroke-dasharray:5 4}
.chart .trend{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.chart .dot{fill:var(--surface);stroke:var(--accent);stroke-width:2.5}
.legend{font-size:12px;color:var(--ink-muted);display:inline-flex;gap:6px;align-items:center}
.legend i{display:inline-block;width:12px;height:12px;border-radius:3px}
.legend .lp{border:1.5px solid var(--line-control)}.legend .ld{background:var(--status-done)}
.swatches{display:flex;gap:6px;flex-wrap:wrap}
.sw{width:28px;height:28px;border-radius:50%;border:2px solid transparent;background:var(--subj);cursor:pointer;padding:0}
.sw.is-on{box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--subj)}
.subj-edit{display:flex;gap:10px;align-items:center}
.subj-edit .dot{width:14px;height:14px;border-radius:50%;background:var(--subj);flex:none}
.card.is-archived{opacity:.55}
@media(max-width:700px){.week-head--inline{flex-basis:100%;min-width:0}.pe-head .t-title2{font-size:20px;line-height:30px}}

/* ---------- phase 3: dashboard, import, billing, onboarding, admin ---------- */
.lc-sheet.is-wide{max-width:760px}
.sheet-host .lc-sheet.is-wide{max-width:760px}
.dash-grid{grid-template-columns:1fr 1fr}
@media(max-width:1099px){.dash-grid{grid-template-columns:1fr}}
.dropzone{display:grid;gap:4px;justify-items:center;text-align:center;padding:22px 16px;border:2px dashed var(--line-control);border-radius:var(--radius-md);background:var(--surface-sunken);cursor:pointer}
.dropzone.is-over{border-color:var(--accent);background:var(--accent-soft)}
.dropzone input{max-width:100%}
.bulk-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:var(--accent-soft);border:1px solid var(--accent);border-radius:var(--radius-md);padding:8px 12px;position:sticky;top:8px;z-index:5}
.sel-box{width:20px;height:20px;accent-color:var(--accent);flex:none}
.logo-preview{display:grid;place-items:center;min-height:84px;border:1px dashed var(--line-control);border-radius:var(--radius-md);background:var(--surface-sunken);padding:10px}
.logo-preview img{max-height:72px;max-width:100%}
.brand{display:flex;align-items:center;gap:10px;min-width:0}
.brand__sep{width:1px;height:22px;background:var(--line-control);flex:none}
.brand__logo{height:28px;max-width:110px;object-fit:contain}
.lc-invoice{border-top:1px solid var(--line)}
@media(max-width:700px){.lc-invoice{grid-template-columns:1fr auto;gap:8px}}
.tpl{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--line-control);border-radius:var(--radius-md);background:var(--surface);color:var(--ink);font:inherit;cursor:pointer;width:100%}
.tpl.is-sel{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent)}
.tpl:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.tpl .sw-dot{width:14px;height:14px;border-radius:50%;background:var(--subj);flex:none}
.shell__bar .brand{flex:1}

/* F6 quick add and workload */
.qa{display:grid;gap:6px}
.qa-line{display:flex;gap:8px;align-items:flex-start}
.qa-input{flex:1;min-height:44px;resize:none;line-height:1.7;overflow:hidden}
.qa-preview:empty{display:none}
.qa-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:6px 10px;border-radius:var(--radius-md);background:var(--surface-sunken)}
.qa-row.is-bad{background:var(--danger-soft)}
.qa-warn{color:var(--danger);font-weight:600}
.wl{display:grid;gap:10px;padding:14px}
.wl-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.wl-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.wl-cell{display:grid;gap:4px;justify-items:center;padding:8px 4px;border-radius:var(--radius-md);text-align:center}
.wl-cell .lc-bar{width:100%}
.wl-cell .lc-bar .o{background:var(--danger)}
.wl-cell.is-over{background:var(--danger-soft);color:var(--danger)}
.lc-grid__h.is-over{background:var(--danger-soft);color:var(--danger)}
.lc-day__count.is-over{color:var(--danger);font-weight:600}
.ft-row{display:grid;grid-template-columns:80px 1fr auto;gap:8px;align-items:center}
@media(max-width:560px){.wl-row{gap:4px}.wl-cell{padding:6px 2px}}

/* F1 focus timer */
.focus-clock{display:grid;gap:6px;justify-items:center;padding:24px 8px;border-radius:var(--radius-lg);background:var(--surface-sunken)}
.focus-clock .num{font-size:56px;line-height:64px;font-weight:700;font-variant-numeric:tabular-nums}
.focus-clock.is-rest{background:var(--status-done-soft)}
.focus-mini{align-items:center}
.focus-mini .lc-btn{margin-inline-start:auto}

/* F4 wrap-up */
.wu-scale{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.wu-opt{display:grid;gap:2px;justify-items:center;padding:8px 2px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);color:inherit;cursor:pointer;font:inherit}
.wu-opt.is-on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.wu-opt:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}

/* F2 exams, progress tabs */
.lc-tabs a{text-decoration:none;padding:6px 14px;border-radius:var(--radius-full);color:var(--ink-muted);font-weight:600;font-size:14px}
.lc-tabs a[aria-selected="true"]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}
.lc-tabs a:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.xs-row{display:grid;grid-template-columns:minmax(70px,1fr) auto 52px 44px;gap:10px;align-items:center}
.xs{display:inline-flex;gap:3px;align-items:flex-end;height:26px}
.xs i{display:block;width:6px;border-radius:2px;background:var(--accent)}
.neg{color:var(--danger)}.pos{color:var(--status-done)}
.ex{display:grid;gap:8px}.ex-subs{display:flex;flex-wrap:wrap;gap:6px}
.ex-form{display:grid;gap:8px}.ex-row{display:grid;grid-template-columns:1fr 90px auto;gap:8px;align-items:center}

/* F3 mistakes */
.ms{display:grid;gap:8px}
.ms-photo{display:block;border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--line);max-width:240px}
.ms-photo img{display:block;width:100%;height:auto}

/* F7 voice */
.vc{display:inline-flex;align-items:center;gap:6px;position:relative}
.vc-bar{position:absolute;inset-inline-end:0;bottom:calc(100% + 8px);display:flex;gap:8px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:8px 10px;box-shadow:var(--shadow-md, 0 4px 12px rgba(0,0,0,.12));white-space:nowrap;z-index:2}
.vc-bar[hidden]{display:none}
.vc-dot{width:10px;height:10px;border-radius:50%;background:var(--danger)}
.vc-msg{display:flex;align-items:center;gap:8px;min-width:200px}
.vc-wave{display:flex;align-items:center;gap:2px;height:30px;flex:1}
.vc-wave i{display:block;width:3px;border-radius:2px;background:var(--line-control)}
.vc-wave i.on{background:var(--accent)}
.lc-bubble--me .vc-wave i.on{background:currentColor}

.steps{margin:0;padding-inline-start:20px;display:grid;gap:8px;line-height:1.9}

.auth a:not(.lc-btn),.hint a,.t-caption a:not(.lc-btn){text-decoration:underline;text-underline-offset:3px}
.lc-item__body:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:var(--radius-sm)}

/* ---- look: density, table view, motion ---- */
html[data-density="compact"] .stack{gap:8px}
html[data-density="compact"] .lc-item{padding-block:8px}
html[data-density="compact"] .lc-day__head{padding-block:8px}
.lk-sw{display:flex;flex-wrap:wrap;gap:10px}
.lk-dot{width:40px;height:40px;border-radius:50%;border:2px solid transparent;background:var(--c);color:var(--on-accent);display:grid;place-items:center;cursor:pointer;padding:0;box-shadow:inset 0 0 0 2px var(--surface)}
.lk-dot.is-on{border-color:var(--ink)}
.lk-dot:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}
.lk-seg{width:100%}.lk-seg button{flex:1}
.lc-tabs button{display:inline-flex;align-items:center;gap:4px}
.tb-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);-webkit-overflow-scrolling:touch}
.tb{display:grid;grid-template-columns:56px repeat(7,minmax(112px,1fr));min-width:max-content;width:100%}
.tb-h,.tb-t,.tb-c{border-block-end:1px solid var(--line);border-inline-start:1px solid var(--line)}
.tb-h{position:sticky;top:0;background:var(--surface);display:grid;gap:2px;justify-items:center;padding:8px 4px;text-align:center;z-index:2}
.tb-h.is-today,.tb-c.is-today{background:var(--accent-soft)}
.tb-h.is-today b{color:var(--accent)}
.tb-corner,.tb-t{position:sticky;inset-inline-start:0;background:var(--surface);z-index:3}
.tb-t{display:grid;place-items:start center;padding-top:10px;font-size:12px;color:var(--ink-muted);font-variant-numeric:tabular-nums;z-index:1}
.tb-c{padding:6px;display:grid;gap:6px;align-content:start;min-height:64px}
.tb-c.is-weekend,.tb-h.is-weekend{background-image:repeating-linear-gradient(135deg,transparent 0 6px,var(--surface-sunken) 6px 7px)}
.tb-prog{width:100%;max-width:70px;height:4px;border-radius:2px;background:var(--surface-sunken);overflow:hidden;display:block}
.tb-prog i{display:block;height:100%;background:var(--status-done);border-radius:2px}
.tb-chip{display:grid;gap:2px;text-align:start;border:1px solid var(--subj-soft, var(--line));border-inline-start:4px solid var(--subj);background:var(--subj-soft);color:var(--ink);border-radius:var(--radius-sm);padding:6px 8px;font:inherit;cursor:pointer;min-height:44px}
.tb-chip__top{display:flex;justify-content:space-between;align-items:center;gap:4px;font-size:13px}
.tb-chip__top b{color:var(--subj)}
.tb-chip__title{font-size:12px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tb-chip.is-done .tb-chip__title{text-decoration:line-through}
.tb-chip.is-skipped{border-style:dashed}
.tb-chip:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.tb-chip:active{transform:scale(.97)}
.celebrate{position:relative;overflow:hidden}

/* motion: on unless the person (or the phone) asks for less */
@property --v{syntax:'<number>';inherits:false;initial-value:0}
@keyframes fx-up{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes fx-ring{from{--v:var(--v0,0)}}
@keyframes fx-pop{0%{transform:scale(.7)}55%{transform:scale(1.28)}100%{transform:scale(1)}}
@keyframes fx-draw{from{stroke-dashoffset:24}to{stroke-dashoffset:0}}
@keyframes fx-grow{from{transform:scaleX(0)}}
@keyframes fx-bit{0%{opacity:1;transform:translate(-50%,-50%) rotate(0) scale(.6)}100%{opacity:0;transform:translate(calc(-50% + cos(var(--a)) * var(--d)),calc(-50% + sin(var(--a)) * var(--d))) rotate(var(--r)) scale(1)}}
@keyframes fx-glow{0%{box-shadow:0 0 0 0 var(--accent-soft)}100%{box-shadow:0 0 0 14px transparent}}
html:not([data-motion="off"]) .fx-enter .fx-up{animation:fx-up .42s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i,0) * 45ms)}
html:not([data-motion="off"]) .fx-ring{animation:fx-ring .7s cubic-bezier(.2,.8,.2,1)}
html:not([data-motion="off"]) .today-card .lc-bar span{transform-origin:right center;animation:fx-grow .7s cubic-bezier(.2,.8,.2,1)}
html:not([data-motion="off"]) .lc-check.fx-pop{animation:fx-pop .38s cubic-bezier(.3,1.6,.5,1)}
html:not([data-motion="off"]) .lc-check.fx-pop svg{stroke-dasharray:24;animation:fx-draw .3s ease .05s both}
html:not([data-motion="off"]) .lc-check.fx-pop{box-shadow:0 0 0 0 var(--accent-soft);animation:fx-pop .38s cubic-bezier(.3,1.6,.5,1),fx-glow .6s ease-out}
html:not([data-motion="off"]) .lc-item{transition:transform .12s ease,background-color .2s ease}
html:not([data-motion="off"]) .lc-item:active{transform:scale(.985)}
html:not([data-motion="off"]) .lc-day__head .chev{transition:transform .2s ease}
.fx-bit{position:absolute;inset-inline-start:50%;top:50%;width:7px;height:11px;border-radius:2px;background:var(--c);opacity:0;pointer-events:none}
html:not([data-motion="off"]) .fx-bit{animation:fx-bit .95s cubic-bezier(.1,.7,.3,1) forwards}
html[data-motion="off"] .fx-bit{display:none}
@media (prefers-reduced-motion:reduce){
  html:not([data-motion="on"]) .fx-up,html:not([data-motion="on"]) .fx-ring,html:not([data-motion="on"]) .lc-check.fx-pop,html:not([data-motion="on"]) .lc-check.fx-pop svg,html:not([data-motion="on"]) .today-card .lc-bar span{animation:none!important}
  html:not([data-motion="on"]) .fx-bit{display:none}
}
.lk-seg{grid-template-columns:repeat(auto-fit,minmax(0,1fr))}
.lk-seg button{min-height:44px;font:inherit;font-weight:600;color:var(--ink-muted);cursor:pointer}
.lk-seg button[aria-checked="true"]{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}
.lk-seg button:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}

.lk-presets{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.lk-preset{display:grid;gap:4px;justify-items:start;text-align:start;padding:10px;border:1.5px solid var(--line);border-radius:var(--radius-md);background:var(--surface);color:var(--ink);font:inherit;cursor:pointer}
.lk-preset.is-on{border-color:var(--accent);background:var(--accent-soft)}
.lk-preset:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.lk-mini{display:grid;gap:3px;width:100%;padding:6px;border-radius:var(--radius-sm);background:#F6F3EC;border:1px solid var(--line)}
.lk-mini.is-dark{background:#1B1E26}
.lk-mini i{display:block;height:7px;border-radius:3px;background:var(--cs)}
.lk-mini i:first-child{background:var(--c);width:60%}
.lk-mini i{opacity:.7}.lk-mini i:first-child{opacity:1}

/* home hub */
.hm{gap:16px}
.hm-today{text-decoration:none;color:inherit}
.hm-group{display:grid;gap:8px}
.hm-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.hm-card{position:relative;display:grid;gap:4px;align-content:start;text-align:start;min-height:104px;padding:14px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);color:var(--ink);font:inherit;text-decoration:none;cursor:pointer;box-shadow:var(--shadow-sm)}
.hm-card:hover{border-color:var(--accent)}
.hm-card:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
.hm-card:active{transform:scale(.98)}
.hm-ic{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);margin-bottom:4px}
.hm-t{font-size:15px}
.hm-s{color:var(--ink-muted)}
.hm-wide{grid-column:1/-1}
.hm-hot{border-color:var(--accent);background:var(--accent-soft)}
.hm-hot .hm-ic{background:var(--accent);color:var(--on-accent)}
.hm-badge{position:absolute;inset-block-start:12px;inset-inline-end:12px;min-width:22px;height:22px;border-radius:11px;padding-inline:6px;display:grid;place-items:center;background:var(--danger);color:#fff;font-size:12px;font-weight:700}
@media(min-width:700px){.hm-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* assistant */
.as{padding-bottom:8px}
.as-list{display:grid;gap:10px;align-content:start;min-height:40vh}
.as-hello{display:grid;gap:4px;padding:12px 0}
.as-msg{max-width:92%;display:grid;gap:6px;padding:10px 14px;border-radius:var(--radius-lg)}
.as-user{justify-self:end;background:var(--accent);color:var(--on-accent);border-end-end-radius:4px}
.as-assistant{justify-self:start;background:var(--surface);border:1px solid var(--line);border-end-start-radius:4px}
.as-p{margin:0;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere}
.as-sug{display:flex;gap:8px;align-items:center;justify-content:space-between;padding:8px 10px;border-radius:var(--radius-md);background:var(--subj-soft);border-inline-start:4px solid var(--subj)}
.as-sug__body{display:grid;gap:2px;min-width:0}.as-sug__body b{color:var(--subj)}
.as-add{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end}
.as-typing{display:flex;gap:5px;align-items:center;padding:14px 16px}
.as-typing i{width:7px;height:7px;border-radius:50%;background:var(--ink-muted);display:block}
html:not([data-motion="off"]) .as-typing i{animation:as-dot 1s infinite ease-in-out}
html:not([data-motion="off"]) .as-typing i:nth-child(2){animation-delay:.15s}
html:not([data-motion="off"]) .as-typing i:nth-child(3){animation-delay:.3s}
@keyframes as-dot{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-4px)}}
.as-composer{position:sticky;bottom:76px;display:grid;gap:8px;padding:10px 0 4px;background:linear-gradient(to top,var(--paper) 78%,transparent)}
.as-chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}
.as-chip{border:0;cursor:pointer;white-space:nowrap;min-height:34px}
.as-input{resize:none;line-height:1.7;min-height:44px}
.as-foot{display:flex;align-items:center;justify-content:space-between;gap:8px}
@media(prefers-reduced-motion:reduce){html:not([data-motion="on"]) .as-typing i{animation:none}}

/* «به‌زودی» marker on AI features that are not switched on yet */
.soon-tag{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;background:color-mix(in srgb,var(--spark) 18%,transparent);color:color-mix(in srgb,var(--spark) 70%,var(--ink));font-size:12px;font-weight:700;white-space:nowrap;line-height:1.6}
.soon-tag .i{width:14px;height:14px}
.lc-btn .soon-tag{margin-inline-start:4px;padding:0 6px;font-size:11px}
.soon-list{margin:0;padding-inline-start:20px;display:grid;gap:6px;line-height:1.8}

/* night mode switch: a sun whose rays fold away while a shadow slides over it to leave a crescent */
.tm-btn{color:var(--ink)}
.tm-svg{width:24px;height:24px;overflow:visible;transition:transform .5s cubic-bezier(.3,.7,.2,1)}
.tm-core{transition:r .45s cubic-bezier(.3,.7,.2,1)}
.tm-cut{transition:cx .45s cubic-bezier(.3,.7,.2,1),cy .45s cubic-bezier(.3,.7,.2,1)}
.tm-rays{transform-origin:12px 12px;transition:transform .45s cubic-bezier(.3,.7,.2,1),opacity .3s}
.tm-stars{opacity:0;transform:scale(.3);transform-origin:20px 6px;transition:opacity .3s .15s,transform .4s .15s cubic-bezier(.3,1.6,.5,1)}
.tm-btn.is-dark .tm-svg{transform:rotate(-40deg)}
.tm-btn.is-dark .tm-core{r:8.5px}
.tm-btn.is-dark .tm-cut{cx:16px;cy:7px}
.tm-btn.is-dark .tm-rays{transform:scale(.4) rotate(90deg);opacity:0}
.tm-btn.is-dark .tm-stars{opacity:1;transform:scale(1)}
.tm-btn.is-dark{color:#F2C14E}
html[data-motion="off"] .tm-svg,html[data-motion="off"] .tm-svg *{transition:none!important}
@media (prefers-reduced-motion:reduce){html:not([data-motion="on"]) .tm-svg,html:not([data-motion="on"]) .tm-svg *{transition:none!important}}
::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}
html.theme-fade,html.theme-fade *{transition:background-color .4s ease,color .4s ease,border-color .4s ease!important}
.night-ask{gap:12px;background:linear-gradient(135deg,#1B2140,#2A2F55);color:#EEF0FF;border-color:transparent}
.night-ask .muted{color:#C3C8EE}
.night-ask .lc-btn--ghost{color:#EEF0FF}
.night-ask .lc-btn--secondary{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.25)}
.night-ask__moon{flex:none;width:40px;height:40px;border-radius:50%;box-shadow:inset -10px -6px 0 0 #F2C14E;transform:rotate(-20deg)}

/* feel: quicker taps, calmer motion, tidier numbers */
html{-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
.num{font-variant-numeric:tabular-nums}
.lc-btn{transition:transform .12s ease,background-color .15s ease,box-shadow .15s ease}
html:not([data-motion="off"]) .lc-btn:active{transform:scale(.97)}
html:not([data-motion="off"]) .card{transition:box-shadow .2s ease,border-color .2s ease}
.lc-input{transition:border-color .15s ease,box-shadow .15s ease}
.lc-bubble{animation:bubble-in .18s ease-out both}
@keyframes bubble-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
html[data-motion="off"] .lc-bubble{animation:none}
@media (prefers-reduced-motion:reduce){html:not([data-motion="on"]) .lc-bubble{animation:none}}

/* inside the Android app: feel like an app, not a page */
html.is-app{overscroll-behavior:none}
html.is-app body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
html.is-app input,html.is-app textarea,html.is-app [contenteditable]{-webkit-user-select:text;user-select:text}
