/* writeias: a reading room for topper copies. Paper, ink, one accent, the evaluator's red kept for the evaluator. */
:root{
  --paper:#faf8f3;--paper-2:#f2efe7;--ink:#1c1d19;--ink-2:#454740;--muted:#5f6258;--rule:#dcd8cc;--rule-2:#ebe7dc;--rule-strong:#cfcabc;--edge:#857f72;--on-accent:#fff;
  --accent:#2e3d8c;--accent-soft:#e6e9f6;--accent-ink:#1f2b6b;--olive:#6b7a2b;
  --pen:#1d4ed8;--eval:#b3261e;--eval-soft:#fbe9e7;--mark:#fff3b0;--mark-2:#ffe77a;
  --used:#2f6b3a;--used-soft:#e2efe4;--miss:#8a5a12;--miss-soft:#f6ecd6;--todo:#e8e4d8;
  --read:#c9d4f0;--written:#8fa3dc;--done:#2e3d8c;--p1:#c9d4f0;--p2:#8fa3dc;--p3:#5468b8;--p4:#2e3d8c;--p0:#d9d5c9;--p5:#b7a57a;
  --serif:"Source Serif 4","Tiro Devanagari Hindi","Noto Serif Devanagari",Georgia,"Times New Roman",serif;--sans:"IBM Plex Sans","Noto Sans Devanagari","Helvetica Neue",Arial,sans-serif;--mono:"IBM Plex Mono",Menlo,monospace;
  --shadow:0 1px 2px rgba(20,20,10,.06),0 8px 24px -12px rgba(20,20,10,.18);
  --radius:6px;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --paper:#16171a;--paper-2:#1e2024;--ink:#e8e6df;--ink-2:#c9c7bf;--muted:#a6a99f;--rule:#45464d;--rule-2:#33363c;--rule-strong:#55575f;--edge:#707076;--on-accent:#16171a;
  --accent:#a3b1ff;--accent-soft:#242a45;--accent-ink:#c6cfff;--olive:#b5c46a;--pen:#8ab4ff;--eval:#ff8a80;--eval-soft:#3a2321;--mark:#3f3710;--mark-2:#6b5f1e;
  --used:#8fd19a;--used-soft:#1e3324;--miss:#e2b56a;--miss-soft:#3a2d14;--todo:#2a2c31;--read:#2f3a5c;--written:#4a5a9a;--done:#a3b1ff;--p1:#2f3a5c;--p2:#4a5a9a;--p3:#7f8fd6;--p4:#a3b1ff;--p0:#4a4c52;--p5:#8f7d52;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px -12px rgba(0,0,0,.6);color-scheme:dark}}
:root[data-theme="dark"]{
  --paper:#16171a;--paper-2:#1e2024;--ink:#e8e6df;--ink-2:#c9c7bf;--muted:#a6a99f;--rule:#45464d;--rule-2:#33363c;--rule-strong:#55575f;--edge:#707076;--on-accent:#16171a;
  --accent:#a3b1ff;--accent-soft:#242a45;--accent-ink:#c6cfff;--olive:#b5c46a;--pen:#8ab4ff;--eval:#ff8a80;--eval-soft:#3a2321;--mark:#3f3710;--mark-2:#6b5f1e;
  --used:#8fd19a;--used-soft:#1e3324;--miss:#e2b56a;--miss-soft:#3a2d14;--todo:#2a2c31;--read:#2f3a5c;--written:#4a5a9a;--done:#a3b1ff;--p1:#2f3a5c;--p2:#4a5a9a;--p3:#7f8fd6;--p4:#a3b1ff;--p0:#4a4c52;--p5:#8f7d52;
  --shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px -12px rgba(0,0,0,.6);color-scheme:dark}
*{box-sizing:border-box}
[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:0 0 0 5px var(--paper)}
html{scroll-padding-top:60px}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition-duration:.01ms!important;animation-duration:.01ms!important}}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.5;min-height:100vh;padding-bottom:env(safe-area-inset-bottom,0)}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:2px}
h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.2;margin:0;text-wrap:balance}
h1{font-size:30px}h2{font-size:22px}h3{font-size:17px}
p{margin:0 0 10px}
b,strong{font-weight:600}
button,.btn{font:inherit;font-weight:500;font-size:14px;min-height:32px;border:1px solid var(--rule);background:var(--paper);color:var(--ink);border-radius:var(--radius);padding:6px 12px;cursor:pointer;line-height:1.3}
button:hover,.btn:hover{border-color:var(--ink-2);text-decoration:none}
.btn.primary,button.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.btn.primary:hover{background:var(--accent-ink)}
.btn.small,button.small{font-size:12.5px;padding:5px 10px;min-height:28px}
.btn.quiet{border-color:transparent;color:var(--accent)}
input,select,textarea{font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--edge);border-radius:var(--radius);padding:7px 10px}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}
kbd{font-family:var(--mono);font-size:11px;border:1px solid var(--rule);border-bottom-width:2px;border-radius:4px;padding:0 5px;color:var(--muted)}
i.s{display:inline-block;width:1px;height:.8em;background:var(--rule);margin:0 7px;vertical-align:-1px}
.muted{color:var(--muted)}
.small{font-size:13px}
.num{font-variant-numeric:tabular-nums}
.hair{border:0;border-top:1px solid var(--rule);margin:18px 0}
.chip{display:inline-block;font-size:12.5px;font-weight:500;border:1px solid var(--rule);border-radius:999px;padding:3px 10px;color:var(--ink-2);white-space:nowrap;vertical-align:middle;line-height:1.3}
.chip:hover{background:var(--paper-2);text-decoration:none}
.chip.on{background:var(--accent-soft);border-color:var(--accent-soft);color:var(--accent-ink)}
.tag{display:inline-block;font-size:11px;font-weight:600;border-radius:3px;padding:1px 6px;vertical-align:1px;white-space:nowrap}
.tag.used{color:var(--used);background:var(--used-soft)}.tag.miss{color:var(--miss);background:var(--miss-soft)}
.tag.eval{color:var(--eval);background:var(--eval-soft)}.tag.ref{color:var(--accent-ink);background:var(--accent-soft)}
.tag.read{background:var(--read);color:var(--ink)}.tag.written{background:var(--written);color:var(--ink)}.tag.done{background:var(--done);color:var(--on-accent)}

/* top bar */
.top{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:22px;background:var(--paper);border-bottom:1px solid var(--rule);
  padding:0 max(16px,env(safe-area-inset-right,0)) 0 max(16px,env(safe-area-inset-left,0));height:52px}
.brand{font-family:var(--serif);font-weight:600;font-size:21px;color:var(--ink);letter-spacing:-.01em}
.brand span{color:var(--accent)}
.brand:hover{text-decoration:none}
.nav{display:flex;gap:4px}
.nav a{color:var(--ink-2);padding:6px 10px;border-radius:var(--radius);font-weight:500}
.nav a.on{color:var(--accent-ink);background:var(--accent-soft)}
.chip,.btn,.btn.small{transition:background .12s,border-color .12s,color .12s}
.nav a:hover{text-decoration:none;color:var(--ink)}
.search{margin-left:auto;position:relative;flex:0 1 360px;min-width:0}
.search input{width:100%;padding-right:34px;background:var(--paper-2);border-color:transparent}
.search input:focus{background:var(--paper)}
.search kbd{position:absolute;right:9px;top:50%;transform:translateY(-50%)}
.who{color:var(--muted);font-size:13.5px;white-space:nowrap}
.who:hover{color:var(--ink);text-decoration:none}
.tabs{display:none}
.page{max-width:1120px;margin:0 auto;padding:26px max(16px,env(safe-area-inset-right,0)) 60px max(16px,env(safe-area-inset-left,0))}
.wide{max-width:1320px}
.crumbs{font-size:13px;color:var(--muted);margin-bottom:8px;display:flex;flex-wrap:wrap;gap:6px}
.crumbs a{color:var(--muted)}
.crumbs span::before{content:"›";margin:0 2px 0 0}
.lede{color:var(--ink-2);max-width:66ch;font-size:16px}
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.head .acts{display:flex;gap:8px;flex-wrap:wrap}
.cols{display:grid;grid-template-columns:1fr 300px;gap:36px;align-items:start}
.cols > *{min-width:0}
.sec{margin-top:30px}
.sec > h2, .sec > h3{margin-bottom:10px}
.label{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);font-weight:600;margin:0 0 8px}
.stats{display:flex;flex-wrap:wrap;gap:8px 28px;margin:0 0 6px}
.stats b{font-family:var(--serif);font-size:24px;font-weight:600;margin-right:5px;font-variant-numeric:tabular-nums}
.stats span{color:var(--muted);font-size:14px}
.rows{margin:0;padding:0;list-style:none}
.rows li{display:flex;gap:14px;align-items:baseline;padding:9px 0;border-bottom:1px solid var(--rule-2);min-width:0}
.rows li > *{min-width:0}
.rows .grow{flex:1}
.rows .meta{color:var(--muted);font-size:13px;white-space:nowrap}
.rows .meta b{color:var(--ink)}
.facets{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 14px}
.facets select{padding:5px 8px;font-size:13.5px}
.pager{display:flex;gap:10px;align-items:center;margin-top:16px;font-size:14px}
.toast{position:fixed;left:50%;bottom:max(24px,env(safe-area-inset-bottom,0));transform:translateX(-50%);background:var(--ink);color:var(--paper);padding:9px 16px;border-radius:999px;font-size:14px;z-index:90;box-shadow:var(--shadow)}
.grid2{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.card{border:1px solid var(--rule);border-radius:var(--radius);padding:14px 16px;background:var(--paper)}
.card h3{margin-bottom:4px}
figure{margin:0}
figure img{max-width:100%;height:auto;display:block;border:1px solid var(--rule);background:#fff;border-radius:3px}
figcaption{font-size:12.5px;color:var(--muted);margin-top:5px;line-height:1.35}
.figs{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}
.bar{display:flex;height:6px;border-radius:3px;overflow:hidden;background:var(--todo);margin-top:6px}
.bar i{display:block;height:100%}
.bar .r{background:var(--read)}.bar .w{background:var(--written)}.bar .d{background:var(--done)}
.heat{display:grid;gap:3px}
.heat .cell{width:16px;height:16px;border-radius:3px;background:var(--todo)}
.heat .cell.none{background:transparent;border:1px dashed var(--rule-2)}
.heat .cell.read{background:var(--read)}.heat .cell.written{background:var(--written)}.heat .cell.done{background:var(--done)}
.heat .cell.todo{background:var(--rule)}
.tbl{max-width:100%}
@media (max-width:900px){.tbl{overflow-x:auto;-webkit-overflow-scrolling:touch}}
table.t{border-collapse:collapse;width:100%;font-size:14px;min-width:560px}
table.t th{text-align:left;font-weight:600;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:6px 10px;border-bottom:1px solid var(--rule);position:sticky;top:52px;background:var(--paper)}
table.t td{padding:8px 10px;border-bottom:1px solid var(--rule-2);vertical-align:top}
table.t td.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.moves{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:14px}
.moves b{font-family:var(--serif);font-size:20px;font-weight:600}
.keep{font-size:12px;border:1px solid var(--rule);background:var(--paper);color:var(--accent);border-radius:999px;padding:1px 9px;cursor:pointer;opacity:0;transition:opacity .15s;min-height:0;line-height:1.5}
li:hover > .keep, .pass:hover .keep, .el:hover .keep, figure:hover .keep{opacity:1}
.keep.kept{opacity:1;background:var(--used-soft);color:var(--used);border-color:transparent}
.credit{font-size:13px;color:var(--muted);border-left:2px solid var(--rule);padding:2px 0 2px 12px;margin:6px 0 14px;line-height:1.45}
.credit b{color:var(--ink);font-weight:500}
.els{margin:0;padding:0;list-style:none}
.els li{display:grid;grid-template-columns:36px 1fr;gap:8px;padding:5px 0;border-bottom:1px solid var(--rule-2);align-items:baseline}
.els .n{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted);font-size:13px}
.els .n b{color:var(--ink)}
.els .by{color:var(--muted)}
.els .refs{color:var(--accent);font-size:12px;margin-left:6px;white-space:nowrap}
.els .refs a{margin-right:3px}
.note-card{border:1px solid var(--rule);border-radius:var(--radius);padding:12px 14px;background:var(--paper);display:flex;flex-direction:column;gap:6px;position:relative}
.note-card img{max-width:100%;border:1px solid var(--rule);border-radius:3px;background:#fff;filter:grayscale(1) contrast(1.08)}
.note-card .txt{font-family:var(--serif);font-size:15.5px}
.note-card .own{font-size:14px;color:var(--ink-2);border-left:2px solid var(--accent);padding-left:9px}
.note-card .src{font-size:12.5px;color:var(--muted)}
.note-card .x{position:absolute;top:8px;right:8px;border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:16px;padding:2px 6px}
.note-card .x:hover{color:var(--eval)}
.strip{position:sticky;top:52px;z-index:20;background:var(--paper);border-bottom:1px solid var(--rule);margin:0 0 14px;padding:8px 0;display:flex;gap:6px 22px;flex-wrap:wrap;align-items:baseline;font-size:14px}
.strip .st-band b{font-family:var(--serif);font-size:20px;font-weight:600}
.strip .st-gap b{font-weight:600}
.strip .st-guess b{font-family:var(--serif);font-size:18px}
table.t.miss td{border-bottom:1px solid var(--rule-2)}
@media (max-width:900px){.strip{top:52px;font-size:13px;gap:4px 14px}.strip .st-band b{font-size:18px}}
.bigband{font-family:var(--serif);font-size:44px;font-weight:600;line-height:1;letter-spacing:-.01em}
.timer{font-family:var(--mono);font-size:22px;font-variant-numeric:tabular-nums}
.timer.over{color:var(--eval)}
textarea.editor{width:100%;min-height:54vh;font-family:var(--serif);font-size:17px;line-height:1.55;padding:18px 20px;resize:vertical;background:var(--paper)}
.empty{color:var(--muted);padding:26px 0;text-align:center;border:1px dashed var(--rule);border-radius:var(--radius)}
.hits b{background:var(--mark);color:var(--ink);font-weight:600;padding:0 2px;border-radius:2px}
.snip{font-size:14px;color:var(--ink-2);margin-top:3px}
.snip .k{font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-right:6px}
.q-stem{font-family:var(--serif);font-size:23px;line-height:1.3;font-weight:600;max-width:60ch;text-wrap:pretty}
.pin{font-size:12px}
@media (max-width:900px){
  .nav{display:none}
  .top{gap:12px}
  .search{flex:1}
  .search kbd{display:none}
  .page{padding-top:18px;padding-bottom:84px}
  .cols{grid-template-columns:1fr}
  .tabs{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--paper);border-top:1px solid var(--rule);
    padding:6px max(8px,env(safe-area-inset-right,0)) max(6px,env(safe-area-inset-bottom,0)) max(8px,env(safe-area-inset-left,0))}
  .tabs a{flex:1;display:flex;flex-direction:column;align-items:center;gap:1px;font-size:11px;color:var(--muted);padding:4px 2px;border-radius:var(--radius)}
  .tabs a .ic{font-size:17px;line-height:1}
  .tabs a.on{color:var(--accent-ink)}
  table.t th{top:0}
  h1{font-size:25px}
  .keep{opacity:0}
  .sel > .keep, .sel .keep, .inst .keep, .np-item .keep, figcaption .keep{opacity:1}
}
@media (pointer:coarse){
  .chip,.btn.small,button.small{min-height:34px;display:inline-flex;align-items:center;padding-top:4px;padding-bottom:4px}
  .label{font-size:12px}.tag{font-size:12px}.chip{font-size:12.5px}
  .who{padding:8px 4px}
  .heat .cell{width:20px;height:20px}
  .facets select,.facets input{min-height:36px}
  .rows li{padding:11px 0}
  .els li{padding:7px 0}
}
@media print{.top,.tabs,.keep,.acts,.facets{display:none!important}body{background:#fff;color:#000}.page{padding:0;max-width:none}}

/* paper page: subjects, parts, topics */
.subj-strip{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:4px 0 18px;position:sticky;top:52px;background:var(--paper);padding:8px 0;z-index:5;border-bottom:1px solid var(--rule-2)}
.subj-chip{display:inline-flex;gap:8px;align-items:baseline;border:1px solid var(--rule);border-radius:999px;padding:4px 12px;font-size:13px;color:var(--ink)}
.subj-chip:hover{background:var(--paper-2);text-decoration:none}
.subj-chip b{font-weight:600}
.subj{margin-top:26px}
.subj-head{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:baseline;font-size:20px}
.subj-nums{font-family:var(--sans);font-weight:400}
.share{height:4px;background:var(--todo);border-radius:2px;margin:8px 0 10px;max-width:420px}
.share i{display:block;height:100%;background:var(--accent);border-radius:2px}
table.topics tr.part td{background:var(--paper-2);padding:7px 10px;border-bottom:1px solid var(--rule)}
table.topics td.tp{min-width:220px}
table.topics td.cv{min-width:170px}
table.topics th{top:98px}
@media (max-width:900px){.subj-strip{position:static}table.topics th{top:0}}

/* home: the dashboard */
.home .dayline{display:flex;gap:16px;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;margin-bottom:18px}
.home .day{font-size:26px}
.home .min0{min-width:0}
.home .cont{display:flex;flex-direction:column;align-items:flex-start;gap:1px;max-width:380px;text-align:left;line-height:1.3;padding:8px 14px}
.home .cont > span:nth-child(2){font-family:var(--serif);font-size:15.5px}
.tiles{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.tile{display:flex;flex-direction:column;gap:3px;border:1px solid var(--rule);border-radius:var(--radius);padding:12px 14px;min-width:0;color:var(--ink);position:relative}
.tile:hover{text-decoration:none;border-color:var(--edge)}
.tile .v{font-family:var(--serif);font-size:30px;font-weight:600;line-height:1.1;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile .v .unit{font-family:var(--sans);font-size:14px;font-weight:400;color:var(--muted);letter-spacing:0}
.tile .l{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);font-weight:600}
.tile .sub{font-size:12.5px;color:var(--muted);line-height:1.35}
.tile .spark{display:flex;align-items:flex-end;gap:2px;height:22px;margin-top:2px}
.tile .spark i{flex:1;background:var(--written);min-height:1px;border-radius:1px}
.tile .spark i.today{background:var(--done)}
.tile .dots{display:flex;gap:5px;margin-top:4px}
.tile .dots i{width:12px;height:12px;border-radius:50%;background:var(--todo)}
.tile .dots i.on{background:var(--accent)}
.tile .dots i.today{outline:2px solid var(--accent);outline-offset:2px}
.tile .bullet{position:relative;display:block;height:8px;background:var(--todo);border-radius:4px;margin-top:6px;overflow:hidden}
.tile .bullet i{position:absolute;left:0;top:0;height:100%;display:block}
.tile .bullet .rd{background:var(--read)}.tile .bullet .wr{background:var(--done)}
.home-cols{margin-top:26px}
.rows.today li{align-items:center}
.rows.today li.first{border-top:2px solid var(--ink);padding-top:12px}
.rows.today .tt{font-family:var(--serif);font-size:17px;font-weight:600}
.rows.today li.first .tt{font-size:19px}
.rows.ahead li{padding:6px 0}
.hours .bars{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;height:110px;align-items:end}
.hours .bars.weeks{grid-template-columns:repeat(12,1fr);height:70px;margin-top:6px}
.hours .col{display:flex;flex-direction:column;justify-content:flex-end;height:100%;min-width:0;gap:4px}
.hours .stack{display:flex;flex-direction:column-reverse;width:100%;min-height:0;border-radius:2px 2px 0 0;overflow:hidden;background:transparent}
.hours .col:not(:has(.stack i)) .stack{height:2px!important;background:var(--todo)}
.hours .stack i{display:block;width:100%;min-height:1px}
.hours .gs1{background:var(--p1)}.hours .gs2{background:var(--p2)}.hours .gs3{background:var(--p3)}.hours .gs4{background:var(--p4)}.hours .other{background:var(--p0)}
.hours .col .d{font-size:11px;color:var(--muted);text-align:center}
.hours .col.today .d{color:var(--ink);font-weight:600}
.hours .legend{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:8px;color:var(--muted)}
.hours .legend b{color:var(--ink);font-weight:500}
.hours .sw{display:inline-block;width:10px;height:10px;border-radius:2px;vertical-align:-1px;margin-right:5px}
.hours .sw.gs1{background:var(--p1)}.hours .sw.gs2{background:var(--p2)}.hours .sw.gs3{background:var(--p3)}.hours .sw.gs4{background:var(--p4)}.hours .sw.other{background:var(--p0)}
table.papers{min-width:640px}
table.papers tr.paper td{border-top:1px solid var(--rule);background:var(--paper-2);padding-top:9px;padding-bottom:9px}
table.papers tr.paper .tp b{font-family:var(--serif);font-size:18px}
table.papers tr.subject td.tp{padding-left:26px}
table.papers td.cv{min-width:190px}
table.papers .share-cell{display:inline-block;width:60px;height:5px;background:var(--todo);border-radius:3px;vertical-align:middle;margin-right:6px}
table.papers .share-cell i{display:block;height:100%;background:var(--accent);border-radius:3px}
.lk{text-transform:none;letter-spacing:0;font-weight:500;margin-left:8px}
.inst{border-left:3px solid var(--olive);padding:6px 0 6px 12px;margin:8px 0}
.inst .body{font-size:14px;white-space:pre-wrap}
.home .foot{margin-top:36px;border-top:1px solid var(--rule-2);padding-top:10px}
@media (max-width:1000px){.tiles{grid-template-columns:repeat(3,1fr)}}
@media (max-width:720px){
  .tiles{grid-template-columns:1fr 1fr;gap:8px}
  .tile{padding:10px 12px}.tile .v{font-size:24px}
  .tile.cov{display:none}
  .home .cont{max-width:none;width:100%}
  table.papers{min-width:0}
  table.papers tr.subject{display:none}
  table.papers tr.paper.open ~ tr.subject{display:table-row}
  table.papers tr.paper.open ~ tr.paper ~ tr.subject{display:none}
  table.papers th:nth-child(2),table.papers td:nth-child(2),table.papers th:nth-child(6),table.papers td:nth-child(6){display:none}
  table.papers tr.paper{cursor:pointer}
  .hours .bars{height:80px}
}
.rows.today .tt .min{white-space:nowrap;font-family:var(--sans);font-weight:400}
@media (max-width:720px){table.papers tr.paper .tp .muted,table.papers tr.subject .tp .muted{display:none}}

/* the element rule: token rows and capped lines */
.tokwrap{margin:8px 0 0}
.tok{margin:0;font-size:14.5px;line-height:1.65;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tokwrap.open .tok{display:block;-webkit-line-clamp:unset;overflow:visible}
.tok .k{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);font-weight:600;margin-right:8px}
.tk{cursor:pointer;border-bottom:1px dotted var(--rule-strong)}
.tk:hover{color:var(--accent);border-bottom-color:var(--accent)}
.tk.kept{color:var(--used);border-bottom-color:var(--used)}
sup.cnt{font-size:10.5px;color:var(--accent);cursor:pointer;padding:0 2px;line-height:0;font-variant-numeric:tabular-nums}
sup.cnt:hover{text-decoration:underline}
.refstrip{color:var(--muted);margin:2px 0 0;font-size:12.5px}
.refstrip b{color:var(--ink);font-weight:500}
button.more{margin:2px 0 0;padding:2px 8px;min-height:24px;font-size:12.5px}
.els.open li.extra{display:grid}
#built .chip,.heads .chip{white-space:normal;text-align:left;max-width:100%}
@media (max-width:720px){.chip{max-width:100%;white-space:normal}}
table.t.miss{min-width:0}

/* essay */
.hours .essay,.hours .sw.essay{background:var(--p5)}
.essay-topics .et{font-family:var(--serif);font-size:16px;color:var(--ink)}
.essay-topics .et:hover{color:var(--accent)}
.opening{border-left:2px solid var(--rule);padding:2px 0 2px 12px;margin:10px 0}
.op-text{font-family:var(--serif);font-size:15.5px;margin:0;max-width:68ch}

/* iteration 1: column lines on every table column, row hover, a drawn fold marker, the who link */
table.t th+th,table.t td+td{border-left:1px solid var(--rule-2)}
table.topics tr.part td,table.papers tr.paper td{border-left:0}
table.topics tr.part td+td,table.papers tr.paper td+td{border-left:1px solid var(--rule-2)}
table.papers tr.subject:hover td,table.topics tr.topic:hover td{background:var(--paper-2)}
details.fold>summary{list-style:none;cursor:pointer;color:var(--ink-2);padding-left:18px;position:relative;user-select:none}
details.fold>summary::-webkit-details-marker{display:none}
details.fold>summary::before{content:"";position:absolute;left:4px;top:.55em;border:4px solid transparent;border-left:6px solid var(--muted)}
details.fold[open]>summary::before{transform:rotate(90deg);transform-origin:3px 4px}
details.fold>summary:hover{color:var(--ink)}
.who{padding:6px 8px;border-radius:var(--radius)}
.who:hover{background:var(--paper-2)}
.tile.quiet .v{color:var(--muted);font-weight:500}
@media (max-width:720px){
  .rows.today li{flex-direction:column;align-items:stretch;gap:8px}
  .rows.today li .btn{align-self:flex-start}
  .rows.today li.first .btn{align-self:stretch;text-align:center}
}
.ph{display:none}
table.papers .chev{display:none}
@media (max-width:720px){
  .dk{display:none}
  .ph{display:block;margin-top:2px}
  table.papers th:nth-child(4),table.papers td:nth-child(4),table.papers th:nth-child(5),table.papers td:nth-child(5){display:none}
  table.papers tr.paper td.tp{position:relative;padding-right:30px}
  table.papers .chev{display:block;position:absolute;right:16px;top:50%;width:8px;height:8px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:translateY(-70%) rotate(45deg);transition:transform .15s}
  table.papers tr.paper.open .chev{transform:translateY(-30%) rotate(-135deg)}
  table.papers tr[data-paper="essay"] .chev{display:none}
  .hours .bars{height:80px}
}
.rows li.rowlink{position:relative}
.rows li.rowlink .cover{position:absolute;inset:0;z-index:0}
.rows li.rowlink>*:not(.cover){position:relative;z-index:1}
.rows li.rowlink:hover{background:var(--paper-2)}
.lk{padding:6px 8px;margin:-6px 0 -6px 2px;border-radius:var(--radius)}
.lk:hover{background:var(--paper-2);text-decoration:none}
.lib{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:22px 36px;margin-top:6px}
.lib-paper h2{font-size:21px}
.lib-paper .rows li{padding:7px 0}
@media (max-width:720px){.lib{grid-template-columns:1fr;gap:18px}}
.btn.save.on{background:var(--mark);border-color:transparent}
.shelf{display:grid;grid-template-columns:1fr 1fr;gap:18px 36px;margin:0 0 22px}
.shelf>*{min-width:0}
@media (max-width:720px){.shelf{grid-template-columns:1fr}}
.doors{display:inline-flex;border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden;margin:0 0 14px}
.doors a{padding:5px 12px;color:var(--ink-2);border-left:1px solid var(--rule)}
.doors a:first-child{border-left:0}
.doors a.on{background:var(--accent);color:var(--on-accent)}
.doors a:hover{text-decoration:none;background:var(--paper-2)}
.doors a.on:hover{background:var(--accent)}
.who.on{color:var(--accent-ink);background:var(--accent-soft)}
.sv{font-size:12px;border:1px solid var(--rule);background:var(--paper);color:var(--accent);border-radius:999px;padding:1px 9px;cursor:pointer;min-height:0;line-height:1.5;margin-left:6px;vertical-align:1px}
.sv.on{background:var(--mark);border-color:transparent;color:var(--ink)}
.rows.saved .why{font-family:var(--serif);font-size:15px;font-weight:600;min-height:20px;margin:3px 0 2px;outline:none}
.rows.saved .why:empty::before{content:attr(data-placeholder);color:var(--muted);font-weight:400;font-style:italic}

/* the notes panel */
.npanel{position:fixed;right:0;top:52px;bottom:0;width:320px;background:var(--paper);border-left:1px solid var(--rule);z-index:35;display:flex;flex-direction:column;padding:12px 14px max(12px,env(safe-area-inset-bottom,0));overflow:auto}
body.np-open{padding-right:0}
@media (min-width:1280px){body.np-open .page,body.np-open .rd{padding-right:336px}}
@media (max-width:1279px){.npanel{box-shadow:var(--shadow)}}
.np-head{display:flex;align-items:baseline;gap:8px;margin-bottom:8px}
.np-close{margin-left:auto;border:0;background:none;color:var(--muted);font-size:20px;cursor:pointer;padding:0 4px;min-height:0;line-height:1}
.np-add textarea{width:100%;font-family:var(--serif);font-size:15px;resize:vertical}
.np-row{display:flex;gap:12px;align-items:center;margin-top:6px;font-size:13px}
.np-row button{margin-left:auto}
.np-list{margin-top:10px;flex:1}
.np-item{border-bottom:1px solid var(--rule-2);padding:8px 0;font-size:14px}
.np-item img{max-width:100%;border:1px solid var(--rule);margin-bottom:4px;filter:grayscale(1) contrast(1.08)}
.np-own{font-family:var(--serif);font-size:15px;font-weight:600}
.np-text{color:var(--ink-2);font-size:13.5px}
.np-meta{font-size:12px;margin-top:2px}
.np-foot{margin:8px 0 0;border-top:1px solid var(--rule-2);padding-top:8px}
@media (max-width:720px){
  .npanel{top:auto;left:0;right:0;width:auto;height:58vh;border-left:0;border-top:1px solid var(--rule);border-radius:12px 12px 0 0;box-shadow:0 -8px 24px rgba(0,0,0,.18);z-index:45}
  .npanel::before{content:"";display:block;width:36px;height:4px;border-radius:2px;background:var(--rule-strong);margin:0 auto 8px}
}
.rd-tog .np-toggle{min-height:0}
.essay-topics .et{font-family:var(--serif);font-size:15.5px;color:var(--ink)}
.essay-topics .et:hover{color:var(--accent)}
table.essay-topics td.tp{min-width:260px}
@media (max-width:720px){.wfoot{position:fixed;left:8px;right:8px;bottom:calc(60px + env(safe-area-inset-bottom,0));z-index:30;box-shadow:var(--shadow);padding:8px 12px}.wfoot .label,.wfoot .small{display:none}.wfoot input{width:80px}.wfoot>div{margin-top:0!important;align-items:center}.wfoot>div::before{content:"Your mark";font-size:12.5px;color:var(--muted);margin-right:4px}#wf{padding-bottom:90px}}
.stats a{color:inherit}
.stats a:hover{text-decoration:none}.stats a:hover b{text-decoration:underline}
@media (pointer:coarse){.els li.el.sel .keep{opacity:1}}

/* ---- the front page, plans and terms (10 Nov 2026) ---- */
.nav.pub{margin-left:auto}
.top .trial{margin-left:auto;margin-right:10px;color:var(--muted);text-decoration:none;white-space:nowrap}
.top .trial:hover{color:var(--ink)}
.top .trial + .who{margin-left:0}
.front h1{font-family:var(--serif);font-weight:600;font-size:clamp(30px,4.4vw,46px);line-height:1.1;letter-spacing:-.01em;margin:0 0 14px;text-wrap:balance}
.front h2{font-family:var(--serif);font-weight:600;font-size:24px;margin:0 0 12px}
.front h3{font-family:var(--sans);font-weight:600;font-size:16px;margin:0 0 6px}
.front .lede{max-width:60ch}
.front section{margin:0 0 56px}
.hero{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:32px;align-items:start;padding-top:28px}
.hero .start{display:flex;gap:8px;margin-top:18px;max-width:520px}
.hero .start input{flex:1;min-width:0;font-size:16px;padding:10px 12px}
.hero .start .btn{white-space:nowrap}
.sample{padding:18px 20px;background:var(--paper-2)}
.sample .q-stem{font-size:18px}
.nums{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:18px 0}
.nums div{display:flex;flex-direction:column;gap:2px}
.nums b{font-family:var(--serif);font-weight:600;font-size:28px;line-height:1}
.nums span{font-size:13px;color:var(--muted)}
.steps{counter-reset:s;list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.steps li{counter-increment:s;position:relative;padding-top:34px;max-width:46ch;line-height:1.5}
.steps li::before{content:counter(s);position:absolute;top:0;left:0;font-family:var(--serif);font-size:24px;font-weight:600;color:var(--accent)}
.steps b{display:block;margin-bottom:4px}
.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.grid3 .card{padding:16px 18px}
.grid3 p{margin:0;line-height:1.5;color:var(--ink-2)}
.plans{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:0 0 18px}
.plan{position:relative;padding:18px 20px;display:flex;flex-direction:column;gap:4px}
.plan.best{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}
.plan .tag.best{position:absolute;top:-10px;left:16px;background:var(--accent);color:var(--on-accent)}
.plan .price{margin:4px 0 2px;display:flex;align-items:baseline;gap:6px}
.plan .price .rs{color:var(--muted);font-size:14px}
.plan .price b{font-family:var(--serif);font-size:34px;font-weight:600;line-height:1}
.plan .btn{align-self:flex-start;margin-top:auto}
.incl{columns:2;column-gap:28px;padding-left:18px;margin:0 0 10px;line-height:1.55;color:var(--ink-2)}
.incl li{break-inside:avoid;margin:0 0 4px}
.faq dl{margin:0;max-width:70ch}
.faq dt{font-weight:600;margin:12px 0 2px}
.faq dd{margin:0;line-height:1.5;color:var(--ink-2)}
.front-foot{display:flex;gap:16px;flex-wrap:wrap;border-top:1px solid var(--rule);padding:16px 0 8px}
.front-foot a{color:inherit}
.terms p{max-width:70ch;line-height:1.55}
.terms h2{margin-top:26px;font-size:20px}
@media (max-width:900px){
  .hero{grid-template-columns:1fr;gap:20px;padding-top:12px}
  .nums{grid-template-columns:repeat(3,minmax(0,1fr))}
  .steps,.grid3,.plans{grid-template-columns:1fr}
  .incl{columns:1}
}
@media (max-width:560px){
  .hero .start{flex-direction:column}
  .nums{grid-template-columns:repeat(2,minmax(0,1fr))}
  .front section{margin-bottom:40px}
  .top .trial{display:none}
}
.btn[disabled]{opacity:.45;cursor:default}

/* light or dark switch in the top bar: says the mode it switches to */
.top .theme{border:0;background:none;color:var(--muted);font:inherit;font-size:13.5px;cursor:pointer;padding:6px 8px;border-radius:var(--radius);white-space:nowrap;min-height:0}
.top .theme:hover{color:var(--ink);background:var(--paper-2)}
.top .theme{display:inline-flex;align-items:center;justify-content:center;min-width:34px;min-height:34px}
.top .theme svg{display:block}
.top .theme .l{display:none}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .top .theme .d{display:none}:root:not([data-theme="light"]) .top .theme .l{display:block}}
:root[data-theme="dark"] .top .theme .d{display:none}:root[data-theme="dark"] .top .theme .l{display:block}
.nav.pub + .theme{margin-left:0}
@media (max-width:720px){.top .theme{padding:6px 4px}}

/* ---- home, second design (10 Nov 2026): next, four numbers, the week, paper cards ---- */
.home .dayline{margin-bottom:14px}
.now{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:14px;align-items:stretch}
.now.solo{grid-template-columns:1fr}
.now .card{padding:18px 20px;min-width:0}
.now .label{display:flex;gap:10px;align-items:baseline;margin:0 0 8px}
.now .label .min{text-transform:none;letter-spacing:0;font-weight:400}
.now .next{border-left:3px solid var(--accent)}
.now .next .q-stem{font-size:clamp(20px,2.2vw,24px);line-height:1.25;margin:0 0 4px;max-width:34ch;text-wrap:balance}
.now .next .line{margin:0 0 2px;color:var(--ink-2);max-width:70ch}
.now .next .why{margin:0;max-width:70ch}
.now .next .op-text{max-width:70ch;margin:10px 0 0}
.now .next .acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px;align-items:center}
.now .next .btn.primary{padding:9px 18px;font-size:15px}
.now .cont{display:flex;flex-direction:column;gap:3px;color:var(--ink);text-decoration:none;background:var(--paper-2)}
.now .cont:hover{border-color:var(--rule-strong)}
.now .cont .tt{font-family:var(--serif);font-size:17px;line-height:1.3}
.now .cont .go{margin-top:auto;padding-top:10px;color:var(--accent);font-weight:500}
.tiles.four{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:14px}
.home .home-cols.week{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);margin-top:26px}
.pcards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:start}
.pcard{padding:14px 16px 10px;min-width:0}
.pcard.essay{grid-column:span 2}
.pcard header{display:flex;align-items:center;gap:8px;margin:0 0 8px}
.pcard .pname{display:flex;flex-direction:column;gap:1px;color:var(--ink);text-decoration:none;min-width:0;flex:1}
.pcard .pname b{font-family:var(--serif);font-size:20px;font-weight:600;color:var(--accent-ink,var(--accent))}
.pcard .pname:hover b{text-decoration:underline}
.pcard .chev-btn{display:none;border:0;background:none;padding:8px;margin-right:6px;cursor:pointer;min-height:0}
.pcard .chev-btn .chev{display:block;width:9px;height:9px;border-right:1.6px solid var(--muted);border-bottom:1.6px solid var(--muted);transform:rotate(45deg);transition:transform .15s}
.pcard.open .chev-btn .chev{transform:rotate(225deg)}
.pcard .pc-cov{margin:0 0 5px;font-size:14px}
.pcard .bar{margin:0 0 6px}
.pcard .pc-meta{margin:0 0 4px;line-height:1.45}
.pcard .subs{list-style:none;margin:8px 0 0;padding:0;border-top:1px solid var(--rule-2)}
.pcard .subs li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 10px;padding:7px 0;border-bottom:1px solid var(--rule-2)}
.pcard .subs li:last-child{border-bottom:0}
.pcard .subs .sn{font-weight:500}
.pcard .subs .sc{text-align:right;white-space:nowrap}
.pcard .subs .sm{grid-column:1 / -1;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pcard .subs .share-cell{flex:none}
.pcard .subs.two{columns:2;column-gap:28px}
.pcard .subs.two li{break-inside:avoid}
@media (max-width:1100px){
  .pcards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pcard.essay{grid-column:span 2}
}
@media (max-width:900px){
  .now{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}
  .home .home-cols.week{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:24px}
}
@media (max-width:720px){
  .now,.now.solo{grid-template-columns:1fr;gap:10px}
  .now .card{padding:14px 16px}
  .now .next .btn.primary{flex:1 1 100%;text-align:center;justify-content:center}
  .tiles.four{grid-template-columns:1fr 1fr;margin-top:10px}
  .home .home-cols.week{grid-template-columns:1fr;gap:22px}
  .pcards{grid-template-columns:1fr;gap:8px}
  .pcard.essay{grid-column:auto}
  .pcard{padding:12px 14px 8px}
  .pcard header{margin-bottom:6px;cursor:pointer}
  .pcard .chev-btn{display:block}
  .pcard .pname{flex-direction:row;align-items:baseline;gap:8px;flex-wrap:wrap}
  .pcard .subs{display:none}
  .pcard.open .subs{display:block}
  .pcard .subs.two{columns:1}
}
.home .now .cont{max-width:none;width:auto;align-items:stretch;padding:18px 20px}
@media (max-width:720px){.tiles.four .tile.cov{display:flex}.home .now .cont{padding:14px 16px}}
@media (max-width:720px){.pcard .pname{flex:0 1 auto}.pcard .chev-btn{margin-left:auto;padding:10px 10px 10px 24px}}

/* ---- home, third pass (11 Nov 2026): today's three, a calmer first day ---- */
.home .dayline{align-items:center}
.day3{list-style:none;display:flex;gap:8px;margin:0;padding:0;flex-wrap:wrap}
.day3 a{display:flex;align-items:center;gap:8px;border:1px solid var(--rule);border-radius:999px;padding:6px 14px 6px 8px;color:var(--ink);text-decoration:none;font-size:13.5px;line-height:1.2;white-space:nowrap}
.day3 a:hover{border-color:var(--accent)}
.day3 .what{color:var(--muted)}
.day3 .tick{flex:none;width:18px;height:18px;border-radius:50%;border:1.6px solid var(--rule-strong);display:inline-block;position:relative}
.day3 .done a{background:var(--paper-2);border-color:transparent}
.day3 .done .tick{background:var(--olive);border-color:var(--olive)}
.day3 .done .tick::after{content:"";position:absolute;left:5px;top:2px;width:4px;height:8px;border-right:2px solid var(--paper);border-bottom:2px solid var(--paper);transform:rotate(45deg)}
.day3 .done b{font-weight:500}
.home .home-cols.week.bare{grid-template-columns:1fr}
.tiles.four .tile .v .unit{font-size:.5em}
@media (max-width:900px){.day3{width:100%}.day3 li{flex:1 1 0;min-width:0}.day3 a{justify-content:flex-start;white-space:normal}}
@media (max-width:560px){.day3{gap:6px}.day3 a{padding:6px 10px 6px 7px;font-size:13px;flex-direction:column;align-items:flex-start;gap:4px;border-radius:var(--radius)}.day3 .what{display:block}}

.pcards{align-items:stretch}
.now .next.first{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:4px 36px;align-items:start}
.now .next.first .label,.now .next.first .acts{grid-column:1 / -1}
.now .next.first .q-stem{max-width:none}
.now .next.first .open{margin:0;padding:2px 0 2px 16px;border-left:2px solid var(--rule-strong);display:flex;flex-direction:column;gap:4px}
.now .next.first .open .op-text{font-family:var(--serif);font-size:16px;line-height:1.5;max-width:none;margin:0}
@media (max-width:900px){.now .next.first{grid-template-columns:1fr;gap:10px}}
