@font-face{
  font-family:"Space Grotesk";
  src:url("/_static/fonts/space-grotesk.woff2") format("woff2");
  font-weight:300 700;font-display:swap;font-style:normal;
}

:root{
  --fg:#1a1c1e;--muted:#6b7280;--bg:#fbfbfa;--soft:#f3f3f1;--line:#e6e6e1;
  --accent:#5b4ef0;--accent-soft:rgba(91,78,240,.10);--wanted:#cf222e;--live:#0f9d6b;
  --paper:#ffffff;--measure:72ch;
  --font-ui:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --font-display:"Space Grotesk",var(--font-ui);
  --font-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --shadow:0 6px 24px -8px rgba(20,22,28,.18);
}
@media(prefers-color-scheme:dark){:root{
  --fg:#e7e9ee;--muted:#98a2b3;--bg:#0e1014;--soft:#171a21;--line:#262b35;
  --accent:#8b80ff;--accent-soft:rgba(139,128,255,.16);--wanted:#ff7b72;--live:#38d39f;
  --paper:#13161c;--shadow:0 8px 28px -10px rgba(0,0,0,.55);
}}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
::selection{background:var(--accent-soft)}
body{margin:0;font:16px/1.7 var(--font-ui);color:var(--fg);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;line-height:1.2;letter-spacing:-.015em;margin:1.4em 0 .5em;color:var(--fg)}
h1{font-size:1.9rem}h2{font-size:1.4rem}h3{font-size:1.15rem}

/* reading-progress bar */
#tb-progress{position:fixed;top:0;left:0;height:2px;width:0;background:var(--accent);z-index:80;transition:width .1s linear}

/* header */
header{position:sticky;top:0;z-index:40;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(1.4) blur(8px)}
.bar{max-width:1100px;margin:0 auto;padding:.6rem 1.2rem;display:flex;gap:1rem;align-items:center;flex-wrap:wrap}
.bar a.brand{font-family:var(--font-display);font-weight:600;font-size:1.12rem;letter-spacing:-.01em;text-decoration:none;color:var(--fg);display:inline-flex;align-items:center;gap:.5rem}
.bar a.brand .brand-logo{width:26px;height:26px;border-radius:6px;display:block;flex:0 0 auto}
.bar nav{margin-left:auto;display:flex;gap:.35rem;align-items:center}
.bar nav a{color:var(--muted);text-decoration:none;font-size:.86rem;padding:.3rem .55rem;border-radius:7px;transition:background .15s,color .15s}
.bar nav a:hover{color:var(--fg);background:var(--soft)}
.bar nav .who{color:var(--fg);font-size:.82rem;padding:.3rem .5rem;display:inline-flex;align-items:center;gap:.35rem}
.bar button.k{font:inherit;border:1px solid var(--line);background:var(--paper);color:var(--muted);border-radius:7px;padding:.28rem .55rem;font-size:.78rem;cursor:pointer;display:inline-flex;gap:.3rem;align-items:center;transition:border-color .15s,color .15s}
.bar button.k:hover{color:var(--fg);border-color:var(--accent)}
.bar form.lo{display:inline;margin:0}
.bar form.lo button{background:none;border:0;color:var(--muted);font:inherit;font-size:.86rem;cursor:pointer;padding:.3rem .55rem;border-radius:7px}
.bar form.lo button:hover{color:var(--wanted);background:var(--soft)}

/* layout: content + optional toc rail */
main{max-width:1100px;margin:0 auto;padding:2rem 1.2rem 5rem}
/* Cap the content column at the reading measure (not 1fr) so the on-this-page
   rail sits next to the prose instead of floating at the far right with a wide
   dead gutter; the prose stays left-aligned with the header and the leftover
   space becomes a clean right margin. */
.layout{display:grid;grid-template-columns:minmax(0,var(--measure)) 15rem;gap:3rem;align-items:start}
.layout.solo{grid-template-columns:minmax(0,var(--measure))}
@media(max-width:880px){.layout{grid-template-columns:1fr}.toc{display:none}}
.content{min-width:0;max-width:var(--measure)}

a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
a.wanted{color:var(--wanted)}

/* prose */
article.prose{font-size:1.02rem}
.prose h1,.prose h2,.prose h3,.prose h4{font-family:var(--font-display);font-weight:600;line-height:1.2;letter-spacing:-.015em;margin:1.7em 0 .55em;scroll-margin-top:4.5rem;position:relative}
.prose h1{font-size:2.05rem;margin-top:.2em}
.prose h2{font-size:1.5rem}
.prose h3{font-size:1.2rem}
.prose h4{font-size:1.02rem;color:var(--muted)}
.prose h2{padding-bottom:.2em;border-bottom:1px solid var(--line)}
.prose p,.prose li{overflow-wrap:break-word}
.prose a.anchor{position:absolute;left:-1.1em;top:0;opacity:0;color:var(--muted);text-decoration:none;font-weight:400;transition:opacity .15s}
.prose h1:hover a.anchor,.prose h2:hover a.anchor,.prose h3:hover a.anchor,.prose h4:hover a.anchor{opacity:.6}
/* "wanted" links: internal links whose target page does not exist yet (set by app.js) */
.prose a.wanted{color:var(--wanted);text-decoration-color:var(--wanted)}
.prose a.wanted::after{content:"?";font-size:.8em;vertical-align:super;opacity:.7;margin-left:.05em}
.prose img{max-width:100%;height:auto;border-radius:10px;border:1px solid var(--line)}
.prose blockquote{margin:1.2em 0;padding:.3em 1.1em;border-left:3px solid var(--line);color:var(--muted)}
.prose hr{border:0;border-top:1px solid var(--line);margin:2em 0}
.prose table{border-collapse:collapse;font-size:.95em}
.prose th,.prose td{border:1px solid var(--line);padding:.4rem .7rem}
.prose th{background:var(--soft)}

/* code */
.prose code{font-family:var(--font-mono);background:var(--soft);padding:.12em .4em;border-radius:5px;font-size:.88em}
.prose pre{font-family:var(--font-mono);background:var(--soft);padding:.9rem 1rem;border-radius:10px;overflow:auto;border:1px solid var(--line);margin:1.2em 0}
.prose pre code{background:none;padding:0;font-size:.86rem;line-height:1.6}
.tb-code{position:relative;margin:1.2em 0;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.tb-code pre{border:0;border-radius:0;margin:0}
.tb-code .tb-codebar{display:flex;align-items:center;gap:.5rem;padding:.35rem .7rem;background:var(--soft);border-bottom:1px solid var(--line);font-size:.72rem;color:var(--muted)}
.tb-code .tb-lang{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em}
.tb-code .tb-copy{margin-left:auto;border:1px solid var(--line);background:var(--paper);color:var(--muted);border-radius:6px;font:inherit;font-size:.72rem;padding:.12rem .5rem;cursor:pointer;display:inline-flex;gap:.3rem;align-items:center}
.tb-code .tb-copy:hover{color:var(--fg);border-color:var(--accent)}

/* callouts */
.tb-callout{display:flex;gap:.7rem;margin:1.3em 0;padding:.8rem 1rem;border-radius:10px;border:1px solid var(--line);border-left-width:3px;background:var(--soft)}
.tb-callout .ic{flex:0 0 auto;line-height:1.6}
.tb-callout .bd{min-width:0}
.tb-callout .bd>:first-child{margin-top:0}.tb-callout .bd>:last-child{margin-bottom:0}
.tb-callout .tb-ct{display:block;font-weight:600;margin-bottom:.15em;font-size:.95em}
.tb-c-note{border-left-color:var(--accent)}.tb-c-note .ic,.tb-c-note .tb-ct{color:var(--accent)}
.tb-c-tip{border-left-color:var(--live)}.tb-c-tip .ic,.tb-c-tip .tb-ct{color:var(--live)}
.tb-c-warning{border-left-color:#d99100}.tb-c-warning .ic,.tb-c-warning .tb-ct{color:#b97800}
.tb-c-danger{border-left-color:var(--wanted)}.tb-c-danger .ic,.tb-c-danger .tb-ct{color:var(--wanted)}
@media(prefers-color-scheme:dark){.tb-c-warning .ic,.tb-c-warning .tb-ct{color:#e3a008}}

/* tables: sortable + filterable (reading-UI enhancement) */
.tb-table{margin:1.2em 0}
.tb-table table{margin:0}
.tb-tscroll{overflow-x:auto}
/* Wide screens: a wide table breaks out of the narrow reading measure to use
   the empty space to its right instead of scrolling inside the column. The cap
   keeps the table within the viewport: available width = viewport - content-left
   - margin, where content-left ≈ 50vw - half of main's 1100px frame + its
   padding. On solo pages (no ToC rail) the whole right side is free. */
@media (min-width:1100px){
  .layout.solo .tb-table{width:max-content;max-width:calc(50vw + 550px - 3.2rem)}
}
/* Very wide screens: push the ToC rail out toward the right viewport edge so a
   flexible middle column opens between the prose and the rail, then let a wide
   table on a ToC page break out into that freed space (stopping short of the
   rail). Below this width the rail stays beside the prose — the tidy default.
   The prose column stays left-aligned with the header; only the rail moves. */
@media (min-width:1400px){
  .layout:not(.solo){
    grid-template-columns:minmax(0,var(--measure)) 1fr minmax(0,15rem);
    margin-right:calc(50% - 50vw + 2rem);
  }
  .layout:not(.solo) .toc{grid-column:3} /* pin the rail to the far-right track; the 1fr middle stays free */
  .layout:not(.solo) .tb-table{width:max-content;max-width:calc(50vw + 550px - 15rem - 7rem)}
}
.tb-tbar{display:flex;align-items:baseline;gap:.6rem;margin-bottom:.5rem}
.tb-tfilter{font:inherit;font-size:.85rem;padding:.25rem .55rem;border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--fg);min-width:12rem}
.tb-tfilter:focus{outline:none;border-color:var(--accent)}
.tb-tcount{font-size:.78rem;color:var(--muted)}
.prose th.tb-sort{cursor:pointer;user-select:none;position:relative;padding-right:1.4rem}
.prose th.tb-sort:hover{color:var(--accent)}
.prose th.tb-sort::after{content:"↕";position:absolute;right:.5rem;opacity:.35;font-size:.85em;font-weight:400}
.prose th.tb-sort[aria-sort="ascending"]::after{content:"↑";opacity:.9;color:var(--accent)}
.prose th.tb-sort[aria-sort="descending"]::after{content:"↓";opacity:.9;color:var(--accent)}
.prose th.tb-sort:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}

/* image galleries: a run of image-only paragraphs -> responsive grid */
.tb-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.6rem;margin:1.3em 0}
.tb-gallery a{display:block;margin:0}
.tb-gallery img{width:100%;height:100%;margin:0;display:block;aspect-ratio:4/3;object-fit:cover}

/* meta + presence */
.meta{color:var(--muted);font-size:.85rem;display:flex;gap:.9rem;flex-wrap:wrap;align-items:center;border-bottom:1px solid var(--line);padding-bottom:.7rem;margin-bottom:1.6rem}
.meta a{text-decoration:none}.meta a:hover{color:var(--accent)}
.tb-presence{display:inline-flex;align-items:center;gap:.5rem;margin-left:auto}
.tb-ava{display:flex}
.tb-ava .av{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;border:2px solid var(--bg);margin-left:-7px;background:var(--accent-soft);color:var(--accent)}
.tb-ava .av:first-child{margin-left:0}
.tb-ava .av.agent{background:rgba(15,157,107,.16);color:var(--live)}
.tb-plabel{font-size:.78rem;color:var(--live);display:inline-flex;align-items:center;gap:.35rem}
.tb-plabel .pdot{width:7px;height:7px;border-radius:50%;background:var(--live);animation:tbpulse 1.5s ease-in-out infinite}

/* backlinks */
.backlinks{margin-top:3rem;border-top:1px solid var(--line);padding-top:1.1rem;font-size:.9rem}
.backlinks h3{margin:.2em 0 .6em;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;font-family:var(--font-display)}
.backlinks ul{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.4rem}
.backlinks li a{background:var(--soft);border:1px solid var(--line);border-radius:20px;padding:.18rem .7rem;font-size:.84rem;color:var(--muted)}
.backlinks li a:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}

/* toc rail */
.toc{position:sticky;top:5rem;font-size:.85rem;max-height:calc(100vh - 7rem);overflow:auto}
.toc .lab{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600;font-family:var(--font-display);margin-bottom:.6rem}
.toc a{display:block;color:var(--muted);text-decoration:none;padding:.18rem 0 .18rem .8rem;border-left:2px solid var(--line);line-height:1.35;transition:color .15s,border-color .15s}
.toc a:hover{color:var(--fg)}
.toc a.lvl-3{padding-left:1.5rem}.toc a.lvl-4{padding-left:2.2rem}
.toc a.active{color:var(--accent);border-left-color:var(--accent)}

/* forms */
textarea{width:100%;min-height:60vh;font-family:var(--font-mono);font-size:.9rem;padding:.8rem;border:1px solid var(--line);border-radius:10px;background:var(--paper);color:var(--fg)}
.row{display:flex;gap:.6rem;align-items:center;margin:.7rem 0}
input,select{font:inherit}
button{font:inherit;padding:.45rem 1rem;border:1px solid var(--accent);border-radius:8px;background:var(--accent);color:#fff;cursor:pointer;transition:filter .15s}
button:hover{filter:brightness(1.06)}
button.danger{background:none;border-color:var(--wanted);color:var(--wanted)}
button.danger:hover{filter:none;background:var(--wanted);color:#fff}
.muted{color:var(--muted)}
ul.pages{columns:2;list-style:none;padding:0}
ul.pages li{margin:.15rem 0}
@media(max-width:640px){ul.pages{columns:1}}

/* page-update reveal + live dot (legacy classnames kept) */
.tb-live{display:inline-flex;align-items:center;gap:.4rem;color:var(--live);font-size:.8rem}
.tb-pdot{width:7px;height:7px;border-radius:50%;background:var(--live);animation:tbpulse 1.4s ease-in-out infinite}
@keyframes tbpulse{0%,100%{opacity:1}50%{opacity:.3}}
article.flash{animation:tbflash 1.1s ease}
@keyframes tbflash{0%{background:var(--accent-soft)}100%{background:transparent}}
.tb-reveal{animation:tbreveal 1.4s ease}
@keyframes tbreveal{0%{background:var(--accent-soft);box-shadow:-6px 0 0 var(--accent-soft)}100%{background:transparent;box-shadow:none}}
mark.tb-frag{background:#fff3bf;color:#3a2d00;padding:0 .12em;border-radius:3px}
@media(prefers-color-scheme:dark){mark.tb-frag{background:#5c4a00;color:#fff}}

/* link hover preview */
.tb-lp{position:absolute;z-index:70;width:300px;max-width:78vw;background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:.8rem .9rem;font-size:.85rem;opacity:0;transform:translateY(4px);transition:opacity .14s,transform .14s;pointer-events:none}
.tb-lp.show{opacity:1;transform:none}
.tb-lp .t{font-family:var(--font-display);font-weight:600;font-size:.95rem;margin-bottom:.25rem;color:var(--fg)}
.tb-lp .s{color:var(--muted);line-height:1.5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.tb-lp .m{margin-top:.5rem;font-size:.74rem;color:var(--muted);display:flex;gap:.9rem}
.tb-lp.missing .t{color:var(--wanted)}

/* command palette */
.tb-ov{position:fixed;inset:0;background:rgba(8,10,14,.5);display:none;align-items:flex-start;justify-content:center;z-index:60;backdrop-filter:blur(3px)}
.tb-ov.open{display:flex}
.tb-pal{margin-top:11vh;width:min(600px,92vw);background:var(--paper);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:var(--shadow)}
.tb-pal input{width:100%;border:0;border-bottom:1px solid var(--line);padding:.95rem 1.1rem;font-size:1.02rem;background:var(--paper);color:var(--fg);outline:none}
.tb-res{max-height:54vh;overflow:auto;padding:.4rem}
.tb-it{display:flex;gap:.6rem;align-items:center;padding:.55rem .8rem;cursor:pointer;font-size:.9rem;border-radius:9px}
.tb-it .m{margin-left:auto;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.03em}
.tb-it.sel{background:var(--accent-soft)}
.tb-it .ic{color:var(--accent);width:1.2em;text-align:center;flex:0 0 auto}
.tb-it small{color:var(--muted)}
.tb-it mark{background:var(--accent-soft);color:var(--accent);border-radius:3px;padding:0 1px}

/* graph overlay */
.tb-graph{margin-top:9vh;width:min(680px,94vw);background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:1.1rem;box-shadow:var(--shadow)}
.tb-graph .gh{display:flex;align-items:center;margin-bottom:.5rem;font-family:var(--font-display);font-weight:600}
.tb-gnode{cursor:pointer}
.tb-gring{animation:tbpulse 1.9s ease-in-out infinite}

/* toasts */
.tb-toast{position:fixed;right:1rem;bottom:1rem;display:flex;flex-direction:column;gap:.5rem;z-index:75}
.tb-toast div{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:.55rem .85rem;font-size:.85rem;box-shadow:var(--shadow);animation:tbin .3s ease}
@keyframes tbin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* recently-visited trail (client-side "Spur") — sits above the hierarchy crumbs */
.trail{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem;font-size:.8rem;color:var(--muted);margin:0 0 .5rem}
.trail[hidden]{display:none}
.trail .lab{font-size:.66rem;text-transform:uppercase;letter-spacing:.07em;font-weight:600;font-family:var(--font-display);color:var(--muted);opacity:.8;margin-right:.15rem}
.trail a{color:var(--muted);text-decoration:none;padding:.05rem .2rem;border-radius:5px}
.trail a:hover{color:var(--accent);background:var(--soft)}
.trail .sep{opacity:.4;user-select:none}
.trail .cur{color:var(--fg);font-weight:500}

/* breadcrumbs (namespace trail) */
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem;font-size:.82rem;color:var(--muted);margin:0 0 1.3rem}
.crumbs a{color:var(--muted);text-decoration:none;padding:.05rem .2rem;border-radius:5px}
.crumbs a:hover{color:var(--accent);background:var(--soft)}
.crumbs .sep{opacity:.45;user-select:none}
.crumbs .cur{color:var(--fg);font-weight:500;padding:.05rem .2rem}

/* namespace browse tree (the index) */
ul.tree{list-style:none;padding-left:0;margin:.4rem 0}
ul.tree ul.tree{padding-left:.7rem;margin-left:.5rem;border-left:1px solid var(--line)}
ul.tree li{margin:.16rem 0}
.tree details{margin:.05rem 0}
.tree summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:.45rem;padding:.05rem 0}
.tree summary::-webkit-details-marker{display:none}
.tree summary::before{content:"▸";color:var(--muted);font-size:.78em;transition:transform .15s;display:inline-block;width:.8em}
.tree details[open]>summary::before{transform:rotate(90deg)}
.tree summary a{font-family:var(--font-display);font-weight:600;color:var(--fg)}
.tree summary a:hover{color:var(--accent)}
.tree li.pg>a{display:inline-block;padding-left:1.25em}
.tree .ct{color:var(--muted);font-size:.72rem;background:var(--soft);border-radius:20px;padding:0 .45rem}

/* notice / error pages (403, etc.) */
.notice{max-width:34rem}
.notice .tb-403{font-family:var(--font-display);font-weight:600;font-size:3.4rem;line-height:1;color:var(--accent);opacity:.55;letter-spacing:-.02em}
.notice h1{margin-top:.2rem}
.notice .row{margin-top:1.3rem;gap:.6rem;flex-wrap:wrap}
.notice .lo{display:inline}
a.btn{display:inline-block;padding:.45rem 1rem;border:1px solid var(--accent);border-radius:8px;background:var(--accent);color:#fff;text-decoration:none;font-size:.9rem;transition:filter .15s}
a.btn:hover{filter:brightness(1.06);text-decoration:none}
a.btn.ghost{background:none;color:var(--accent)}
a.btn.ghost:hover{background:var(--accent-soft)}

/* status badge + last-modified (read view) */
.tb-badge{font-family:var(--font-display);font-size:.64rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:.08rem .45rem;border-radius:20px;border:1px solid var(--line);line-height:1.5}
.tb-st-draft{color:#b97800;border-color:#d99100;background:rgba(217,145,0,.10)}
.tb-st-archived{color:var(--muted);background:var(--soft)}
@media(prefers-color-scheme:dark){.tb-st-draft{color:#e3a008}}
.meta a.tb-mod{color:var(--muted)}

/* ghost button (secondary action) */
button.ghost{background:none;border-color:var(--line);color:var(--muted)}
button.ghost:hover{filter:none;border-color:var(--accent);color:var(--accent)}

/* editor: split editor/preview pane (#44) */
.ed-form{margin-top:.2rem}
.ed-split{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start}
.ed-split.solo{grid-template-columns:1fr}
@media(max-width:880px){.ed-split{grid-template-columns:1fr}}
.ed-pane{min-width:0}
.ed-edit textarea{min-height:64vh;margin:0}

/* editor format toolbar (#64) — visible pendant to ⌘B/⌘I/⌘E/⌘K */
.cm-toolbar{display:flex;gap:.2rem;align-items:center;flex-wrap:wrap;padding:.3rem .4rem;border:1px solid var(--line);border-bottom:0;border-radius:8px 8px 0 0;background:var(--soft)}
.cm-tb{font:inherit;font-size:.9rem;line-height:1;min-width:1.9rem;height:1.7rem;padding:0 .45rem;border:1px solid transparent;border-radius:6px;background:none;color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.cm-tb:hover{filter:none;background:var(--bg);color:var(--fg);border-color:var(--line)}
.cm-tb b{font-weight:700}
.cm-tb i{font-style:italic;font-family:var(--font-display)}
.cm-tb .mono{font-family:var(--font-mono);font-size:.82rem}
.cm-tb svg{display:block}
.ed-preview{border:1px solid var(--line);border-radius:10px;background:var(--paper);max-height:70vh;overflow:auto}
.ed-preview[hidden]{display:none}
.ed-pvhead{position:sticky;top:0;z-index:1;background:var(--soft);border-bottom:1px solid var(--line);padding:.35rem .7rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-family:var(--font-display)}
.ed-preview .prose{font-size:1rem;padding:1rem 1.1rem}
.ed-preview .prose>:first-child{margin-top:0}
.ed-preview .prose:empty::after{content:"Start typing to see a live preview.";color:var(--muted);display:block;padding:1rem 1.1rem;font-size:.9rem}
.ed-pvtoggle{margin-left:auto;display:inline-flex;align-items:center;gap:.35rem;font-size:.8rem;color:var(--muted);cursor:pointer;user-select:none}
.ed-actions{margin-top:.8rem}
.ed-summary{flex:1;min-width:8rem;padding:.4rem .6rem;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--fg)}

/* editor info bars: draft restore (#25), rename (#27) */
.ed-bar{border:1px solid var(--line);border-left:3px solid var(--accent);background:var(--soft);border-radius:8px;padding:.7rem .9rem;margin:.7rem 0;font-size:.9rem}
.ed-bar[hidden]{display:none}
.ed-bar label{display:block;font-weight:600;margin-bottom:.2rem}
.ed-bar .row{margin:.6rem 0 0}
.ed-movehint{font-size:.8rem;margin:.5rem 0 0;line-height:1.5}

/* editor conflict panel (#15) */
.ed-conflict{border:1px solid var(--wanted);border-radius:10px;padding:.9rem 1rem;margin:1rem 0;background:color-mix(in srgb,var(--wanted) 6%,var(--paper))}
.ed-conflict[hidden]{display:none}
.ed-cf-head{font-family:var(--font-display);font-weight:600;color:var(--wanted);margin-bottom:.3rem}
.ed-cf-diff{border:1px solid var(--line);border-radius:8px;overflow:auto;max-height:50vh;background:var(--soft);margin:.6rem 0}
.ed-cf-diff pre{margin:0;background:none;border:0;border-radius:0;padding:.6rem .8rem;font-size:.82rem;line-height:1.45;font-family:var(--font-mono)}
.ed-cf-diff .a{color:var(--live)}
.ed-cf-diff .d{color:var(--wanted)}
