:root{
    /* palette aligned to the "Commonplace" quote tool: warm off-white, forest-green accent */
    --paper:#fafaf8; --surface:#ffffff; --surface-2:#f4f3f1; --raise:#ffffff;
    --ink:#1a1a18; --ink-soft:#4a4844; --muted:#6b6964; --faint:#9a978f;
    --line:#e2e0dc; --line-2:#d6d3cd;
    --accent:#2c5f2d; --accent-bg:#e8f0e8; --on-accent:#ffffff;
    --danger:#a3342a; --danger-bg:#fde8e6; --on-danger:#ffffff;
    --warn:#b35c00; --warn-bg:#fff3e0;
    --ok:#2c5f2d; --ok-bg:#e8f0e8;
    --info:#2a5fa3; --info-bg:#e6eefa;
    --violet:#6a4bb0; --violet-bg:#efeafa;
    --pink:#b0407e; --pink-bg:#fae9f1;
    --font-ui:'DM Sans',-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
    --font-book:'Source Serif 4',"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Times New Roman",serif;
    --radius:9px; --rail:64px;
  }
  @media (prefers-color-scheme:dark){
    :root:not([data-theme="light"]){
      --paper:#171613; --surface:#201e1a; --surface-2:#1b1a16; --raise:#26241f;
      --ink:#ece7dd; --ink-soft:#bdb7ab; --muted:#8f887c; --faint:#6d675d;
      --line:#332f28; --line-2:#413c33;
      --accent:#7fb682; --accent-bg:#182619; --on-accent:#0f1a26;
      --danger:#e08167; --danger-bg:#3a231d; --on-danger:#2a120c;
      --warn:#d99a4e; --warn-bg:#382a16;
      --ok:#7fb682; --ok-bg:#182619;
      --info:#7aa8dd; --info-bg:#182636;
      --violet:#a996e8; --violet-bg:#282039;
      --pink:#e58fb6; --pink-bg:#3a2130;
    }
  }
  *{box-sizing:border-box}
  html,body{margin:0;height:100%}
  body{background:var(--paper);color:var(--ink);font-family:var(--font-ui);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;display:flex;flex-direction:column;min-height:100%}
  .ic{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
  button{font-family:inherit;font-size:inherit;color:inherit;cursor:pointer}

  .topbar{display:flex;align-items:center;gap:14px;height:54px;padding:0 16px;background:var(--surface);border-bottom:.5px solid var(--line);position:sticky;top:0;z-index:40;flex:none}
  .brand{display:flex;align-items:center;gap:10px;min-width:0}
  .brand#bookswitch{cursor:pointer;border-radius:8px;padding:2px 6px 2px 2px}
  .brand#bookswitch:hover{background:var(--surface-2)}
  .bchev{color:var(--muted);flex:none}
  .brand#bookswitch{border:.5px solid var(--line);border-radius:9px}
  .brand#bookswitch:hover{background:var(--raise)}
  .bchev{flex:none;color:var(--muted);transform:rotate(90deg);transition:transform .15s ease}
  #bookswitch[aria-expanded="true"] .bchev{transform:rotate(-90deg)}
  .bookmenu{position:fixed;z-index:240;min-width:230px;max-width:80vw;background:var(--surface);border:.5px solid var(--line);border-radius:12px;box-shadow:0 12px 36px rgba(0,0,0,.24);padding:6px}
  .bmi{display:flex;align-items:center;gap:9px;width:100%;border:none;background:none;border-radius:8px;padding:9px 10px;font-size:13.5px;color:var(--ink);text-align:left;cursor:pointer;font-family:var(--font-ui)}
  .bmi:hover{background:var(--surface-2)}
  .bmi .bmt{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .bmi.cur{color:var(--accent);font-weight:600}
  .bmi.add{color:var(--ink-soft)}
  .bmplus{width:15px;text-align:center;font-weight:700;font-size:16px;line-height:1}
  .bmsep{height:.5px;background:var(--line);margin:5px 4px}
  /* a book row = switch (fills) + per-book actions (rename / archive), revealed on hover or focus */
  .bmrow{display:flex;align-items:center;gap:2px;border-radius:8px}
  .bmrow:hover{background:var(--surface-2)}
  .bmrow .bmi{flex:1;min-width:0}
  .bmrow .bmi:hover{background:none}
  .bmrow.cur .bmi{color:var(--accent);font-weight:600}
  .bmck{margin-left:auto;color:var(--accent)}
  .bmi.static{cursor:default;color:var(--muted)}
  .bma{display:flex;align-items:center;gap:5px;flex:none;border:none;background:none;color:var(--faint);border-radius:7px;padding:7px;cursor:pointer;font-family:var(--font-ui);font-size:12px;font-weight:600;opacity:0;transition:opacity .12s,color .12s}
  .bmrow:hover .bma,.bmrow:focus-within .bma,.bmrow.arch .bma{opacity:1}
  .bma:hover{color:var(--ink);background:var(--raise)}
  .bma.wide{padding:7px 9px;color:var(--ink-soft)}
  .bmhead{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);font-weight:700;padding:6px 10px 3px;font-family:var(--font-ui)}
  .bmin{flex:1;min-width:0;border:1px solid var(--accent);background:var(--paper);color:var(--ink);border-radius:7px;padding:7px 8px;font-size:13.5px;font-family:var(--font-ui);outline:none}
  /* touch has no hover — keep the actions visible so they're reachable */
  @media (hover:none){.bma{opacity:1}}
  .book-empty{display:none;flex-direction:column;gap:8px;padding:44px 20px;text-align:center;color:var(--muted);font-size:14px;line-height:1.55}
  .book-empty b{font-size:17px;color:var(--ink-soft)}
  html[data-emptybook] .book-empty{display:flex}
  html[data-emptybook] .chmeta,html[data-emptybook] .chapprog,html[data-emptybook] #jumpnext{display:none}
  .brand .sw{width:26px;height:26px;border-radius:7px;background:var(--ink);color:var(--paper);display:flex;align-items:center;justify-content:center;flex:none}
  .brand .sw .ic{stroke:var(--paper);width:16px;height:16px}
  .brand b{font-weight:600;font-size:14.5px;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .brand span{color:var(--muted);font-size:11.5px;white-space:nowrap}
  .brand span.dot{margin:0 2px}
  .seg{display:flex;background:var(--surface-2);border:.5px solid var(--line);border-radius:8px;padding:3px}
  .seg button{border:none;background:none;border-radius:6px;padding:5px 12px;font-size:13px;color:var(--muted);white-space:nowrap}
  .seg button.on{background:var(--raise);color:var(--ink);font-weight:500;box-shadow:0 1px 2px rgba(0,0,0,.06);border:.5px solid var(--line)}
  .viewseg{margin-left:12px}   /* view toggle is the rightmost element — top-right corner */
  html:not([data-screen="reader"]) .viewseg{opacity:.35;pointer-events:none}
  .tr{display:flex;align-items:center;gap:10px;margin-left:auto}
  .toolbtns{display:flex;gap:2px}
  .toolbtns button{width:30px;height:30px;border:none;background:none;border-radius:7px;color:var(--ink-soft);display:flex;align-items:center;justify-content:center}
  .toolbtns button:hover:not(:disabled){background:var(--surface-2)}
  .toolbtns button:disabled{color:var(--faint);opacity:.45;cursor:default}
  .toolbtns .ic{width:17px}
  .bookprog{font-size:12px;color:var(--muted);white-space:nowrap}
  .bookprog b{color:var(--ok);font-weight:600}
  .save{display:flex;align-items:center;gap:6px;color:var(--ok);font-size:12.5px;transition:opacity .2s}
  .save{cursor:pointer}
  .save.pulse{opacity:.4}
  .save .ic{width:16px;height:16px}
  /* the chip colours itself from the REAL sync state — never a decorative "synced" */
  .save[data-sync="local"]{color:var(--ok)}
  .save[data-sync="connecting"]{color:var(--muted)}
  .save[data-sync="synced"]{color:var(--ok)}
  .save[data-sync="offline"]{color:var(--accent)}
  .save[data-sync="error"]{color:var(--danger)}
  .av{width:28px;height:28px;border-radius:50%;background:var(--violet-bg);color:var(--violet);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex:none}

  .shell{display:grid;grid-template-columns:var(--rail) 1fr;flex:1;min-height:0}
  .rail{background:var(--surface);border-right:.5px solid var(--line);display:flex;flex-direction:column;align-items:center;padding:12px 0;gap:4px}
  .rail button{width:44px;height:44px;border:none;background:none;border-radius:10px;color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;position:relative;font-size:9.5px}
  .rail button.on{background:var(--accent-bg);color:var(--accent)}
  .rail button:hover:not(.on){background:var(--surface-2);color:var(--ink-soft)}
  .rail .sp{flex:1}
  .rail .badge,.bn .badge{position:absolute;top:4px;right:7px;background:var(--danger);color:var(--on-danger);font-size:9px;line-height:1;padding:2px 4px;border-radius:7px;font-weight:600}
  .badge:empty{display:none}   /* no empty badge circle when the count is 0 */
  .content{min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column}
  .screen{display:none;flex:1;min-height:0}
  html[data-screen="reader"] .screen.reader{display:flex;flex-direction:column}
  html[data-screen="progress"] .screen.progress{display:block;overflow:auto}
  html[data-screen="issues"] .screen.issues{display:block;overflow:auto}
  html[data-screen="changes"] .screen.changes{display:block;overflow:auto}
  html[data-screen="findings"] .screen.findings{display:block;overflow:auto}
  html[data-screen="highlights"] .screen.highlights{display:block;overflow:auto}

  .rgrid{display:grid;grid-template-columns:264px minmax(0,1fr);flex:1;min-height:0}
  .outline{border-right:.5px solid var(--line);background:var(--surface-2);padding:14px 10px 40px;overflow:auto}
  .search{display:flex;align-items:center;gap:7px;background:var(--surface);border:.5px solid var(--line);border-radius:8px;padding:7px 10px;color:var(--faint);font-size:13px;margin-bottom:12px}
  .search:focus-within{border-color:var(--ink-soft)}
  #searchbox{flex:1;min-width:0;border:none;background:none;outline:none;color:var(--ink);font-size:13px;font-family:var(--font-ui);padding:0}
  #searchbox::-webkit-search-cancel-button{display:none}
  .sclear{border:none;background:none;color:var(--faint);cursor:pointer;padding:2px;display:flex;border-radius:5px}
  .sclear:hover{color:var(--ink);background:var(--raise)}
  .sres{padding:9px 9px;border-radius:8px;cursor:pointer;border-bottom:.5px solid var(--line-2)}
  .sres:hover{background:var(--surface-2)}
  .sres .sw{display:block;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);font-weight:700;margin-bottom:3px}
  .sres .sx{display:block;font-size:12.5px;color:var(--ink-soft);line-height:1.45}
  .sres mark{background:color-mix(in srgb,var(--accent) 30%,transparent);color:var(--ink);border-radius:3px;padding:0 1px}
  .grp{font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--faint);padding:12px 8px 5px;font-weight:600}
  .o{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:7px;color:var(--ink-soft);font-size:13.5px}
  .o:hover{background:var(--surface)}
  .o.sub{padding-left:24px;font-size:13px;color:var(--muted)}
  .o.cur{background:var(--accent-bg);color:var(--accent);font-weight:500}
  .o.part{font-weight:700;color:var(--ink);margin-top:10px}   /* a Part is a reviewable unit (its intro), like a chapter — its chapters follow */
  .o.part+.o,.o.part~.o:not(.part){padding-left:20px}
  .o .t{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .st{width:9px;height:9px;border-radius:50%;flex:none;border:1.5px solid var(--line-2)}
  .st.done{background:var(--ok);border-color:var(--ok)}
  .st.doing{background:var(--warn);border-color:var(--warn)}
  .cnt{font-size:10.5px;color:var(--muted);background:var(--surface);border:.5px solid var(--line);border-radius:20px;padding:1px 6px}

  .doc{overflow:auto;padding:0 clamp(18px,4vw,52px) 120px;background:var(--paper)}
  .docwrap{max-width:700px;margin:0 auto}
  .eyebrow{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);font-weight:600;margin:30px 0 0}
  .doc h1{font-family:var(--font-book);font-weight:600;font-size:30px;line-height:1.18;letter-spacing:-.01em;margin:6px 0 6px}
  .chmeta{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12.5px;margin-bottom:14px;flex-wrap:wrap}
  .chmeta .pill{display:inline-flex;align-items:center;gap:5px;border:.5px solid var(--line);border-radius:20px;padding:3px 9px}
  .chmeta .pill b{color:var(--ok)}
  .resume{display:flex;align-items:center;gap:10px;background:var(--accent-bg);border:.5px solid color-mix(in srgb,var(--accent) 25%,transparent);border-radius:10px;padding:10px 13px;margin:14px 0 6px;color:var(--accent);font-size:13px}
  .jumpnext{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin:14px 0 6px;border:.5px solid var(--accent);background:var(--accent-bg);color:var(--accent);border-radius:10px;padding:11px 14px;font-size:13.5px;font-weight:600;font-family:var(--font-ui);cursor:pointer}
  .jumpnext:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 16%,var(--paper))}
  .jumpnext.alldone{border-color:var(--ok);color:var(--ok);background:var(--ok-bg);cursor:default}
  .resume .ic{width:17px;height:17px}.resume b{font-weight:600}.resume .x{margin-left:auto;color:var(--accent);opacity:.6;cursor:pointer}

  .chapprog{position:sticky;top:0;z-index:8;background:var(--paper);padding:12px 0 12px;margin:6px 0 18px;border-bottom:.5px solid var(--line)}
  .cp-top{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink-soft);margin-bottom:8px}
  .cp-top .cpc{margin-left:auto;font-family:var(--font-book);font-size:18px;font-weight:600;color:var(--ink)}
  .cp-bar{height:7px;background:var(--surface-2);border:.5px solid var(--line);border-radius:5px;overflow:hidden}
  .cp-bar i{display:block;height:100%;background:var(--ok);transition:width .25s}
  .cp-foot{display:flex;align-items:center;gap:12px;margin-top:8px}
  .cp-break{font-size:11.5px;color:var(--muted)}

  /* paragraph gutter — quote-tool button style */
  .mblock{position:relative;padding-right:76px;margin:0 0 18px;min-height:74px;transition:background .3s}
  .mblock.flash{background:color-mix(in srgb,var(--accent) 10%,transparent);border-radius:8px}
  .pgutter{position:absolute;right:0;top:4px;display:flex;flex-direction:column;gap:8px;width:64px}
  .pbtn{height:30px;padding:0 6px;border-radius:6px;border:1px solid var(--line-2);background:var(--surface);cursor:pointer;font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;color:var(--muted);white-space:nowrap;transition:background .1s,border-color .1s,color .1s}
  .pbtn.pdone:disabled,.pbtn.pdone.blocked{opacity:.4;cursor:not-allowed;background:var(--surface);border-color:var(--line-2);color:var(--faint)}
  .pbtn:hover{background:var(--surface-2);border-color:var(--ink-soft);color:var(--ink-soft)}
  .pbtn .ic{width:14px;height:14px}
  .mblock[data-done] .pdone{background:var(--ok-bg);border-color:var(--ok);color:var(--ok)}
  .mblock[data-status="comeback"] .pmark{background:var(--info-bg);border-color:var(--info);color:var(--info)}
  .mblock[data-status="rewrite"] .pmark{background:var(--warn-bg);border-color:var(--warn);color:var(--warn)}
  .mblock[data-status="factcheck"] .pmark{background:var(--violet-bg);border-color:var(--violet);color:var(--violet)}
  .mblock[data-status="cut"] .pmark{background:var(--danger-bg);border-color:var(--danger);color:var(--danger)}
  .mblock[data-status="love"] .pmark{background:var(--pink-bg);border-color:var(--pink);color:var(--pink)}
  .ptext{font-family:var(--font-book);font-size:18px;line-height:1.72;color:var(--ink);border-radius:7px;padding:3px 10px;border-left:2px solid transparent;outline:none;transition:background .1s,border-color .1s;cursor:text}
  .ptext:hover{background:color-mix(in srgb,var(--accent) 5%,transparent)}
  @media (max-width:1023px){html[lang] .ptext:hover{background:transparent}}
  .ptext:focus{background:var(--surface);border-left-color:var(--accent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 22%,transparent)}
  .mblock[data-type="h2"]{margin-top:30px}
  .mblock[data-type="h2"] .ptext{font-size:22px;font-weight:600;line-height:1.28}
  .mblock[data-type="h3"]{margin-top:22px}
  .mblock[data-type="h3"] .ptext{font-size:17px;font-weight:600}
  /* structural blocks: a chapter title / part label are blocks too, edited like anything else */
  .mblock[data-type="chapter"]{margin-top:42px}
  .mblock[data-type="chapter"] .ptext{font-family:var(--font-book);font-size:30px;font-weight:600;line-height:1.18;letter-spacing:-.01em}
  .mblock[data-type="part"]{margin-top:34px}
  /* list items: real structure in front/back matter, each its own reviewable block */
  .mblock[data-type="lb"] .ptext,.mblock[data-type="ln"] .ptext{position:relative;padding-left:34px}
  .mblock[data-type="lb"] .ptext::before{content:"•";position:absolute;left:16px;color:var(--muted)}
  .mblock[data-type="ln"] .ptext::before{content:"–";position:absolute;left:14px;color:var(--muted)}
  .mblock[data-type="lb"],.mblock[data-type="ln"]{margin-top:2px}
  .mblock[data-type="part"] .ptext{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);font-weight:600}
  /* create structure directly (an empty book has nothing to promote) */
  /* the gate covers everything and is the topmost layer; the app is not merely hidden but
     unreachable, and no manuscript exists in this file to reveal anyway */
  .gate{position:fixed;inset:0;z-index:900;display:none;align-items:center;justify-content:center;
    padding:24px;background:var(--paper);font-family:var(--font-ui)}
  html[data-auth="out"] .gate,html[data-auth="denied"] .gate{display:flex}
  html[data-auth="out"] .shell,html[data-auth="denied"] .shell,
  html[data-auth="out"] .bottomnav,html[data-auth="denied"] .bottomnav{display:none!important}
  .gate-card{max-width:380px;width:100%;text-align:center}
  .gate-mark{width:54px;height:54px;border-radius:14px;background:var(--ink);color:var(--paper);
    display:flex;align-items:center;justify-content:center;margin:0 auto 18px}
  .gate-card h1{font-family:var(--font-book);font-size:27px;font-weight:600;margin:0 0 8px;color:var(--ink)}
  .gate-sub{font-size:14px;color:var(--muted);margin:0 0 22px;line-height:1.55}
  .gate-btn{min-height:44px;padding:0 20px;font-size:14px}
  .gate-deny{font-size:13.5px;color:var(--danger);margin:0 0 14px;line-height:1.5}
  .gate-foot{font-size:12px;color:var(--faint);margin:26px 0 0;line-height:1.5}
  .syncdlg{position:fixed;inset:0;z-index:500;display:flex;align-items:center;justify-content:center;padding:18px;background:rgba(0,0,0,.34)}
  .syncdlg[hidden]{display:none}
  .sd-card{background:var(--surface);border:.5px solid var(--line);border-radius:14px;box-shadow:0 18px 50px rgba(0,0,0,.3);
    width:100%;max-width:460px;padding:16px 16px 14px;font-family:var(--font-ui)}
  .sd-head{display:flex;align-items:center;justify-content:space-between;font-size:15px;font-weight:700;color:var(--ink);margin-bottom:8px}
  .sd-x{border:none;background:none;color:var(--faint);cursor:pointer;display:flex;padding:3px;border-radius:6px}
  .sd-x:hover{color:var(--ink);background:var(--raise)}
  .sd-p{font-size:13px;color:var(--ink-soft);line-height:1.5;margin:0 0 9px}
  #sd-status{font-weight:600;color:var(--ink)}
  .sd-ta{width:100%;min-height:104px;resize:vertical;border:.5px solid var(--line-2);border-radius:9px;background:var(--paper);
    color:var(--ink);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;padding:9px;outline:none}
  .sd-ta:focus{border-color:var(--ink-soft)}
  .sd-hint{font-size:11.5px;color:var(--muted);line-height:1.45;margin:8px 0 12px}
  .sd-hint code{font-family:ui-monospace,Menlo,monospace;font-size:11px}
  .sd-auth{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
    margin:10px 0 2px;padding:10px;border:.5px solid var(--line-2);border-radius:9px;background:var(--raise)}
  .sd-who{font-size:12.5px;color:var(--ink-soft);flex:1;min-width:160px}
  .sd-act{display:flex;justify-content:flex-end;gap:8px}
  /* accept/reject a single change — small dedicated targets, never the redline itself */
  .chgact{display:inline-flex;gap:2px;margin:0 2px;vertical-align:baseline;user-select:none}
  .ca{border:.5px solid var(--line-2);background:var(--surface);color:var(--muted);border-radius:5px;
    min-width:18px;height:18px;line-height:1;padding:0 3px;font-size:11px;cursor:pointer;font-family:var(--font-ui)}
  .ca.ok:hover{background:var(--ok);color:var(--on-accent,#fff);border-color:var(--ok)}
  .ca.no:hover{background:var(--danger);color:var(--on-danger,#fff);border-color:var(--danger)}
  html[data-w] .ca{min-width:26px;height:26px;font-size:13px}      /* touch-sized on narrow */
  @media (min-width:1024px){html[lang] .ca{min-width:18px;height:18px;font-size:11px}}
  /* the per-change chips only make sense while you are looking at the redline */
  html:not([data-mode="markup"]) .chgact{display:none}
  .allchg{display:none;gap:6px}
  html[data-mode="markup"] .allchg{display:inline-flex}
  .allchg button{border:.5px solid var(--line-2);background:var(--raise);color:var(--ink-soft);border-radius:99px;
    padding:3px 10px;font-size:12px;font-weight:600;font-family:var(--font-ui);cursor:pointer}
  .allchg button:hover{background:var(--surface-2);color:var(--ink)}
  .allchg button.confirm{background:var(--accent);color:var(--on-accent,#fff);border-color:var(--accent)}
  .pill.act,.metric.act{cursor:pointer}
  .pill.act:hover{background:var(--surface-2);border-color:var(--ink-soft)}
  .metric.act:hover{background:var(--surface-2)}
  /* Pipeline findings: violet, and never the amber/red of YOUR flags — the two layers
     must not be mistakable for one another at a glance. */
  .mblock[data-findings]{box-shadow:inset 3px 0 0 var(--violet,#7c5cd6)}
  .pfind{background:var(--violet-bg,#efeaff)!important;color:var(--violet,#7c5cd6)!important;
    border-color:color-mix(in srgb,var(--violet,#7c5cd6) 40%,transparent)!important;font-size:10.5px!important}
  .f-bar{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 12px}
  .f-prov{font-size:12px;color:var(--muted);background:var(--raise);border:.5px solid var(--line-2);
    border-radius:9px;padding:9px 11px;margin:0 0 12px;line-height:1.5;font-family:var(--font-ui)}
  .f-prov b{color:var(--ink)}
  .f-src{display:block;margin-top:6px;font-family:ui-monospace,Menlo,monospace;font-size:10.5px;opacity:.8}
  .f-focus{font-size:12.5px;color:var(--ink-soft);background:var(--raise);border:.5px solid var(--line-2);
    border-radius:9px;padding:8px 11px;margin:0 0 12px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .issue.find{border-left:3px solid var(--violet,#7c5cd6)}
  .tag.fk{background:var(--violet-bg,#efeaff);color:var(--violet,#7c5cd6)}
  .tag.sev{background:color-mix(in srgb,var(--danger) 14%,transparent);color:var(--danger)}
  .tag.warn{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent)}
  .f-off{font-size:12px;color:var(--muted);border-left:2px solid var(--line-2);padding:2px 0 2px 9px;margin:8px 0 0}
  .fsep{width:1px;align-self:stretch;background:var(--line-2);margin:0 3px}
  .mblock[data-off]{display:none}
  /* drag a manuscript file anywhere onto the app */
  html[data-dropping] .content::after{content:"Drop a .md file to import it";position:fixed;inset:0;z-index:400;
    display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--paper) 82%,transparent);
    border:3px dashed var(--accent);border-radius:14px;font-family:var(--font-ui);font-size:16px;font-weight:600;color:var(--ink)}          /* belongs to a different chapter than the one you're in */
  .addrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:34px 0 8px;padding-top:16px;border-top:1px dashed var(--line-2)}
  .addrow span{font-size:12.5px;color:var(--muted);font-family:var(--font-ui)}
  .addrow button,.be-acts button{border:.5px solid var(--line-2);background:var(--raise);color:var(--ink);border-radius:8px;min-height:34px;padding:0 12px;font-size:13px;font-weight:600;font-family:var(--font-ui);cursor:pointer}
  .addrow button:hover,.be-acts button:hover{background:var(--surface-2);border-color:var(--ink-soft)}
  .be-acts{display:flex;gap:8px;margin-top:12px}
  html[data-emptybook] .addrow{display:none}
  @media (max-width:1023px){html[lang] .mblock[data-type="chapter"] .ptext{font-size:25px}}
  .o.sub2{padding-left:38px}
  .mblock[data-done] .ptext{color:color-mix(in srgb,var(--ink) 82%,var(--paper))}
  .mblock[data-status="cut"] .ptext{text-decoration:line-through;text-decoration-color:color-mix(in srgb,var(--danger) 55%,transparent);color:var(--muted)}
  .mblock[data-removed] .ptext{text-decoration:line-through;color:var(--muted);opacity:.55;pointer-events:none}
  .mblock[data-removed] .pgutter{opacity:.35;pointer-events:none}
  .removedbar{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--danger);margin:6px 0 0 0;padding:7px 11px;background:var(--danger-bg);border-radius:8px}
  .removedbar .ic{width:14px}
  .removedbar button{margin-left:auto;border:.5px solid var(--danger);background:none;color:var(--danger);border-radius:6px;padding:3px 11px;font-size:12px;font-weight:600}

  .markmenu,.histpanel{position:fixed;z-index:200;background:var(--surface);border:.5px solid var(--line-2);border-radius:12px;box-shadow:0 12px 34px rgba(0,0,0,.20);padding:5px}
  .markmenu{min-width:210px}
  .markmenu[hidden],.histpanel[hidden]{display:none}
  .markmenu .mtitle{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);padding:7px 10px 3px;font-weight:600}
  .markmenu button{display:flex;align-items:center;gap:10px;width:100%;border:none;background:none;border-radius:8px;padding:9px 10px;font-size:13.5px;color:var(--ink);text-align:left}
  .markmenu button:hover{background:var(--surface-2)}
  .markmenu button.cur{background:var(--surface-2)}
  .markmenu button.cur::after{content:"";margin-left:auto;width:6px;height:6px;border-radius:50%;background:var(--accent)}
  .markmenu button.confirm{background:var(--danger-bg);color:var(--danger)!important;font-weight:700}
  .markmenu .ic{width:16px;height:16px}
  .markmenu hr{border:none;border-top:.5px solid var(--line);margin:4px 6px}

  .histpanel{width:308px;max-width:calc(100vw - 16px);padding:8px;max-height:72vh;overflow:auto}
  .hp-head{display:flex;align-items:baseline;gap:8px;padding:6px 8px 10px;font-size:13px;font-weight:600}
  .hp-hint{font-size:11px;color:var(--muted);font-weight:400;margin-left:auto}
  .hist{display:flex;align-items:center;gap:9px;padding:8px 9px;border-radius:8px;font-size:12.5px;color:var(--ink-soft);cursor:pointer}
  .hist:hover{background:var(--surface-2)}
  .hist.cur{background:var(--accent-bg);color:var(--accent)}
  .hist .ic{width:14px;color:var(--muted)}.hist.cur .ic{color:var(--accent)}
  .hist .ht{margin-left:auto;font-size:10.5px;color:var(--faint)}

  ins{text-decoration:none}del{text-decoration:none}
  html[data-mode="markup"] ins{color:var(--accent);text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:2px}
  html[data-mode="markup"] del{color:var(--danger);text-decoration:line-through;text-decoration-thickness:1.5px}
  html[data-mode="final"] del{display:none}
  html[data-mode="final"] ins{color:inherit;text-decoration:none}
  html[data-mode="original"] ins{display:none}
  html[data-mode="original"] del{color:inherit;text-decoration:none}
  .edit{position:relative;border-radius:3px}
  html[data-mode="markup"] .edit{padding:0 1px}
  /* a comment = a yellow highlighter over the words; tapping the text still just edits it */
  .hascomment{background:#ffe08a;color:#2a2410;border-radius:2px;padding:0 1px;-webkit-box-decoration-break:clone;box-decoration-break:clone;text-decoration:none;cursor:text}
  @media (prefers-color-scheme:dark){.hascomment{background:#e7c453;color:#20180a}}
  .hascomment.love{background:#f8c6da;color:#4a0f2b}
  @media (prefers-color-scheme:dark){.hascomment.love{background:#c77ba0;color:#2a0716}}
  /* comment card */
  .cthread{background:var(--surface);border:.5px solid var(--line-2);border-left:3px solid #e0a800;border-radius:8px;padding:9px 12px;box-shadow:0 2px 10px rgba(0,0,0,.07)}
  .cthread .ct-q{font-family:var(--font-book);font-size:11.5px;color:var(--ink-soft);opacity:.9;margin-bottom:5px}
  .cthread .ct-note{font-family:var(--font-ui);font-size:13px;line-height:1.5;color:var(--ink);white-space:pre-wrap;word-break:break-word}
  .cthread .ct-ta{width:100%;min-height:52px;font-family:var(--font-ui);font-size:13px;border:.5px solid var(--line-2);border-radius:7px;padding:7px 9px;background:var(--paper);color:var(--ink);outline:none;resize:vertical;box-sizing:border-box}
  @media (max-width:1023px){html[lang] .cthread .ct-ta{font-size:16px;min-height:64px}  /* >=16px so iOS Safari doesn't auto-zoom the page when the comment editor is focused */}
  .cthread .ct-act{display:flex;gap:14px;justify-content:flex-end;align-items:center;margin-top:7px}
  .cthread .ct-link{border:none;background:none;font-family:var(--font-ui);font-size:12px;font-weight:600;color:var(--ink-soft);cursor:pointer;padding:3px 2px}
  .cthread .ct-link.save{color:var(--accent)}.cthread .ct-link.del{color:var(--danger)}.cthread .ct-link.acc{color:var(--ok)}.cthread .ct-link.confirm{color:var(--danger);font-weight:800;text-decoration:underline}
  .cthread .ct-status{margin-right:auto;display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:600;color:var(--ok)}
  .cthread.accepted{border-left-color:var(--ok);background:var(--ok-bg)}
  .cthread.loved{border-left-color:#d64a86}
  .cthread.loved .ct-q{color:#c03a72;opacity:1}
  .cthread.flash{box-shadow:0 0 0 3px #ffd24d}
  /* DESKTOP: a right-hand comment lane beside the prose (prose narrows to make room), cards aligned to their paragraph */
  @media (min-width:1024px){html[lang] .docwrap{max-width:600px;margin-left:clamp(8px,2vw,30px);margin-right:auto;position:relative}}
  @media (min-width:1024px){html[lang] .cthread{position:absolute;left:620px;width:210px}}
  /* MOBILE: cards render inline under the paragraph, only when the bottom Comments toggle is on */
  @media (max-width:1023px){html[lang] .cthread{margin:-2px 0 16px 6px}}
  /* highlight-to-comment chip — appears at the selection only on a deliberate highlight */
  #cmtbtn{position:fixed;z-index:230;display:inline-flex;align-items:stretch;background:var(--accent);color:var(--on-accent);border-radius:8px;font-size:13px;font-weight:600;font-family:var(--font-ui);box-shadow:0 6px 20px rgba(0,0,0,.28);overflow:hidden}
  #cmtbtn button{display:inline-flex;align-items:center;gap:6px;background:none;border:none;color:inherit;font:inherit;font-weight:600;padding:8px 13px;cursor:pointer;white-space:nowrap}
  #cmtbtn button+button{border-left:1px solid color-mix(in srgb,var(--on-accent) 32%,transparent)}
  #cmtbtn .hrt{font-size:13px;line-height:1}
  #cmtbtn .ic{stroke:currentColor}
  #cmtbtn[hidden]{display:none}
  #cmtbtn:hover{filter:brightness(1.05)}
  @media (max-width:1023px){html[lang] #cmtbtn button{padding:12px 16px;font-size:14px}}
  /* formatting bar — shown while a paragraph is being edited (bold/italic + block type) */
  /* docked to the manuscript column only (JS sets left/width/bottom) — never overlaps the nav */
  #fmtbar{position:fixed;z-index:120;display:flex;align-items:center;gap:7px;overflow-x:auto;padding:8px 12px calc(8px + env(safe-area-inset-bottom));background:var(--surface);border:1px solid var(--line-2);border-bottom:none;border-radius:12px 12px 0 0;box-shadow:0 -8px 24px rgba(0,0,0,.12)}
  #fmtbar[hidden]{display:none}
  #fmtbar button{border:.5px solid var(--line-2);background:var(--raise);color:var(--ink);border-radius:8px;min-height:40px;padding:0 13px;font-size:13.5px;font-weight:600;font-family:var(--font-ui);display:flex;align-items:center;justify-content:center;white-space:nowrap;cursor:pointer}
  #fmtbar button:hover{background:var(--surface-2);border-color:var(--ink-soft)}
  #fmtbar button.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
  #fmtbar button{flex:none}
  #fmtbar .fb-ic{width:42px;padding:0;font-size:16px}
  #fmtbar .fb-ic i{font-style:italic;font-weight:700}
  #fmtbar .fb-sep{width:1px;height:22px;background:var(--line-2);margin:0 4px;flex:none}
  @media (min-width:1024px){html[lang] #fmtbar{justify-content:center;gap:8px}}
  .cmt-ta{width:100%;min-height:66px;font-family:var(--font-ui);font-size:13px;border:.5px solid var(--line-2);border-radius:8px;padding:8px 10px;background:var(--surface);color:var(--ink);outline:none;resize:vertical;box-sizing:border-box}
  .cmt-q{font-family:var(--font-book);font-size:13px;color:var(--ink-soft);border-left:2px solid var(--warn);padding:2px 0 2px 10px;margin:0 0 8px}
  .cmt-row{display:flex;gap:8px;justify-content:flex-end;margin-top:9px}

  .card{border:.5px solid var(--line);border-radius:10px;background:var(--surface);padding:12px;margin-bottom:10px}
  .card.cmt{border-left:2px solid var(--warn);border-radius:0 10px 10px 0}
  .card .ch{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--ink-soft);margin-bottom:6px}
  .tag{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:20px}
  .tag.comeback{background:var(--info-bg);color:var(--info)}.tag.rewrite{background:var(--warn-bg);color:var(--warn)}.tag.factcheck{background:var(--violet-bg);color:var(--violet)}.tag.cut{background:var(--danger-bg);color:var(--danger)}.tag.love{background:var(--pink-bg);color:var(--pink)}.tag.done{background:var(--ok-bg);color:var(--ok)}.tag.note{background:var(--warn-bg);color:var(--warn)}
  .tag .hrt{font-size:11px;line-height:1}
  .card .body{font-size:13px;line-height:1.5;color:var(--ink)}
  .btn{border:1px solid var(--line-2);background:var(--surface);border-radius:6px;padding:8px 12px;font-size:13px;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:6px;font-weight:600}
  .btn:hover{background:var(--surface-2)}
  .btn.pri{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
  .btn.full{width:100%}.btn.sm{padding:7px 11px;font-size:12px}
  .btn.confirm{background:var(--danger-bg);border-color:var(--danger);color:var(--danger);font-weight:700}

  .wrap{max-width:900px;margin:0 auto;padding:26px clamp(18px,5vw,40px) 90px}
  .h{font-family:var(--font-book);font-size:26px;font-weight:600;margin:0 0 4px}
  .sub{color:var(--muted);font-size:14px;margin:0 0 22px;max-width:640px}
  .stats{display:grid;grid-template-columns:auto 1fr 1fr 1fr;gap:14px;align-items:center;background:var(--surface);border:.5px solid var(--line);border-radius:14px;padding:18px 20px;margin-bottom:16px}
  .ring{width:96px;height:96px;flex:none}
  .metric .v{font-size:26px;font-weight:600;font-family:var(--font-book)}.metric .l{font-size:12px;color:var(--muted)}
  .resumebig{display:flex;align-items:center;gap:14px;background:var(--accent-bg);border:.5px solid color-mix(in srgb,var(--accent) 22%,transparent);border-radius:14px;padding:16px 18px;margin-bottom:20px}
  .resumebig .ic{width:22px;height:22px;color:var(--accent)}.resumebig .t{flex:1;min-width:0}.resumebig .t b{font-size:15px}.resumebig .t div{font-size:12.5px;color:var(--ink-soft)}
  .sech{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);font-weight:600;margin:24px 4px 10px}
  .markchips{display:flex;flex-wrap:wrap;gap:9px}
  .mchip{display:inline-flex;align-items:center;gap:7px;border:.5px solid var(--line-2);background:var(--surface);border-radius:20px;padding:7px 13px;font-size:13px;color:var(--ink-soft);cursor:pointer}
  .mchip:hover{background:var(--surface-2)}.mchip .ic{width:15px;height:15px}.mchip b{font-weight:600;color:var(--ink)}
  .mchip.comeback .ic{color:var(--info)}.mchip.rewrite .ic{color:var(--warn)}.mchip.factcheck .ic{color:var(--violet)}.mchip.cut .ic{color:var(--danger)}.mchip.love .ic{color:var(--pink)}
  .ptable{border:.5px solid var(--line);border-radius:13px;overflow:hidden;background:var(--surface);margin-top:8px}
  .prow{display:grid;grid-template-columns:20px 1fr 150px 66px 66px 84px;gap:12px;align-items:center;padding:12px 16px;border-top:.5px solid var(--line);font-size:14px}
  .prow.head{border-top:none;background:var(--surface-2);color:var(--muted);font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;font-weight:600}
  .prow .nm{font-weight:500}.prow .nm small{display:block;color:var(--muted);font-weight:400;font-size:12px}
  .barwrap{display:flex;align-items:center;gap:8px}
  .bar{height:6px;flex:1;background:var(--surface-2);border:.5px solid var(--line);border-radius:5px;overflow:hidden}.bar i{display:block;height:100%;background:var(--ok)}
  .barwrap span{font-size:11px;color:var(--muted);width:30px;text-align:right;font-variant-numeric:tabular-nums}
  .prow .num{color:var(--ink-soft)}
  .go{color:var(--accent);font-size:12.5px;font-weight:500;text-decoration:none;display:inline-flex;align-items:center;gap:3px;justify-content:flex-end}
  .chip2{font-size:11px;font-weight:600;padding:2px 9px;border-radius:20px;justify-self:start}
  .chip2.todo{background:var(--surface-2);color:var(--muted);border:.5px solid var(--line)}

  .filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
  .fc{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line-2);background:var(--surface);border-radius:20px;padding:6px 13px;font-size:12.5px;color:var(--ink-soft)}
  .fc b{font-weight:700}
  .fc.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
  .issue{border:.5px solid var(--line);border-radius:13px;background:var(--surface);padding:15px 16px;margin-bottom:12px}
  .issue .top{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:9px}
  .issue .top .src{font-size:12px;color:var(--muted);margin-left:auto}
  .anchor{font-family:var(--font-book);font-size:15px;color:var(--ink);border-left:2px solid var(--line-2);padding:2px 0 2px 12px;margin:0 0 12px;line-height:1.55}
  .hl-note{font-family:var(--font-ui);font-size:13px;color:var(--ink-soft);line-height:1.5;margin:0 0 12px;padding:2px 0 2px 12px;border-left:2px solid var(--warn);white-space:pre-wrap;word-break:break-word}
  .hl-ta{width:100%;min-height:62px;font-family:var(--font-ui);font-size:14px;border:.5px solid var(--line-2);border-radius:8px;padding:8px 10px;margin:0 0 12px;background:var(--surface);color:var(--ink);outline:none;resize:vertical;box-sizing:border-box}
  @media (max-width:1023px){html[lang] .hl-ta{font-size:16px}}
  .issue .foot{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
  .emptybig{text-align:center;padding:48px 20px;color:var(--muted)}
  .emptybig .ic{width:30px;height:30px;color:var(--faint);margin-bottom:10px}
  .emptybig .t{font-size:15px;font-weight:600;color:var(--ink-soft)}
  .emptybig p{font-size:13px;max-width:380px;margin:6px auto 0;line-height:1.55}

  .bottomnav{display:none}.scrim{display:none}
  @media (max-width:1023px){html[lang] .shell{grid-template-columns:1fr}}
  @media (max-width:1023px){html[lang] .rail{display:none}}
  @media (max-width:1023px){html[lang] .bookprog{display:none}}
  @media (max-width:1023px){html[lang] .save .lbl{display:none}}
  @media (max-width:1023px){html[lang] .content{padding-bottom:64px}}
  @media (max-width:1023px){html[lang] .rgrid{grid-template-columns:1fr}}
  @media (max-width:1023px){html[lang] .doc{padding:0 18px 40px}}
  @media (max-width:1023px){html[lang] .doc h1{font-size:25px}}
  @media (max-width:1023px){html[lang] .ptext{font-size:17px}}
  @media (max-width:1023px){html[lang] .mblock{padding-right:74px;min-height:94px}}
  @media (max-width:1023px){html[lang] .pbtn{height:40px}}
  @media (max-width:1023px){html[lang] .stats{grid-template-columns:1fr 1fr;gap:16px}}
  @media (max-width:1023px){html[lang] .stats .ring{grid-column:1/-1;justify-self:center}}
  @media (max-width:1023px){html[lang] .prow{grid-template-columns:16px 1fr auto;gap:10px}}
  @media (max-width:1023px){html[lang] .prow:not(.head){cursor:pointer}}
  @media (max-width:1023px){html[lang] .prow .barcell,html[lang] .prow .edm,html[lang] .prow .go,html[lang] .prow.head .hc,html[lang] .prow.head>span:last-child{display:none}}
  @media (max-width:1023px){html[lang] .outline.drawer{position:fixed;top:54px;bottom:0;left:0;width:290px;max-width:85vw;z-index:60;transform:translateX(-105%);transition:transform .22s ease;box-shadow:0 10px 40px rgba(0,0,0,.25)}}
  @media (max-width:1023px){html[lang] .outline.drawer.open{transform:none}}
  @media (max-width:1023px){html[lang][data-drawer="open"] .scrim{display:block;position:fixed;inset:54px 0 0 0;background:rgba(0,0,0,.35);z-index:55}}
  @media (max-width:1023px){html[lang] .bottomnav{display:flex;position:fixed;bottom:0;left:0;right:0;height:60px;background:var(--surface);border-top:.5px solid var(--line);z-index:50;justify-content:space-around;align-items:center}}
  .bn{border:none;background:none;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--muted);font-size:10px;position:relative;padding:6px 12px}
  .bn.on{color:var(--accent)}.bn .ic{width:22px;height:22px}
  .hamb{display:none}
  @media (max-width:1023px){html[lang] .hamb{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:none;background:none;border-radius:8px;color:var(--ink)}}
  /* mobile = ONE top bar: ☰ + view toggle + undo/redo; desktop-only chrome hidden */
  /* the last 11px, taken from the spacing rather than from any more content */
  @media (max-width:1023px){html[lang] .topbar{gap:4px;padding:0 6px}}
  /* The book switcher is navigation, not branding: it is the only way to reach another
     manuscript, so hiding it on narrow screens stranded any book imported from a phone.
     It stays, and the title truncates instead - the machinery for that is already here
     (.brand min-width:0, .brand b text-overflow:ellipsis). */
  /* Measured at 386px: the four clusters want ~446px, so something has to give. The book
     TITLE goes — it was already being crushed to 0px, so displaying it was a fiction, and the
     open book is still named in the switcher menu (with a tick) and on the Progress screen.
     What stays is the control itself: icon + chevron, at a size a thumb can hit. */
  @media (max-width:1023px){html[lang] .brand#bookswitch{flex:0 0 auto;min-width:44px;padding:2px 4px;gap:2px}}
  @media (max-width:1023px){html[lang] .brand#bookswitch b{display:none}}
  /* and the remaining width is bought back from the two clusters that can spare it */
  @media (max-width:1023px){html[lang] .toolbtns button{width:28px;height:28px}}
  /* the chip keeps its icon on narrow (rule above drops only the words): it is the one
     place the app tells you whether your work has actually reached the cloud. #cmtBtn stays
     hidden - the Highlights screen in the bottom nav is the fuller view of the same thing. */
  @media (max-width:1023px){html[lang] #cmtBtn{display:none}}
  @media (max-width:1023px){html[lang] .save{padding:4px 6px;gap:0}}
  @media (max-width:1023px){html[lang] .viewseg{margin-left:4px}}
  @media (max-width:1023px){html[lang] .viewseg button{min-height:36px;padding:6px 6px;font-size:11.5px;min-width:0}}
  /* three full words do not fit beside the switcher and the tools at 386px; the mode is still
     named, just shorter. Measured, not guessed: 156px -> ~110px, which is the deficit. */
  .viewseg .sm{display:none}
  @media (max-width:1023px){html[lang] .viewseg .lg{display:none}
    html[lang] .viewseg .sm{display:inline}}
  /* popovers become bottom sheets on mobile */
  @media (max-width:1023px){html[lang] .markmenu,html[lang] .histpanel,html[lang] .bookmenu{left:0!important;right:0!important;top:auto!important;bottom:0!important;width:auto!important;max-width:none!important;min-width:0!important;border-radius:16px 16px 0 0;box-shadow:0 -10px 30px rgba(0,0,0,.34);max-height:82vh;overflow:auto;padding:6px 14px calc(14px + env(safe-area-inset-bottom))!important}}
  @media (max-width:1023px){html[lang] .markmenu::before,html[lang] .histpanel::before,html[lang] .bookmenu::before{content:"";display:block;width:38px;height:4px;border-radius:2px;background:var(--line-2);margin:6px auto 10px}}
  @media (max-width:1023px){html[lang] .markmenu button{min-height:48px;font-size:15px;padding:13px 12px;border-radius:9px}}
  @media (max-width:1023px){html[lang] .markmenu .mtitle{font-size:11px;padding:8px 8px 4px}}
  @media (max-width:1023px){html[lang] .histpanel .hist{min-height:48px;font-size:14px}}
  @media (max-width:1023px){html[lang] .cmt-ta{min-height:88px;font-size:16px}}
  .sheetback{display:none;position:fixed;inset:0;background:rgba(0,0,0,.42);z-index:190}
  @media (max-width:1023px){html[lang] .sheetback.on{display:block}}

/* backup + recovery controls in the sync dialog */
.sd-backup{margin:14px 0 4px;padding:12px;border:.5px solid var(--line-2);border-radius:9px;background:var(--raise)}
.sd-bhead{font-size:11px;letter-spacing:.11em;text-transform:uppercase;color:var(--faint);font-weight:700;margin-bottom:7px}
.sd-brow{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.sd-snaps{margin-top:10px;max-height:190px;overflow:auto;border-top:.5px solid var(--line-2);padding-top:8px}
.sd-snap{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 2px;font-size:12.5px;color:var(--ink-soft)}
.sd-snap+.sd-snap{border-top:.5px solid var(--line-2)}
.sd-snap b{color:var(--ink);font-weight:600}

/* per-paragraph version history */
#revpanel{width:300px}
#revpanel #revlist{max-height:280px;overflow:auto}
.rev-row{padding:9px 10px;border-bottom:.5px solid var(--line-2);cursor:pointer}
.rev-row:hover{background:var(--raise)}
.rev-when{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);font-weight:700}
.rev-text{font-size:13px;color:var(--ink-soft);margin-top:3px;line-height:1.45;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.rev-empty{padding:12px 10px;font-size:13px;color:var(--muted)}
