* { box-sizing: border-box; }
:root {
  --bg: #eef2f7; --surface: #ffffff; --surface-2: #f4f7fb; --ink: #15233b; --muted: #66788f;
  --border: #e4eaf1; --navy: #103a73; --primary: #0ea5a4; --primary-d: #0b8281; --accent: #f59e0b; --danger: #e11d48;
  --radius: 16px; --radius-sm: 10px;
  --shadow-sm: 0 2px 8px rgba(16,58,115,.06); --shadow: 0 10px 30px rgba(16,58,115,.10); --shadow-lg: 0 24px 70px rgba(16,58,115,.18);
  --focus: 0 0 0 4px rgba(14,165,164,.22); --font: 'Vazirmatn', Tahoma, system-ui, sans-serif;
}
[data-accent="indigo"] { --primary:#6366f1; --primary-d:#4f46e5; --navy:#4338ca; --focus:0 0 0 4px rgba(99,102,241,.22); }
[data-accent="rose"]   { --primary:#f43f5e; --primary-d:#e11d48; --navy:#9f1239; --focus:0 0 0 4px rgba(244,63,94,.22); }
[data-accent="emerald"]{ --primary:#10b981; --primary-d:#059669; --navy:#065f46; --focus:0 0 0 4px rgba(16,185,129,.22); }
[data-accent="amber"]  { --primary:#f59e0b; --primary-d:#d97706; --navy:#92400e; --focus:0 0 0 4px rgba(245,158,11,.22); }
[data-theme="dark"] {
  --bg:#0a1019; --surface:#131c2c; --surface-2:#1a2436; --ink:#e7eef7; --muted:#93a4be; --border:#26334b;
  --navy:#cfe0f5; --accent:#fbbf24; --danger:#fb7185;
  --shadow-sm:0 2px 8px rgba(0,0,0,.3); --shadow:0 10px 30px rgba(0,0,0,.45); --shadow-lg:0 24px 70px rgba(0,0,0,.6);
}
html { min-width:320px; }
body { margin:0; min-height:100vh; background:var(--bg); color:var(--ink); font-family:var(--font); line-height:1.7; -webkit-font-smoothing:antialiased; transition:background .3s, color .3s; }
button, input, select, textarea { font:inherit; }
button { cursor:pointer; } [hidden] { display:none !important; }
a { color:var(--primary-d); text-decoration:none; }
.skip-link { position:fixed; inset:8px auto auto 8px; z-index:300; padding:8px 14px; background:var(--navy); color:#fff; border-radius:8px; transform:translateY(-160%); }
.skip-link:focus { transform:translateY(0); }
:focus-visible { outline:2px solid var(--primary); outline-offset:2px; }
.ic { flex:0 0 auto; vertical-align:middle; }
.btn .ic, .navbtn .ic, .link .ic, .seg-btn .ic, .icon-btn .ic { margin-inline-end:6px; }
.navbtn .ic, .seg-btn .ic { margin:0; }
.stat-card .ic, .tl-item .ic, .rem-item .ic, .ev-top .ic { color:var(--primary); }
.icon-btn .ic { margin:0; }
.ev-ico { display:inline-flex; color:var(--navy); }
.field-wrap { display:flex; align-items:center; gap:8px; border:1px solid var(--border); border-radius:10px; padding:0 10px; background:var(--surface); }
.field-wrap:focus-within { border-color:var(--primary); box-shadow:var(--focus); }
.field-wrap .in-icon { color:var(--muted); }
.field-wrap input { border:0 !important; box-shadow:none !important; padding:12px 0; background:transparent; flex:1; }
@keyframes fadeUp { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:none; } }

/* Topbar */
.topbar { position:sticky; top:0; z-index:60; background:color-mix(in srgb, var(--surface) 85%, transparent); backdrop-filter:blur(14px); border-bottom:1px solid var(--border); }
.topbar-inner { max-width:1500px; margin:0 auto; padding:10px 20px; display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.brand { display:inline-flex; align-items:center; gap:12px; color:var(--navy); }
.brand-mark { display:grid; place-items:center; width:40px; height:40px; border-radius:12px; background:linear-gradient(135deg, var(--primary), var(--navy)); color:#fff; font-weight:800; box-shadow:var(--shadow-sm); }
.brand div { line-height:1.2; } .brand strong { font-size:1.15rem; } .brand small { color:var(--muted); font-size:.72rem; }
.mainnav { display:flex; gap:4px; background:var(--surface-2); padding:4px; border-radius:12px; }
.navbtn { border:0; background:transparent; color:var(--muted); font-weight:800; padding:8px 16px; border-radius:9px; transition:.15s; }
.navbtn:hover { color:var(--navy); }
.navbtn.active { background:var(--primary); color:#fff; box-shadow:var(--shadow-sm); }
.topbar-actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-inline-start:auto; }
.hello { font-weight:800; color:var(--navy); }

/* Buttons */
.btn { border:1px solid transparent; border-radius:11px; padding:9px 15px; font-weight:700; transition:transform .15s, background .15s, border-color .15s; }
.btn:hover { transform:translateY(-1px); }
.btn-primary { background:var(--primary); color:#fff; } .btn-primary:hover { background:var(--primary-d); }
.btn-soft { background:var(--surface); color:var(--navy); border-color:var(--border); } .btn-soft:hover { background:var(--surface-2); border-color:var(--primary); }
.btn-ghost { background:transparent; color:var(--navy); border-color:transparent; } .btn-ghost:hover { background:var(--surface-2); }
.btn-danger { background:transparent; color:var(--danger); border-color:color-mix(in srgb, var(--danger) 40%, transparent); } .btn-danger:hover { background:color-mix(in srgb, var(--danger) 12%, transparent); }
.btn-block { width:100%; margin-top:12px; }
.btn-sm { padding:5px 12px; font-size:.8rem; border-radius:9px; min-height:0; }
.topbar-actions .btn-ghost { padding:8px 10px; }
.btn.rem-on { color:var(--primary-d); background:color-mix(in srgb, var(--primary) 14%, transparent); box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--primary) 35%, transparent); }
.btn.rem-on svg { fill:currentColor; animation:remPop .25s ease; }
@keyframes remPop { 0% { transform:scale(.75); } 60% { transform:scale(1.12); } 100% { transform:scale(1); } }
.danger-hover { color:var(--muted); } .danger-hover:hover { color:var(--danger); background:color-mix(in srgb, var(--danger) 10%, transparent); }
.btn .ic + *, .btn-ghost .ic { vertical-align:middle; }
.icon-btn { border:0; background:transparent; color:var(--muted); font-size:1.1rem; padding:4px 9px; border-radius:8px; } .icon-btn:hover { background:var(--surface-2); }
.link { border:0; background:transparent; color:var(--primary-d); font-weight:700; font-size:.82rem; } .link:hover { text-decoration:underline; }
.muted { color:var(--muted); }

/* Auth */
.auth-shell { max-width:460px; margin:7vh auto; animation:fadeUp .4s ease; }
.auth-card { background:var(--surface); border:1px solid var(--border); border-radius:22px; box-shadow:var(--shadow-lg); overflow:hidden; }
.auth-intro { padding:28px 28px 6px; text-align:center; }
.auth-logo { display:flex; justify-content:center; margin-bottom:10px; color:var(--primary); }
.auth-intro h1 { margin:0 0 6px; color:var(--navy); font-size:1.55rem; }
.auth-intro p { margin:0; color:var(--muted); }
.tabs { display:grid; grid-template-columns:1fr 1fr; margin-top:18px; border-bottom:1px solid var(--border); }
.tab { padding:13px; border:0; background:transparent; color:var(--muted); font-weight:800; border-bottom:3px solid transparent; }
.tab[aria-selected="true"] { color:var(--primary-d); border-bottom-color:var(--primary); }
.form { padding:20px 28px 28px; display:grid; gap:13px; }
.field, .form label { display:grid; gap:6px; color:var(--navy); font-weight:700; font-size:.9rem; }
input, select, textarea { width:100%; min-height:44px; border:1px solid var(--border); border-radius:10px; padding:10px 12px; background:var(--surface); color:var(--ink); transition:border-color .15s, box-shadow .15s; }
input:focus, select:focus, textarea:focus { border-color:var(--primary); box-shadow:var(--focus); outline:none; }
.message { min-height:20px; margin:0; color:var(--danger); font-weight:700; font-size:.85rem; } .message.success { color:var(--primary-d); }

/* Layout */
.layout { max-width:1500px; margin:0 auto; padding:20px; display:grid; grid-template-columns:300px 1fr; gap:20px; align-items:start; }
.card { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow-sm); padding:16px; animation:fadeUp .35s ease; }
.card-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; } .card-head h3 { margin:0; font-size:1rem; color:var(--navy); }
.sidebar { display:grid; gap:16px; position:sticky; top:84px; }
.side-actions { display:flex; gap:10px; } .side-actions.stack { flex-direction:column; } .side-actions .btn { width:100%; }
.chips { display:flex; gap:8px; flex-wrap:wrap; }
.chip { display:inline-flex; align-items:center; gap:7px; padding:5px 11px; border:1px solid var(--border); border-radius:999px; background:var(--surface); font-size:.8rem; }
.chip .dot { width:10px; height:10px; border-radius:50%; }
.side-stats { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:12px; } .side-stats .stat { padding:10px; background:var(--surface-2); border-radius:10px; }
.side-stats .stat span { display:block; color:var(--muted); font-size:.72rem; } .side-stats .stat strong { color:var(--primary-d); font-size:1.05rem; }

/* Mini calendar */
.mini-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; font-weight:800; color:var(--navy); }
.mini-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:3px; }
.mini-grid .mh { text-align:center; font-size:.62rem; color:var(--muted); font-weight:700; padding:2px 0; }
.mini-cell { text-align:center; font-size:.76rem; padding:6px 0; border-radius:8px; cursor:pointer; color:var(--ink); } .mini-cell:hover { background:var(--surface-2); }
.mini-cell.muted { color:var(--muted); opacity:.5; } .mini-cell.today { background:var(--primary); color:#fff; font-weight:800; }
.mini-cell.selected { outline:2px solid var(--primary); outline-offset:-2px; }

/* Content / screens */
.content { min-width:0; }
.screen { animation:fadeUp .3s ease; }
.home-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:16px; flex-wrap:wrap; } .home-head h2 { margin:0; color:var(--navy); font-size:1.5rem; }

/* Stat cards */
.stat-row { display:grid; grid-template-columns:repeat(auto-fit, minmax(165px, 1fr)); gap:14px; margin-bottom:18px; }
.stat-card { background:linear-gradient(135deg, var(--surface), var(--surface-2)); border:1px solid var(--border); border-radius:var(--radius); padding:16px; box-shadow:var(--shadow-sm); position:relative; overflow:hidden; }
.stat-card::after { content:""; position:absolute; inset-inline-end:-20px; top:-20px; width:70px; height:70px; border-radius:50%; background:color-mix(in srgb, var(--primary) 22%, transparent); }
  .stat-card span { display:block; color:var(--muted); font-size:.8rem; } .stat-card strong { font-size:1.5rem; color:var(--navy); }
  .heatmap { display:flex; gap:4px; overflow-x:auto; padding:6px 2px; }
  .heat-col { display:grid; grid-template-rows:repeat(7,1fr); gap:4px; }
  .heat-cell { width:13px; height:13px; border-radius:4px; background:var(--surface-2); }
  .heat-0 { background:var(--surface-2); }
  .heat-1 { background:color-mix(in srgb, var(--primary) 30%, var(--surface-2)); }
  .heat-2 { background:color-mix(in srgb, var(--primary) 55%, var(--surface-2)); }
  .heat-3 { background:color-mix(in srgb, var(--primary) 80%, var(--surface-2)); }
  .heat-4 { background:var(--primary); }
  .heat-cell.today { outline:2px solid var(--navy); outline-offset:1px; }
  .goal-card { display:flex; flex-direction:column; }
  .goal-ring { display:flex; flex-direction:column; align-items:center; gap:8px; padding:6px; }
  .goal-ring-label { color:var(--muted); font-size:.82rem; font-weight:700; text-align:center; }
  .sound-field { display:grid; gap:4px; color:var(--muted); font-size:.76rem; grid-column:1/-1; }

.home-grid { display:grid; grid-template-columns:1.4fr 1fr; gap:18px; align-items:start; }
.timeline { display:grid; gap:10px; }
.tl-item { display:flex; gap:12px; align-items:flex-start; padding:12px; border:1px solid var(--border); border-radius:12px; background:var(--surface); border-inline-start:4px solid var(--primary); transition:.15s; }
.tl-item:hover { box-shadow:var(--shadow-sm); transform:translateY(-1px); }
.tl-item.is-done { opacity:.6; }
.tl-time { font-weight:800; color:var(--navy); min-width:88px; direction:ltr; text-align:start; }
.tl-body { flex:1; } .tl-title { font-weight:700; } .tl-sub { color:var(--muted); font-size:.82rem; }
.empty { color:var(--muted); text-align:center; padding:24px; }

/* Calendar toolbar */
.cal-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:0 0 14px; flex-wrap:wrap; }
.cal-toolbar h2 { margin:0; color:var(--navy); font-size:1.4rem; }
.cal-nav { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.seg { display:flex; background:var(--surface-2); border-radius:11px; padding:4px; } .seg-btn { border:0; background:transparent; color:var(--muted); font-weight:800; padding:7px 14px; border-radius:8px; } .seg-btn.active { background:var(--primary); color:#fff; }
.weekdays { display:grid; grid-template-columns:repeat(7,1fr); background:var(--surface-2); border-radius:var(--radius) var(--radius) 0 0; }
.weekdays span { text-align:center; padding:10px 0; font-size:.82rem; font-weight:800; color:var(--muted); }
.month-grid { display:grid; grid-template-columns:repeat(7,1fr); grid-auto-rows:minmax(116px,1fr); border:1px solid var(--border); border-top:0; border-radius:0 0 var(--radius) var(--radius); overflow:hidden; background:var(--surface); }
.day-cell { border-inline-end:1px solid var(--border); border-bottom:1px solid var(--border); padding:8px; display:flex; flex-direction:column; gap:4px; min-height:116px; cursor:pointer; transition:background .12s; }
.day-cell:hover { background:var(--surface-2); } .day-cell.muted { background:color-mix(in srgb, var(--surface-2) 55%, transparent); opacity:.65; }
.day-cell.today { box-shadow:inset 0 0 0 2px var(--primary); } .day-cell.selected { background:color-mix(in srgb, var(--primary) 10%, transparent); }
.day-num { font-size:.85rem; font-weight:700; color:var(--navy); align-self:flex-start; } .day-cell.today .day-num { background:var(--primary); color:#fff; min-width:26px; text-align:center; border-radius:8px; padding:1px 6px; }
.chip-event { display:flex; align-items:center; gap:5px; padding:3px 7px; border-radius:7px; background:var(--surface-2); font-size:.72rem; line-height:1.3; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; border-inline-start:3px solid var(--primary); }
.chip-event .ev-dot { width:7px; height:7px; border-radius:50%; flex:0 0 auto; } .chip-event.done { opacity:.55; text-decoration:line-through; }
.more-link { font-size:.68rem; color:var(--primary-d); font-weight:700; padding:0 4px; }

/* Week view */
.week-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:10px; }
.week-col { background:var(--surface); border:1px solid var(--border); border-radius:var(--radius); padding:8px; min-height:300px; display:flex; flex-direction:column; gap:6px; }
.week-col.today { box-shadow:inset 0 0 0 2px var(--primary); } .week-col-head { text-align:center; font-weight:800; color:var(--navy); padding-bottom:6px; border-bottom:1px solid var(--border); margin-bottom:4px; }
  .week-col .chip-event { cursor:pointer; }
  .chip-event[draggable="true"] { cursor:grab; }
  .chip-event.dragging { opacity:.4; }
  .drop-hint { outline:2px dashed var(--accent); outline-offset:-3px; background:color-mix(in srgb, var(--accent) 10%, transparent); border-radius:12px; }

/* Day view */
.day-view { display:grid; gap:10px; }
.dv-item { display:flex; gap:12px; align-items:center; padding:14px; border:1px solid var(--border); border-radius:12px; background:var(--surface); border-inline-start:4px solid var(--primary); }
.dv-item:hover { box-shadow:var(--shadow-sm); } .dv-time { font-weight:800; color:var(--navy); min-width:90px; direction:ltr; }

/* Reminders */
.rem-list { display:grid; gap:10px; }
.rem-item { display:flex; gap:12px; align-items:center; padding:12px 14px; border:1px solid var(--border); border-radius:12px; background:var(--surface); }
.rem-item .dot { width:12px; height:12px; border-radius:50%; flex:0 0 auto; }
.rem-when { font-weight:800; color:var(--navy); min-width:120px; } .rem-title { flex:1; font-weight:700; } .rem-lead { color:var(--muted); font-size:.8rem; }

/* Day drawer */
.day-drawer { position:fixed; inset:0 0 0 auto; width:min(460px,100%); z-index:110; background:var(--surface); border-inline-start:1px solid var(--border); box-shadow:var(--shadow-lg); padding:18px; display:flex; flex-direction:column; gap:12px; overflow-y:auto; transform:translateX(100%); transition:transform .25s ease; }
.day-drawer.open { transform:translateX(0); }
.drawer-head { display:flex; align-items:center; justify-content:space-between; } .drawer-head strong { color:var(--navy); font-size:1.15rem; }
.drawer-tools { display:grid; grid-template-columns:1fr 1fr; gap:8px; } .drawer-tools #searchInput { grid-column:1 / -1; }
.drawer-entries { display:grid; gap:10px; flex:1; }
.ev-card { border:1px solid var(--border); border-radius:12px; padding:12px; background:var(--surface); border-inline-start:4px solid var(--primary); display:grid; gap:8px; }
.ev-card.is-done { background:color-mix(in srgb, var(--primary) 8%, transparent); }
.ev-card.has-error { border-color:var(--accent); }
.ev-top { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.ev-type { font-size:.72rem; font-weight:800; padding:2px 8px; border-radius:999px; background:var(--surface-2); color:var(--navy); }
.ev-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; } .ev-grid .full { grid-column:1 / -1; }
.cell-input { width:100%; min-height:38px; border:1px solid transparent; border-radius:8px; padding:7px 8px; background:transparent; color:var(--ink); }
.cell-input:hover { border-color:var(--border); } .cell-input:focus { border-color:var(--primary); background:var(--surface-2); box-shadow:var(--focus); outline:none; }
.num { text-align:center; direction:ltr; } .check { width:18px; height:18px; accent-color:var(--primary); }
.time-warning { display:block; color:var(--accent); font-size:.68rem; }
.files-cell a.file-link { display:inline-block; margin:2px 4px 2px 0; padding:3px 9px; border:1px solid color-mix(in srgb, var(--primary) 40%, transparent); border-radius:7px; color:var(--primary-d); font-size:.74rem; background:color-mix(in srgb, var(--primary) 10%, transparent); }
.file-remove { border:0; background:transparent; color:var(--danger); font-size:.72rem; }
.drawer-foot { display:flex; gap:8px; flex-wrap:wrap; border-top:1px solid var(--border); padding-top:12px; }

/* Timer */
.timer-panel { position:fixed; inset:auto auto 20px 20px; z-index:120; width:260px; padding:16px; background:var(--surface); border:1px solid var(--border); border-radius:18px; box-shadow:var(--shadow-lg); }
.timer-head { display:flex; align-items:center; justify-content:space-between; } .timer-head strong { color:var(--navy); }
.timer-display { text-align:center; font-size:2.6rem; font-weight:900; color:var(--primary-d); direction:ltr; font-variant-numeric:tabular-nums; }
.timer-bar { height:8px; border-radius:6px; background:var(--surface-2); overflow:hidden; margin:10px 0; } .timer-bar-fill { height:100%; width:0; background:linear-gradient(90deg, var(--primary), var(--navy)); transition:width 1s linear; }
.timer-controls { display:flex; gap:8px; } .timer-controls .btn { flex:1; }
.timer-settings { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:12px; } .timer-settings label { display:grid; gap:4px; color:var(--muted); font-size:.76rem; }

/* Dialogs */
dialog { width:min(620px, calc(100% - 30px)); border:1px solid var(--border); border-radius:18px; padding:0; color:var(--ink); background:var(--surface); box-shadow:var(--shadow-lg); }
dialog::backdrop { background:rgba(8,18,35,.5); }
.dialog-head { padding:18px 22px 6px; } .dialog-head h2 { margin:0; color:var(--navy); font-size:1.2rem; }
.dialog-head h3 { color:var(--navy); margin:16px 0 6px; font-size:1rem; }
.dialog-body { padding:10px 22px 18px; display:grid; gap:14px; max-height:70vh; overflow-y:auto; }
.dialog-body .field { display:grid; gap:6px; color:var(--navy); font-weight:700; font-size:.9rem; }
.dialog-actions { display:flex; gap:10px; padding:14px 22px; border-top:1px solid var(--border); background:var(--surface-2); flex-wrap:wrap; }
.add-row { display:flex; gap:10px; }
.subject-row { display:flex; align-items:center; gap:10px; } .subject-row .dot { width:16px; height:16px; border-radius:50%; flex:0 0 auto; }
.stat-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; } .stat { padding:14px; background:var(--surface-2); border-radius:12px; }
.stat span { display:block; color:var(--muted); font-size:.78rem; } .stat strong { color:var(--primary-d); font-size:1.2rem; }

/* Toast */
.toast { position:fixed; inset:auto 20px 20px auto; z-index:250; max-width:380px; padding:12px 16px; border:1px solid color-mix(in srgb, var(--primary) 40%, transparent); border-radius:10px; background:var(--surface); color:var(--navy); box-shadow:var(--shadow-lg); transform:translateY(140%); opacity:0; transition:transform .25s, opacity .25s; }
.toast.show { transform:translateY(0); opacity:1; }
.switch { display:flex; align-items:center; gap:8px; color:var(--navy); font-size:.84rem; } .switch input { width:18px; height:18px; accent-color:var(--primary); }

@media (max-width:1100px) { .layout { grid-template-columns:1fr; } .sidebar { position:static; grid-template-columns:1fr 1fr; } .home-grid { grid-template-columns:1fr; } .stat-row { grid-template-columns:1fr 1fr; } }
@media (max-width:720px) { .sidebar { grid-template-columns:1fr; } .weekdays span { font-size:.68rem; } .month-grid { grid-auto-rows:minmax(84px,1fr); } .day-cell { min-height:84px; padding:5px; } .chip-event { font-size:.64rem; } .topbar-inner { flex-wrap:wrap; } .topbar-actions { width:100%; justify-content:space-between; } .day-drawer { width:100%; } .stat-row { grid-template-columns:1fr 1fr; } .week-grid { grid-auto-flow:column; grid-template-columns:none; grid-auto-columns:78%; overflow-x:auto; } }
@media (prefers-reduced-motion:reduce) { * { transition-duration:.01ms !important; } }
  .home-row { display:grid; grid-template-columns:repeat(auto-fit, minmax(240px,1fr)); gap:14px; margin-top:14px; }
  .next-session { padding:4px 2px; }
  .ns-row { display:flex; align-items:center; gap:12px; }
  .ns-title { font-weight:700; }
  .ns-sub { color:var(--muted); font-size:.82rem; }
  .subject-progress { display:flex; flex-direction:column; gap:10px; }
  .sp-row { display:grid; grid-template-columns:90px 1fr 42px; align-items:center; gap:8px; }
  .sp-name { font-size:.82rem; font-weight:700; color:var(--navy); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .sp-bar { height:10px; background:var(--surface-2); border-radius:999px; overflow:hidden; }
  .sp-fill { height:100%; border-radius:999px; transition:width .4s; }
  .sp-pct { font-size:.78rem; color:var(--muted); text-align:end; }
  .achievements { display:flex; flex-direction:column; gap:10px; }
  .ach { display:flex; align-items:center; gap:10px; color:var(--navy); }
  .ach .ic { color:var(--primary); }
  .ach div { display:flex; flex-direction:column; }
  .ach span { font-size:.74rem; color:var(--muted); }
  .ach strong { font-size:1.05rem; }
  .swatches { display:flex; gap:10px; margin:6px 0; }
  .swatch { width:30px; height:30px; border-radius:50%; border:2px solid transparent; cursor:pointer; }
  .swatch.active { border-color:var(--ink); box-shadow:0 0 0 3px var(--surface); }
  .timer-presets { display:flex; gap:6px; margin-bottom:8px; flex-wrap:wrap; }
  .switch-field { display:flex; align-items:center; justify-content:space-between; color:var(--muted); font-size:.82rem; }
  .switch { position:relative; display:inline-block; width:42px; height:24px; }
  .switch input { opacity:0; width:0; height:0; }
  .slider { position:absolute; inset:0; background:var(--border); border-radius:999px; transition:.2s; }
  .slider::before { content:""; position:absolute; height:18px; width:18px; left:3px; top:3px; background:#fff; border-radius:50%; transition:.2s; }
  .switch input:checked + .slider { background:var(--primary); }
  .switch input:checked + .slider::before { transform:translateX(18px); }
  .timer-sessions { text-align:center; color:var(--muted); font-size:.82rem; margin-top:8px; }
  .rem-actions { display:flex; gap:4px; margin-inline-start:auto; }
  .rem-item.is-done .rem-title { text-decoration:line-through; opacity:.6; }
  .emoji-in { width:46px; text-align:center; font-size:1.1rem; }
  .subject-row { display:flex; align-items:center; gap:8px; padding:8px 0; border-bottom:1px solid var(--border); flex-wrap:wrap; }
  .subj-stat { flex-basis:100%; font-size:.74rem; color:var(--muted); padding-inline-start:24px; }
  .subject-row input[type=text] { flex:1; }
  .subject-row .emoji-in { flex:0 0 auto; }
  .habits { display:flex; flex-direction:column; gap:8px; }
  .habit { display:flex; align-items:center; gap:10px; color:var(--navy); cursor:pointer; }
  .habit input { width:18px; height:18px; }
  .habit.done span { text-decoration:line-through; opacity:.55; }
  .home-goals { display:flex; flex-direction:column; gap:10px; }
  .hg-item { display:flex; flex-direction:column; gap:4px; }
  .hg-top { display:flex; justify-content:space-between; font-size:.84rem; }
  .hg-title { font-weight:700; color:var(--navy); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .hg-num { color:var(--muted); }
  .hg-due-wrap { display:inline-flex; align-items:center; gap:6px; }
  .hg-due { display:inline-flex; align-items:center; gap:4px; padding:2px 9px; border-radius:999px; font-size:.7rem; font-weight:700; white-space:nowrap; }
  .hg-due.ok { background:color-mix(in srgb, var(--primary) 12%, transparent); color:var(--primary); }
  .hg-due.soon { background:color-mix(in srgb, #f59e0b 14%, transparent); color:#b45309; }
  .hg-due.warn { background:color-mix(in srgb, #f97316 18%, transparent); color:#c2410c; animation:fvPulse 1.6s infinite ease-in-out; }
  .hg-due.late { background:color-mix(in srgb, var(--danger) 13%, transparent); color:var(--danger); }
  .acct-info { display:flex; flex-wrap:wrap; gap:8px 18px; padding:10px 14px; background:var(--surface-2); border:1px solid var(--border); border-radius:12px; font-size:.8rem; color:var(--muted); }
  .acct-info span { display:inline-flex; align-items:center; gap:6px; }
  .acct-info strong { color:var(--navy); }
  .boot-loader { position:fixed; inset:0; z-index:9999; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px; background:var(--bg); color:var(--muted); font-size:.95rem; }
  .boot-loader .spinner { width:42px; height:42px; border-radius:50%; border:4px solid var(--border); border-top-color:var(--accent); animation:spin .8s linear infinite; }
  @keyframes spin { to { transform:rotate(360deg); } }
  .float-timer { position:fixed; bottom:18px; left:18px; z-index:1200; width:212px; background:var(--surface); border:1px solid var(--border); border-radius:16px; box-shadow:0 12px 32px rgba(2,12,27,.22); padding:9px 12px 12px; }
  .float-timer[hidden] { display:none; }
  .float-timer .ft-head { display:flex; align-items:center; gap:6px; cursor:grab; user-select:none; touch-action:none; }
  .float-timer .ft-head:active { cursor:grabbing; }
  .float-timer .ft-dot { width:8px; height:8px; border-radius:50%; background:var(--border); flex:none; }
  .float-timer.running .ft-dot { background:#22c55e; animation:ftpulse 1.2s ease-in-out infinite; }
  @keyframes ftpulse { 50% { opacity:.35; } }
  .float-timer .ft-mode { font-size:.72rem; color:var(--muted); font-weight:700; flex:none; }
  .float-timer .ft-subj { font-size:.7rem; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; min-width:0; }
  .float-timer .ft-hide { color:var(--muted); padding:2px; }
  .float-timer .ft-time { font-size:1.7rem; font-weight:800; font-variant-numeric:tabular-nums; text-align:center; letter-spacing:.5px; margin:3px 0 6px; color:var(--navy); }
  .float-timer.running .ft-time { color:#16a34a; }
  .float-timer .ft-bar { height:5px; background:var(--surface-2); border-radius:99px; overflow:hidden; }
  .float-timer .ft-fill { height:100%; width:0%; background:var(--accent); transition:width .5s linear; border-radius:99px; }
  .float-timer.running .ft-fill { background:#22c55e; }
  .float-timer .ft-actions { display:flex; gap:6px; margin-top:9px; }
  .float-timer .btn-sm { padding:5px 10px; font-size:.78rem; flex:1; }
  @media (max-width:720px) { .float-timer { width:172px; bottom:12px; left:12px; } }
  .fab-stack { position:fixed; bottom:20px; right:20px; z-index:1150; display:flex; flex-direction:column; gap:10px; }
  .fab-stack[hidden] { display:none; }
  .fab { width:52px; height:52px; border-radius:50%; border:none; background:var(--accent); color:#fff; display:flex; align-items:center; justify-content:center; box-shadow:0 8px 22px rgba(2,12,27,.25); cursor:pointer; transition:transform .15s, box-shadow .15s; }
  .fab:hover { transform:translateY(-2px) scale(1.04); box-shadow:0 12px 28px rgba(2,12,27,.3); }
  .fab-soft { background:var(--surface); color:var(--navy); border:1px solid var(--border); }
  .home-quote { margin-top:4px; font-size:.82rem; color:var(--accent); opacity:.85; font-style:italic; max-width:520px; }
  .uf-drop { border:1.5px dashed transparent; border-radius:12px; padding:4px; transition:border-color .15s, background .15s; }
  .uf-drop.dz-over { border-color:var(--accent); background:color-mix(in srgb, var(--accent) 7%, transparent); }
  .dz-hint { margin:6px 2px 0; font-size:.74rem; color:var(--muted); text-align:center; }
  .nav-badge { display:inline-flex; align-items:center; justify-content:center; min-width:17px; height:17px; padding:0 4px; margin-inline-start:6px; border-radius:99px; background:#ef4444; color:#fff; font-size:.66rem; font-weight:800; vertical-align:middle; }
  .nav-badge[hidden] { display:none; }
  .goal-ring .ring-bg { fill:none; stroke:var(--surface-2); stroke-width:5; }
  .goal-ring .ring-fg { fill:none; stroke:var(--accent); stroke-width:5; stroke-linecap:round; transform:rotate(-90deg); transform-origin:center; transition:stroke-dashoffset .5s; }
  .goal-ring.full .ring-fg { stroke:#22c55e; }
  .goal-ring .ring-txt { font-size:10.5px; font-weight:800; fill:var(--navy); }
  .nav-badge.res { background:#16a34a; font-variant-numeric:tabular-nums; }
  .heat-grid { display:flex; gap:3px; margin-top:8px; overflow-x:auto; padding-bottom:4px; }
  .heat-col { display:flex; flex-direction:column; gap:3px; }
  .heat-cell { width:13px; height:13px; border-radius:3px; background:var(--surface-2); border:1px solid var(--border); cursor:default; }
  .heat-cell.l1 { background:color-mix(in srgb, var(--accent) 25%, var(--surface-2)); }
  .heat-cell.l2 { background:color-mix(in srgb, var(--accent) 50%, var(--surface)); }
  .heat-cell.l3 { background:color-mix(in srgb, var(--accent) 75%, var(--surface)); }
  .heat-cell.l4 { background:var(--accent); }
  .heat-cell.today { outline:2px solid #22c55e; outline-offset:1px; }
  .hp { visibility:hidden; }
  .quick-theme { position:fixed; top:56px; inset-inline-end:12px; z-index:1300; background:var(--surface); border:1px solid var(--border); border-radius:14px; box-shadow:0 12px 30px rgba(2,12,27,.22); padding:12px; display:flex; flex-direction:column; gap:10px; }
  .quick-theme[hidden] { display:none; }
  .qt-row { display:flex; gap:8px; align-items:center; }
  .qt-modes { gap:6px; }
  .qt-modes button { flex:1; padding:5px 10px; font-size:.76rem; border-radius:9px; border:1px solid var(--border); background:var(--surface-2); color:var(--ink); cursor:pointer; }
  .qt-modes button.active { background:var(--accent); color:#fff; border-color:var(--accent); }
  .acct-comp { flex-basis:100%; display:flex; align-items:center; gap:8px; }
  .acct-bar { display:inline-block; width:120px; height:7px; background:var(--surface-2); border:1px solid var(--border); border-radius:99px; overflow:hidden; }
  .acct-bar i { display:block; height:100%; background:linear-gradient(90deg, var(--accent), #22c55e); border-radius:99px; }
  .kbd-list { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
  .kbd-list li { display:flex; justify-content:space-between; align-items:center; font-size:.85rem; }
  .kbd { background:var(--surface-2); border:1px solid var(--border); border-bottom-width:2.5px; border-radius:7px; padding:2px 9px; font-size:.78rem; font-weight:800; color:var(--navy); min-width:26px; text-align:center; }
  .day-cell.weekend { background:color-mix(in srgb, #f59e0b 6%, transparent); }
  [data-theme=dark] .day-cell.weekend { background:rgba(245,158,11,.06); }
  .dash-ring { flex:none; display:inline-flex; align-items:center; }
  .rem-day { margin:10px 2px 4px; font-size:.76rem; font-weight:800; color:var(--accent); border-bottom:1px dashed var(--border); padding-bottom:3px; }
  .rem-day:first-child { margin-top:0; }
  dialog[open] { animation:dlgIn .18s ease-out; }
  @keyframes dlgIn { from { opacity:0; transform:translateY(8px) scale(.985); } }
  .card, .stat-card, .res-card, .goal-item { transition:transform .15s ease, box-shadow .15s ease; }
  .card:hover { box-shadow:0 6px 20px rgba(2,12,27,.08); }
  .res-card:hover, .goal-item:hover { transform:translateY(-2px); box-shadow:0 10px 24px rgba(2,12,27,.1); }
  .btn:active, .fab:active, .icon-btn:active { transform:scale(.96); }
  .day-cell { transition:box-shadow .12s ease, background .12s ease; }
  .day-cell:hover { box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--accent) 55%, transparent); }
  .chip-event { transition:transform .1s ease; }
  .chip-event:hover { transform:translateX(-2px); }
  #toast { transition:transform .25s ease, opacity .25s ease; }
  button:focus-visible, input:focus-visible, select:focus-visible, [tabindex]:focus-visible { outline:2.5px solid var(--accent); outline-offset:2px; border-radius:6px; }
  #toast.ok { border-inline-start:4px solid #22c55e; }
  .offline-bar { position:fixed; top:0; inset-inline:0; z-index:1400; background:#b91c1c; color:#fff; text-align:center; font-size:.8rem; padding:6px 10px; }
  .offline-bar[hidden] { display:none; }
  .save-flash { position:fixed; bottom:14px; inset-inline-end:50%; transform:translateX(50%) translateY(20px); z-index:1350; background:#14532d; color:#dcfce7; font-size:.76rem; padding:5px 12px; border-radius:99px; opacity:0; pointer-events:none; transition:opacity .2s, transform .2s; }
  .save-flash.on { opacity:1; transform:translateX(50%) translateY(0); }
  .ft-sessions { margin-top:6px; font-size:.68rem; color:var(--muted); text-align:center; }
  .shr-row { display:flex; gap:8px; align-items:center; margin:8px 0; }
  #myShareCode { letter-spacing:2px; background:var(--surface-2); border:1px dashed var(--border); padding:5px 12px; border-radius:9px; min-width:110px; text-align:center; }
  .ver-chip { font-size:.68rem; font-weight:800; color:var(--muted); background:var(--surface-2); border:1px solid var(--border); border-radius:99px; padding:2px 8px; margin-inline-end:4px; }
  .dl-cards { display:grid; grid-template-columns:repeat(auto-fit, minmax(180px, 1fr)); gap:12px; }
  .dl-card { display:flex; flex-direction:column; gap:7px; align-items:flex-start; border:1px solid var(--border); border-radius:14px; padding:14px; background:var(--surface-2); }
  .dl-card .dl-ico { font-size:1.5rem; }
  .dl-card .btn { margin-top:auto; text-decoration:none; }
  .dl-soon { opacity:.65; }
  @media (max-width:900px) {
    .dash-strip { flex-direction:column; align-items:stretch; }
    .dash-chips { flex-wrap:wrap; }
    .topbar-actions .hello { display:none; }
    .fab-stack { bottom:14px; right:14px; }
    .float-timer { left:10px; }
  }
  #qsInput { width:100%; padding:9px 12px; border:1.5px solid var(--border); border-radius:10px; background:var(--surface-2); color:var(--ink); font:inherit; margin-bottom:8px; }
  .qs-results { max-height:320px; overflow:auto; display:flex; flex-direction:column; gap:4px; }
  .qs-item { display:flex; align-items:center; gap:8px; padding:7px 9px; border-radius:9px; cursor:pointer; font-size:.82rem; border:1px solid transparent; }
  .qs-item:hover { background:var(--surface-2); border-color:var(--border); }
  .qs-item strong { flex:none; max-width:55%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .streak-warn { margin-top:6px; font-size:.8rem; font-weight:700; color:#b45309; background:rgba(245,158,11,.12); border:1px solid rgba(245,158,11,.35); border-radius:10px; padding:6px 10px; display:inline-block; }
  [data-theme=dark] .streak-warn { color:#fbbf24; }
  ::selection { background:color-mix(in srgb, var(--accent) 30%, transparent); }
  ::-webkit-scrollbar { width:10px; height:10px; }
  ::-webkit-scrollbar-thumb { background:var(--border); border-radius:99px; border:2px solid var(--bg); }
  ::-webkit-scrollbar-thumb:hover { background:var(--muted); }
  @media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration:.001s !important; transition-duration:.001s !important; }
  }
  @media print {
    .fab-stack, .float-timer, .boot-loader, .offline-bar, #mainnav, .topbar-actions, #sessionBar, dialog { display:none !important; }
    body, main { background:#fff !important; }
    .screen[hidden] { display:none !important; }
    .screen:not([hidden]) { display:block !important; }
  }
  .fab-soft:hover { background:var(--surface-2); transform:translateY(-2px); }
  .navbtn { position:relative; }
  .goal-item.is-done .goal-title { text-decoration:line-through; opacity:.65; }
  .res-time { font-variant-numeric:tabular-nums; }
  .ft-time { font-feature-settings:'tnum'; }
  .goals-list { display:flex; flex-direction:column; gap:12px; }
  .goal-item { display:flex; align-items:center; gap:14px; padding:12px; border:1px solid var(--border); border-radius:14px; background:var(--surface); }
  .goal-item.is-done { opacity:.6; }
  .goal-item.is-done .goal-title { text-decoration:line-through; }
  .goal-main { flex:1; min-width:0; }
  .goal-title { font-weight:800; color:var(--navy); }
  .goal-sub { font-size:.76rem; color:var(--muted); }
  .goal-prog { display:flex; align-items:center; gap:8px; min-width:160px; }
  .goal-prog .prog-num { font-size:.8rem; color:var(--muted); }
  .goal-acts { display:flex; gap:4px; }
  .prog-bar { flex:1; height:10px; background:var(--surface-2); border-radius:999px; overflow:hidden; }
  .prog-bar.sm { height:7px; }
  .prog-bar span { display:block; height:100%; background:linear-gradient(90deg, var(--primary), var(--accent)); border-radius:999px; transition:width .4s; }
  .dialog-body .field { display:flex; flex-direction:column; gap:4px; color:var(--muted); font-size:.82rem; margin:8px 0; }
  .dialog-body input[type=range] { width:100%; }
  .res-layout { display:grid; grid-template-columns:320px 1fr; gap:16px; align-items:start; }
  .res-main { min-width:0; }
  .res-chart-title { margin:6px 0 10px; font-size:.92rem; color:var(--navy); }
  .res-chart-title small { color:var(--muted); font-weight:400; font-size:.74rem; }
  #resTrendChart { width:100% !important; max-height:230px; }
  .resources-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(200px,1fr)); gap:14px; margin-top:16px; }
  .res-card { border:1px solid var(--border); border-radius:14px; padding:14px; background:var(--surface); display:flex; flex-direction:column; gap:8px; transition:transform .15s, box-shadow .15s, border-color .15s; }
  .res-card:hover { transform:translateY(-2px); box-shadow:var(--shadow-sm); border-color:color-mix(in srgb, var(--primary) 40%, var(--border)); }
  .res-card-head { display:flex; align-items:center; gap:10px; }
  .res-emoji { font-size:1.4rem; }
  .res-name { font-weight:800; color:var(--navy); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .res-meta { font-size:.76rem; color:var(--muted); }
  .res-time { font-size:.82rem; color:var(--navy); font-weight:700; }
  .res-actions { display:flex; gap:6px; flex-wrap:wrap; margin-top:2px; }
  .file-list { display:flex; flex-direction:column; gap:8px; margin-top:8px; }
  .file-row { display:flex; align-items:center; gap:8px; padding:8px; border:1px solid var(--border); border-radius:10px; transition:border-color .15s, background .15s; }
  .file-row:hover { border-color:color-mix(in srgb, var(--primary) 40%, var(--border)); background:var(--surface-2); }
  .file-ic { color:var(--accent); }
  .file-name { color:var(--navy); text-decoration:none; font-weight:700; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; }
  .file-name:hover { text-decoration:underline; }
  .file-size { font-size:.74rem; color:var(--muted); }
  .uf-select { font:inherit; font-size:.8rem; color:var(--navy); background:var(--surface-2); border:1px solid var(--border); border-radius:8px; padding:4px 6px; max-width:150px; cursor:pointer; }
  .uf-select:hover { border-color:color-mix(in srgb, var(--primary) 45%, var(--border)); }
  .uf-upload-select { flex:0 1 auto; min-width:130px; }
  .uf-sub { opacity:.85; }
  .uf-filter-row { display:flex; align-items:center; gap:8px; margin-top:10px; flex-wrap:wrap; }
  .uf-search { flex:1; min-width:140px; font:inherit; font-size:.82rem; padding:6px 10px; border:1px solid var(--border); border-radius:8px; background:var(--surface); color:var(--ink); }
  .uf-search:focus { outline:none; border-color:var(--primary); box-shadow:var(--focus); }
  .uf-thumb { width:36px; height:36px; object-fit:cover; border-radius:9px; border:1px solid var(--border); flex:0 0 auto; }
  .session-bar { position:fixed; left:50%; bottom:22px; transform:translateX(-50%); z-index:80; display:flex; align-items:center; gap:12px; background:var(--navy); color:#fff; padding:10px 16px; border-radius:999px; box-shadow:0 14px 34px rgba(10,25,45,.35); backdrop-filter:blur(8px); animation:sesIn .3s ease; max-width:calc(100vw - 30px); flex-wrap:wrap; justify-content:center; }
  @keyframes sesIn { from { transform:translate(-50%, 80px); opacity:0; } to { transform:translate(-50%, 0); opacity:1; } }
  .session-bar .ses-emoji { font-size:1.3rem; }
  .session-bar .ses-info { display:flex; flex-direction:column; line-height:1.2; }
  .session-bar .ses-title { font-weight:700; font-size:.9rem; max-width:220px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .session-bar .ses-time { font-variant-numeric:tabular-nums; font-size:.8rem; color:#cfe0f2; }
  .session-bar .btn-sm { min-height:0; }
  .session-bar .btn-danger { background:var(--danger); border-color:transparent; color:#fff; }
  .session-bar .btn-soft { background:rgba(255,255,255,.14); color:#fff; border-color:transparent; }
  .session-bar .btn-soft:hover { background:rgba(255,255,255,.24); border-color:transparent; }

  /* ---------- file viewer ---------- */
  .viewer-dialog { width:min(980px, calc(100% - 30px)); height:min(88vh, 900px); max-height:calc(100vh - 30px); display:flex; flex-direction:column; }
  .viewer-dialog:not([open]) { display:none; }
  .viewer-head { display:flex; align-items:center; flex-wrap:wrap; gap:8px 12px; padding:12px 18px; border-bottom:1px solid var(--border); background:var(--surface-2); border-radius:18px 18px 0 0; flex-shrink:0; }
  .viewer-head .ses-emoji { font-size:1.5rem; }
  .viewer-title-wrap { display:flex; flex-direction:column; min-width:120px; flex:1 1 160px; }
  .viewer-title-wrap strong { color:var(--navy); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .viewer-title-wrap .muted { font-size:.74rem; }
  .viewer-timer { display:inline-flex; align-items:center; gap:7px; background:color-mix(in srgb, var(--accent) 14%, transparent); color:var(--navy); font-size:.82rem; font-weight:700; padding:6px 12px; border-radius:999px; white-space:nowrap; }
  .viewer-timer strong { font-variant-numeric:tabular-nums; color:var(--accent); font-size:.95rem; }
  .viewer-timer.paused { opacity:.65; }
  .viewer-timer.paused .dot { animation:none; background:var(--muted); }
  .viewer-timer .dot { width:8px; height:8px; border-radius:50%; background:var(--danger); animation:fvPulse 1.2s infinite ease-in-out; flex:0 0 auto; }
  @keyframes fvPulse { 0%,100% { opacity:1; transform:scale(1); } 50% { opacity:.35; transform:scale(.8); } }
  .viewer-today { display:inline-flex; align-items:center; padding:6px 12px; border-radius:999px; background:var(--surface); border:1px solid var(--border); font-size:.76rem; font-weight:700; color:var(--muted); white-space:nowrap; }
  .viewer-head .btn-sm { min-height:0; }
  .viewer-body { flex:1; overflow:auto; padding:18px; background:var(--surface); scrollbar-width:thin; overscroll-behavior:contain; }
  .viewer-content { max-width:100%; }
  .docx-doc { line-height:2; font-size:1.02rem; color:#22303e; max-width:800px; margin:6px auto 24px; background:#fff; border-radius:14px; box-shadow:0 10px 34px rgba(10,25,45,.14), 0 0 0 1px var(--border); padding:46px 54px; }
  .docx-doc h1, .docx-doc h2, .docx-doc h3, .docx-doc h4 { color:#12263a; margin:1.15em 0 .5em; line-height:1.45; font-weight:800; }
  .docx-doc h1 { font-size:1.65em; border-bottom:3px solid #d9e5ee; padding-bottom:.35em; }
  .docx-doc h2 { font-size:1.35em; }
  .docx-doc h3 { font-size:1.12em; color:#1f4e79; }
  .docx-doc p { margin:.7em 0; text-align:justify; hyphens:auto; }
  .docx-doc strong { color:#12263a; }
  .docx-doc a { color:var(--accent); text-decoration:underline; text-underline-offset:3px; word-break:break-word; }
  .docx-doc ul, .docx-doc ol { padding-inline-start:1.5em; margin:.7em 0; }
  .docx-doc li { margin:.3em 0; }
  .docx-doc li::marker { color:var(--accent); }
  .docx-doc blockquote { margin:1em 0; padding:.6em 1em; border-inline-start:4px solid var(--accent); background:var(--surface-2); border-radius:8px; color:#33475b; }
  .docx-doc table { border-collapse:collapse; margin:1em auto; max-width:100%; box-shadow:0 0 0 1px var(--border); border-radius:10px; overflow:hidden; }
  .docx-doc td, .docx-doc th { border:1px solid var(--border); padding:8px 12px; }
  .docx-doc th { background:#eef4f8; font-weight:700; color:#12263a; }
  .docx-doc tr:nth-child(even) td { background:#fafcfd; }
  .docx-doc img { max-width:100%; height:auto; border-radius:10px; box-shadow:0 4px 16px rgba(10,25,45,.12); display:block; margin:1em auto; }
  .docx-doc hr { border:0; height:1px; background:#d9e5ee; margin:1.6em 0; }
  .viewer-text { white-space:pre-wrap; word-break:break-word; line-height:1.9; font-size:.95rem; direction:rtl; max-width:760px; margin-inline:auto; font-family:inherit; }
  .viewer-img { max-width:100%; height:auto; border-radius:12px; display:block; margin-inline:auto; }
  .viewer-frame { width:100%; height:calc(88vh - 190px); min-height:420px; border:1px solid var(--border); border-radius:12px; background:#fff; }
  .viewer-audio { width:100%; margin-top:30vh; }
  .viewer-foot { display:flex; justify-content:flex-end; align-items:center; gap:10px; padding:10px 18px; border-top:1px solid var(--border); background:var(--surface-2); border-radius:0 0 18px 18px; flex-shrink:0; }
  .dialog-body, .drawer-entries { scrollbar-width:thin; }
  @media (max-width:700px) {
    .viewer-timer .lbl { display:none; }
    .viewer-frame { height:60vh; min-height:300px; }
    .viewer-foot { justify-content:center; }
    .viewer-head { padding:10px 12px; }
  }
  @media (max-width:900px) { .res-layout { grid-template-columns:1fr; } }
  .inline-form { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:8px; }
  .inline-form input[type="file"] { flex:1; min-width:150px; font-size:.85rem; }
  .icon-only { padding:8px; border-radius:10px; }
  .hint { color:var(--muted); font-size:.82rem; margin:.4rem 0; }
  .pw-eye { background:none; border:0; padding:4px; margin-inline-start:2px; color:var(--muted); cursor:pointer; display:flex; align-items:center; border-radius:8px; flex:0 0 auto; }
  .pw-eye:hover { color:var(--primary); background:var(--surface-2); }
  .dash-strip { margin-top:14px; padding:14px 18px; display:flex; flex-direction:column; gap:10px; }
  .dash-bar-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
  .dash-lbl { font-size:.8rem; font-weight:700; color:var(--navy); white-space:nowrap; }
  .dash-bar { flex:1; min-width:140px; height:10px; border-radius:999px; background:var(--surface-2); overflow:hidden; }
  .dash-bar > div { height:100%; border-radius:999px; background:linear-gradient(90deg, var(--primary), var(--accent)); transition:width .5s ease; }
  .dash-bar-row strong { color:var(--navy); font-size:.9rem; min-width:38px; text-align:left; }
  .dash-mins { font-size:.74rem; }
  .dash-chips { display:flex; gap:8px; flex-wrap:wrap; }
  .chip-stat { display:inline-flex; align-items:center; gap:5px; padding:4px 11px; border-radius:999px; background:var(--surface-2); border:1px solid var(--border); font-size:.76rem; font-weight:700; color:var(--navy); }
  .chip-hot { background:color-mix(in srgb, #f59e0b 16%, transparent); border-color:color-mix(in srgb, #f59e0b 45%, transparent); color:#b45309; }
  .ns-count { color:var(--accent); font-weight:800; }
  .ns-count.ns-now { color:var(--danger); animation:fvPulse 1.2s infinite ease-in-out; }
  .timer-subj-row { display:flex; align-items:center; gap:8px; font-size:.78rem; font-weight:700; color:var(--muted); margin-top:10px; }
  .timer-panel.timer-full { inset:50% auto auto 50%; transform:translate(-50%, -50%); width:min(92vw, 480px); padding:28px; border-radius:24px; box-shadow:0 30px 90px rgba(4,12,24,.5); }
  .timer-panel.timer-full .timer-display { font-size:4.6rem; text-align:center; letter-spacing:2px; }
  .timer-panel.timer-full .timer-bar { height:14px; }
  .timer-panel.timer-full .timer-controls { justify-content:center; gap:14px; }
  .timer-panel.timer-full .timer-controls .btn { padding:12px 26px; font-size:1rem; }
@media print { @page { size:A4 landscape; margin:12mm; } body { background:#fff; color:#000; } .topbar, .sidebar, .day-drawer, .timer-panel, .cal-nav, .drawer-tools, .drawer-foot, .switch, dialog, .toast, .mainnav { display:none !important; } .layout { display:block; } .month-grid { grid-auto-rows:90px; } }

/* ---------- حالت آفلاین (اپ ویندوز محلی) ---------- */
body.offline-mode { --primary:#e0891e; --primary-d:#c26f0d; --navy:#7c4a03; --focus:0 0 0 4px rgba(224,137,30,.2); }
body.offline-mode #authView { display:none !important; }
.off-chip { background:#e0891e; color:#fff; border-color:#c26f0d; font-weight:800; }
body.offline-mode .brand-mark { background:linear-gradient(135deg, #e0891e, #7c4a03); }

/* ---------- حالت تمرکز تمام‌صفحه ---------- */
#fsFocus { position:fixed; inset:0; z-index:9999; background:radial-gradient(circle at 50% 35%, #12303b, #07161d 70%); color:#eef6f2; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:18px; padding:24px; text-align:center; }
#fsFocus[hidden] { display:none; }
#fsFocus .fs-subject { font-size:1.15rem; opacity:.85; letter-spacing:.02em; }
#fsFocus .fs-time { font-size:min(17vw, 9rem); font-weight:800; font-variant-numeric:tabular-nums; line-height:1; text-shadow:0 6px 40px rgba(14,165,164,.35); }
#fsFocus .fs-quote { max-width:34rem; min-height:3.2em; opacity:.75; font-size:1rem; line-height:1.9; transition:opacity .6s; }
#fsFocus .fs-actions { display:flex; gap:12px; margin-top:6px; flex-wrap:wrap; justify-content:center; }
#fsFocus .btn { background:rgba(255,255,255,.1); border-color:rgba(255,255,255,.25); color:#fff; }
#fsFocus .btn:hover { background:rgba(255,255,255,.18); }
#fsFocus .fs-hint { position:absolute; bottom:14px; inset-inline:0; font-size:.75rem; opacity:.45; }
body.fs-focus-open { overflow:hidden; }

/* ---------- ردیف‌های جستجوی سراسری ---------- */
.sr-row:hover { background:rgba(14,165,164,.08); border-radius:8px; }
