/* 启昌写书中台 · 本地版
   视觉沿用「启昌设计系统」：墨色 #0F172A + 签名橙 #F59E0B + 深蓝 #1E3A8A，苹方做界面，宋体只给书稿正文。
   原则：用字号、字重、留白分层级；少框线、不用阴影堆层次；橙色只出现在“当前”和“要你处理”的地方。 */
:root{
  --ink:#0F172A; --ink2:#334155; --muted:#64748B; --faint:#94A3B8;
  --line:#E2E8F0; --line2:#EEF2F6; --bg:#F6F7F9; --paper:#FFFFFF;
  --navy:#1E3A8A; --navy-soft:#EEF2FB; --amber:#F59E0B; --amber-ink:#B45309; --amber-soft:#FFFBEB;
  --green:#1F8A5B; --red:#DC2626;
  --serif:"PingFang SC","苹方-简",-apple-system,BlinkMacSystemFont,"Helvetica Neue","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --sans:"PingFang SC","苹方-简",-apple-system,BlinkMacSystemFont,"Helvetica Neue","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --r:6px;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
::selection{background:#FDE68A}
button{font:inherit;cursor:pointer;border:1px solid var(--line);background:var(--paper);border-radius:var(--r);padding:7px 14px;color:var(--ink2);transition:background .12s,border-color .12s,color .12s}
button:hover{border-color:var(--faint);color:var(--ink)}
button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--amber);outline-offset:2px}
button.primary{background:var(--navy);border-color:var(--navy);color:#fff;font-weight:500}
button.primary:hover{background:#172F70;color:#fff}
button.primary:disabled{opacity:.55;cursor:default}
button.ghost{border-color:transparent;background:transparent}
button.ghost:hover{background:var(--line2)}
button.small{padding:4px 10px;font-size:12.5px}
button.link{border:none;background:none;padding:0;color:var(--navy);font-weight:500}
button.link:hover{text-decoration:underline}
input,textarea,select{font:inherit;border:1px solid var(--line);border-radius:var(--r);padding:9px 12px;background:var(--paper);color:var(--ink)}
input,textarea{width:100%}
select{appearance:none;padding-right:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%2364748B' stroke-width='1.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}
input[type="checkbox"]{accent-color:var(--navy)}
input::placeholder,textarea::placeholder{color:var(--faint)}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px var(--navy-soft)}
a{color:var(--navy)}
.muted{color:var(--muted)}
.num{font-variant-numeric:tabular-nums}
.tag{display:inline-block;font-size:11.5px;line-height:18px;padding:0 7px;border-radius:3px;background:var(--line2);color:var(--muted);font-weight:500;white-space:nowrap}
.tag.cur{background:var(--amber-soft);color:var(--amber-ink)}
.tag.warn{background:#FEF2F2;color:var(--red)}
.tag.ok{background:#ECFDF5;color:var(--green)}
.kicker{display:flex;align-items:center;gap:8px;font-size:12px;letter-spacing:.08em;color:var(--muted);font-weight:500;margin-bottom:12px}
.kicker::before{content:"";width:16px;height:2px;background:var(--amber);border-radius:1px}

/* 顶栏 */
.top{height:56px;display:flex;align-items:center;gap:28px;padding:0 28px;border-bottom:1px solid var(--line);background:var(--paper);position:sticky;top:0;z-index:10}
.brand{display:flex;align-items:baseline;gap:8px;cursor:pointer;white-space:nowrap}
.brand b{font-size:16px;font-weight:600;letter-spacing:.02em}
.brand b::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--amber);margin-right:9px;transform:translateY(-1px)}
.brand small{font-size:11.5px;color:var(--faint)}
.nav{display:flex;height:100%;gap:2px;min-width:0;overflow-x:auto;white-space:nowrap}
.nav button{border:none;background:none;border-radius:0;padding:0 12px;height:100%;color:var(--muted);position:relative;font-size:14px;flex:none;white-space:nowrap}
.nav button:hover{color:var(--ink)}
.nav button.on{color:var(--ink);font-weight:600}
.nav button.on::after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:2px;background:var(--amber)}
.nav button .dot{display:inline-block;min-width:16px;height:16px;line-height:16px;border-radius:8px;background:var(--amber);color:#fff;font-size:10.5px;font-weight:600;margin-left:5px;padding:0 4px;vertical-align:1px}
.top .grow{flex:1}

/* 登录 */
.login{height:100%;display:grid;grid-template-columns:1.1fr 1fr}
.login .side-l{background:var(--navy);color:#fff;padding:64px;display:flex;flex-direction:column;justify-content:space-between}
.login .side-l .q{font-family:var(--serif);font-size:30px;line-height:1.7;max-width:460px}
.login .side-l .q em{font-style:normal;color:var(--amber)}
.login .side-l .s{font-size:13px;opacity:.6}
.login .form{display:flex;flex-direction:column;justify-content:center;padding:0 12%}
.login h1{font-size:26px;font-weight:600;margin:0 0 8px}
.login p{color:var(--muted);margin:0 0 32px}
.login input{font-size:16px;letter-spacing:.15em;padding:12px 14px;margin-bottom:10px}
.login .err{color:var(--red);min-height:20px;font-size:13px;margin-bottom:8px}
.login button.primary{padding:12px;font-size:15px}

/* 首页：工作台 */
.home{max-width:1160px;margin:0 auto;padding:48px 40px 80px}
.desk{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:64px}
.resume h1{font-size:30px;line-height:1.35;font-weight:600;margin:0 0 10px;letter-spacing:.01em}
.resume .meta{color:var(--muted);font-size:13px;display:flex;gap:14px;flex-wrap:wrap}
.resume .where{margin:28px 0 26px;padding:24px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.resume .where .ch{font-size:13px;color:var(--muted);margin-bottom:10px}
.resume .where .ch b{color:var(--ink);font-weight:600}
.resume .where .para{font-family:var(--serif);font-size:18px;line-height:1.95;color:var(--ink2)}
.resume .where .para::after{content:"……";color:var(--faint)}
.progress{height:3px;background:var(--line2);border-radius:2px;margin-top:20px;position:relative}
.progress i{position:absolute;left:0;top:0;bottom:0;background:var(--amber);border-radius:2px}
.progress-l{display:flex;justify-content:space-between;font-size:12px;color:var(--faint);margin-top:8px}
.resume .acts{display:flex;gap:10px;align-items:center}
.resume .acts .primary{padding:10px 22px;font-size:15px}
.todo .head{display:flex;align-items:baseline;justify-content:space-between;margin-top:32px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.todo .head:first-child{margin-top:0}
.todo .head h3{font-size:14px;font-weight:600;margin:0}
.todo .head .n{font-size:20px;font-weight:600;color:var(--amber-ink);font-variant-numeric:tabular-nums}
.todo .head .n.zero{color:var(--faint)}
.todo .item{padding:12px 0;border-bottom:1px solid var(--line2);cursor:pointer}
.todo .item:hover .t{color:var(--navy)}
.todo .item .t{font-size:13.5px;line-height:1.65;color:var(--ink2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.todo .item .q{font-family:var(--serif);font-size:12.5px;color:var(--faint);margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.todo .none{font-size:13px;color:var(--faint);padding:12px 0}
.todo .more{margin-top:10px}
.sys{margin-top:32px;font-size:12px;color:var(--faint);line-height:2.1}
.sys span{margin-right:14px;white-space:nowrap}
.sys i{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--green);margin-right:6px;vertical-align:1px}
.sys i.off{background:var(--faint)}

.timeline{margin-top:72px}
.tl{display:flex;align-items:flex-start;margin-top:4px}
.tl .v{flex:1;position:relative;padding-top:24px;cursor:pointer}
.tl .v::before{content:"";position:absolute;top:6px;left:0;right:0;height:1px;background:var(--line)}
.tl .v:last-child::before{right:auto;width:6px}
.tl .v::after{content:"";position:absolute;top:2px;left:0;width:9px;height:9px;border-radius:50%;background:var(--paper);border:1.5px solid var(--faint)}
.tl .v.cur::after{background:var(--amber);border-color:var(--amber);box-shadow:0 0 0 4px var(--amber-soft)}
.tl .v b{display:block;font-size:15px;font-weight:600;font-variant-numeric:tabular-nums}
.tl .v span{font-size:12px;color:var(--muted)}
.tl .v:hover b{color:var(--navy)}

.shelf{margin-top:72px}
.shelf .rows{border-top:1px solid var(--ink)}
.shelf .row{display:grid;grid-template-columns:150px minmax(0,1fr) 90px 24px;gap:24px;align-items:baseline;padding:18px 4px;border-bottom:1px solid var(--line);cursor:pointer}
.shelf .row:hover{background:#FAFBFC}
.shelf .row:hover .go{color:var(--navy);transform:translateX(3px)}
.shelf .row b{font-size:16px;font-weight:600}
.shelf .row p{margin:0;color:var(--muted);font-size:13.5px;line-height:1.6}
.shelf .row .n{text-align:right;font-size:13px;color:var(--ink2);font-variant-numeric:tabular-nums}
.shelf .row .go{color:var(--faint);transition:.15s}

/* 资料浏览：三栏 */
.lib{display:grid;grid-template-columns:232px 380px minmax(0,1fr);height:calc(100vh - 56px)}
.lib .groups{border-right:1px solid var(--line);padding:28px 14px;overflow:auto;background:var(--bg)}
.lib .groups h4{margin:0 10px 6px;font-size:18px;font-weight:600}
.lib .groups .intro{font-size:12.5px;color:var(--muted);margin:0 10px 22px;line-height:1.7}
.lib .groups button{display:flex;width:100%;justify-content:space-between;align-items:center;border:none;background:none;text-align:left;padding:8px 10px;border-radius:var(--r);font-size:13.5px;color:var(--ink2)}
.lib .groups button:hover{background:#EDF0F4}
.lib .groups button.on{background:var(--paper);color:var(--ink);font-weight:600;box-shadow:0 0 0 1px var(--line)}
.lib .groups button i{font-style:normal;color:var(--faint);font-size:12px;font-variant-numeric:tabular-nums;font-weight:400}
.lib .list{border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}
.lib .list .search{padding:16px 18px 12px;border-bottom:1px solid var(--line)}
.lib .list .count{font-size:12px;color:var(--faint);margin-top:8px}
.lib .list .items{overflow:auto;flex:1}
.lib .item{padding:14px 20px;border-bottom:1px solid var(--line2);cursor:pointer;position:relative}
.lib .item:hover{background:#FAFBFC}
.lib .item.on{background:var(--navy-soft)}
.lib .item.on::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:2px;background:var(--navy)}
.lib .item .t{font-size:14px;font-weight:600;line-height:1.5;color:var(--ink)}
.lib .item .s{font-size:12.5px;color:var(--muted);margin-top:4px;line-height:1.65;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.lib .item .d{font-size:11.5px;color:var(--faint);margin-top:6px}
.reader{overflow:auto;padding:56px 64px 120px}
.reader .head,.reader .prose{max-width:680px;margin-left:auto;margin-right:auto}
.reader .head{margin-bottom:36px}
.reader .head h1{font-size:28px;line-height:1.4;font-weight:600;margin:0 0 12px}
.reader .head .src{font-size:12px;color:var(--faint);word-break:break-all;line-height:1.8}
.prose{font-family:var(--serif);font-size:17.5px;line-height:2;color:#1E293B}
.prose h1,.prose h2,.prose h3,.prose h4{font-family:var(--sans);line-height:1.45;margin:2em 0 .7em;font-weight:600;color:var(--ink)}
.prose h1{font-size:22px}.prose h2{font-size:19px}.prose h3{font-size:16.5px}.prose h4{font-size:15px}
.prose p{margin:0 0 1.1em}
.prose blockquote{margin:0 0 1.1em;padding:2px 0 2px 18px;border-left:2px solid var(--amber);color:var(--ink2)}
.prose table{border-collapse:collapse;font-family:var(--sans);font-size:13px;margin:0 0 1.2em;width:100%}
.prose td,.prose th{border-bottom:1px solid var(--line);padding:7px 10px;text-align:left;vertical-align:top}
.prose tr:first-child td{font-weight:600;border-bottom-color:var(--ink2)}
.prose code{font-family:ui-monospace,Menlo,monospace;font-size:.82em;background:var(--line2);padding:1px 5px;border-radius:3px}
.prose pre{background:var(--bg);padding:14px 16px;border-radius:var(--r);overflow:auto;font-size:13px;line-height:1.6}
.prose ul,.prose ol{padding-left:1.4em}
.prose .tag{font-family:var(--sans)}
mark{background:#FDE68A;color:inherit;border-radius:2px;padding:0 1px}
.empty{padding:80px 24px;text-align:center;color:var(--faint);font-size:13.5px;line-height:1.8}

/* 书稿页 */
.versions{max-width:1160px;margin:0 auto;padding:48px 40px 80px}
.versions h1,.page h1{font-size:28px;font-weight:600;margin:0 0 8px}
.versions .lead,.page .lead{color:var(--muted);margin:0 0 40px;line-height:1.7}
.vgrid{display:grid;grid-template-columns:170px minmax(0,1fr);gap:56px}
.vtabs{border-left:1px solid var(--line);align-self:start;position:sticky;top:80px}
.vtabs button{display:flex;justify-content:space-between;align-items:center;width:100%;text-align:left;border:none;border-radius:0;background:none;padding:10px 16px;margin-left:-1px;border-left:2px solid transparent;color:var(--muted);font-size:14px}
.vtabs button:hover{color:var(--ink)}
.vtabs button.on{border-left-color:var(--amber);color:var(--ink);font-weight:600}
.mine{margin-bottom:44px}
.mine .card{display:flex;align-items:center;gap:20px;padding:22px 26px;background:var(--navy);color:#fff;border-radius:var(--r);cursor:pointer;margin-bottom:10px}
.mine .card .t{flex:1;font-size:16px;font-weight:600}
.mine .card .m{font-size:12.5px;opacity:.7;margin-top:4px;font-weight:400}
.mine .card button{background:var(--amber);border-color:var(--amber);color:#1F1300;font-weight:600}
.mine .card button:hover{background:#FBBF24;color:#1F1300}
.ctable{border-top:1px solid var(--ink)}
.chap{display:grid;grid-template-columns:minmax(0,1fr) 70px 170px;gap:16px;align-items:center;padding:12px 4px;border-bottom:1px solid var(--line)}
.chap .t{font-size:14.5px;color:var(--ink)}
.chap .t .tag{margin-right:8px}
.chap .n{font-size:12.5px;color:var(--faint);text-align:right;font-variant-numeric:tabular-nums}
.chap .a{display:flex;gap:6px;justify-content:flex-end;opacity:0;transition:opacity .12s}
.chap:hover .a,.chap.full .a{opacity:1}
.chap.full .t{font-weight:600}
.sub{font-size:12.5px;color:var(--muted);margin:0 0 12px}

/* 编辑台 */
.studio{display:grid;grid-template-columns:248px minmax(0,1fr) 372px;height:calc(100vh - 56px);background:var(--bg)}
.studio.focus{grid-template-columns:0 minmax(0,1fr) 0}
.studio.focus .toc,.studio.focus .side{display:none}
.toc{overflow:auto;padding:22px 10px 40px 14px}
.toc h4{margin:0 10px 12px;font-size:12px;color:var(--faint);font-weight:500;letter-spacing:.08em}
.toc a{display:block;padding:5px 10px;border-radius:0 4px 4px 0;color:var(--ink2);text-decoration:none;font-size:13px;line-height:1.5;cursor:pointer;border-left:2px solid transparent}
.toc a.l1{font-weight:600;color:var(--ink);margin-top:12px}
.toc a.l2{padding-left:14px}
.toc a.l3{padding-left:26px;color:var(--muted);font-size:12.5px}
.toc a:hover{background:#EDF0F4}
.toc a.on{color:var(--ink);font-weight:600;border-left-color:var(--amber);background:var(--paper)}
.paper{overflow:auto;position:relative}
.ebar{position:sticky;top:0;z-index:5;background:rgba(246,247,249,.92);backdrop-filter:saturate(1.4) blur(8px);-webkit-backdrop-filter:saturate(1.4) blur(8px);padding:10px 24px;display:flex;align-items:center;gap:4px}
.ebar .title{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:420px}
.ebar .state{font-size:12px;color:var(--faint);margin-left:10px;white-space:nowrap}
.ebar .state.ok::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--green);margin-right:6px;vertical-align:1px}
.ebar .state.bad{color:var(--red)}
.ebar .grow{flex:1}
.ebar button{border-color:transparent;background:transparent;color:var(--muted);padding:5px 9px;font-size:12.5px}
.ebar button:hover{background:#E9EDF2;color:var(--ink)}
.ebar .sep{width:1px;height:16px;background:var(--line);margin:0 4px}
.sheet{max-width:820px;margin:8px auto 240px;background:var(--paper);padding:88px 96px 120px;border-radius:2px;box-shadow:0 0 0 1px rgba(15,23,42,.05),0 1px 3px rgba(15,23,42,.04)}
.blk{font-family:var(--serif);font-size:var(--fs,18px);line-height:2;color:#1E293B;margin:0 -10px 1em;padding:1px 10px;border-radius:3px;outline:none;white-space:pre-wrap;position:relative;transition:background .3s}
.blk:focus{background:#FFFDF5}
.blk.h1{font-family:var(--sans);font-size:calc(var(--fs,18px) + 10px);font-weight:600;line-height:1.45;margin-bottom:1.2em;color:var(--ink);letter-spacing:.01em}
.blk.h2{font-family:var(--sans);font-size:calc(var(--fs,18px) + 4px);font-weight:600;line-height:1.5;margin-top:2.6em;color:var(--ink)}
.blk.h3,.blk.h4{font-family:var(--sans);font-size:var(--fs,18px);font-weight:600;line-height:1.6;margin-top:1.8em;color:var(--ink)}
.blk.q{color:var(--ink2);padding-left:24px;font-size:calc(var(--fs,18px) - 2px)}
.blk.q::before{content:"";position:absolute;left:10px;top:8px;bottom:8px;width:2px;background:var(--line)}
.blk.has-c{text-decoration:underline;text-decoration-color:var(--amber);text-decoration-thickness:2px;text-underline-offset:6px}
.blk.has-c::after{content:attr(data-n);position:absolute;right:-40px;top:8px;width:20px;height:20px;line-height:20px;text-align:center;border-radius:50%;background:var(--amber);color:#fff;font:600 11px var(--sans);text-decoration:none}
.blk.flash{background:#FEF3C7}
.blk.hr{padding:0;margin:2.4em -10px;text-align:center;color:var(--faint);font-size:14px;min-height:1em}
.blk.hr::before{content:"·    ·    ·";white-space:pre}
.blk.li{padding-left:1.7em;margin-top:-.45em}
.blk.li::before{content:"";position:absolute;left:.8em;top:.95em;width:5px;height:5px;border-radius:50%;background:var(--faint)}
.pop{position:absolute;z-index:20;background:var(--ink);color:#fff;border-radius:8px;padding:4px;display:flex;gap:2px;box-shadow:0 8px 24px rgba(15,23,42,.22)}
.pop::after{content:"";position:absolute;left:50%;bottom:-5px;margin-left:-5px;border:5px solid transparent;border-bottom:0;border-top-color:var(--ink)}
.pop button{background:none;border:none;color:#E2E8F0;padding:6px 12px;border-radius:5px;font-size:13px;display:flex;align-items:center;gap:6px}
.pop button:hover{background:rgba(255,255,255,.12);color:#fff}
.ico{width:14px;height:14px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.side{border-left:1px solid var(--line);display:flex;flex-direction:column;background:var(--paper);min-height:0}
.tabs{display:flex;gap:20px;padding:0 22px;border-bottom:1px solid var(--line)}
.tabs button{border:none;border-radius:0;background:none;padding:16px 0 14px;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;font-size:13.5px}
.tabs button:hover{color:var(--ink)}
.tabs button.on{color:var(--ink);border-bottom-color:var(--amber);font-weight:600}
.tabs button i{font-style:normal;font-size:11px;color:var(--faint);margin-left:3px}
.pane{overflow:auto;flex:1;padding:22px}
.hint{font-size:12.5px;color:var(--muted);line-height:1.75;margin:0 0 18px}
.composer{border:1px solid var(--navy);border-radius:var(--r);padding:14px;margin-bottom:20px;box-shadow:0 0 0 3px var(--navy-soft)}
.composer .quote{font-family:var(--serif);font-size:13px;color:var(--ink2);padding:0 0 10px;margin-bottom:10px;border-bottom:1px dashed var(--line);max-height:84px;overflow:auto}
.composer textarea{min-height:80px;resize:vertical;border:none;padding:0}
.composer textarea:focus{box-shadow:none}
.composer .acts{display:flex;gap:8px;margin-top:10px;align-items:center}
.rec{color:var(--red);font-size:13px;display:flex;align-items:center;gap:7px}
.rec:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--red);animation:blink 1s infinite}
@keyframes blink{50%{opacity:.2}}
.cm{padding:16px 0;border-bottom:1px solid var(--line2);cursor:pointer}
.cm .qwrap{margin-bottom:8px;line-height:1.75;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-family:var(--serif);font-size:13px;color:var(--muted)}
.cm .qwrap span{background:linear-gradient(transparent 62%,#FEF3C7 62%)}
.cm:hover .qwrap{color:var(--ink2)}
.cm .body{font-size:13.5px;line-height:1.7;white-space:pre-wrap;color:var(--ink)}
.cm .tr{font-size:13px;color:var(--ink2);background:var(--bg);border-radius:4px;padding:8px 10px;margin-top:8px;white-space:pre-wrap;line-height:1.7}
.cm .foot{display:flex;gap:6px;align-items:center;margin-top:8px;font-size:12px;color:var(--faint)}
.cm audio{width:100%;height:32px;margin-top:8px}
.cm.done{opacity:.45}
.analysis h5{font-size:12.5px;font-weight:600;margin:22px 0 6px;color:var(--ink)}
.analysis h5 span{font-weight:400;color:var(--faint);margin-left:4px}
.analysis ul{margin:0;padding-left:16px;font-size:13px;line-height:1.75;color:var(--ink2)}
.analysis li{margin-bottom:5px}
.analysis li::marker{color:var(--faint)}
.analysis .more{margin-top:6px}
.exp{padding:16px 0;border-bottom:1px solid var(--line2)}
.exp .r{font-size:14px;line-height:1.7;color:var(--ink);font-weight:500}
.exp .ev{font-size:12.5px;color:var(--muted);margin-top:6px;line-height:1.7}
.exp .acts{display:flex;gap:6px;margin-top:10px;align-items:center}
.diff ins{background:#DCFCE7;color:#14532D;text-decoration:none;border-radius:2px}
.diff del{background:#FEE2E2;color:#991B1B;border-radius:2px}
.diff .para{font-family:var(--serif);font-size:15px;line-height:1.95;padding:14px 0;border-bottom:1px solid var(--line2)}
.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 18px;border-radius:var(--r);z-index:99;font-size:13.5px;box-shadow:0 8px 24px rgba(15,23,42,.2)}
.modal{position:fixed;inset:0;background:rgba(15,23,42,.38);display:flex;align-items:center;justify-content:center;z-index:50}
.modal .box{background:var(--paper);border-radius:8px;width:min(880px,92vw);max-height:86vh;display:flex;flex-direction:column;box-shadow:0 24px 64px rgba(15,23,42,.25)}
.modal .box .h{padding:18px 28px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px}
.modal .box .h b{flex:1;font-size:15px;font-weight:600}
.modal .box .c{overflow:auto;padding:8px 28px 28px}
.modal .box .c .prose{margin-top:20px}
.page{max-width:820px;margin:0 auto;padding:48px 40px 80px}
.page h2{font-size:15px;font-weight:600;margin:40px 0 4px;display:flex;gap:8px;align-items:baseline;padding-bottom:8px;border-bottom:1px solid var(--line)}
.page h2 span{font-size:12.5px;color:var(--faint);font-weight:400}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
@media (max-width:1180px){.desk{grid-template-columns:1fr}.studio{grid-template-columns:0 minmax(0,1fr) 340px}.toc{display:none}.lib{grid-template-columns:200px 320px minmax(0,1fr)}.sheet{padding:64px 56px}.blk.has-c::after{right:-30px}}
@media (max-width:760px){.top{gap:12px;padding:0 14px;overflow-x:auto}.studio{grid-template-columns:1fr}.side{display:none}.sheet{padding:32px 22px}.lib{grid-template-columns:1fr}.lib .groups,.reader{display:none}.home,.versions,.page{padding:28px 18px}.login{grid-template-columns:1fr}.login .side-l{display:none}.shelf .row{grid-template-columns:1fr 60px}.shelf .row p,.shelf .row .go{display:none}.vgrid{grid-template-columns:1fr}}
.prose hr{border:none;text-align:center;margin:2.2em 0;height:1em;color:var(--faint)}.prose hr::before{content:'·    ·    ·';white-space:pre}
::highlight(qw-sel){background:#FDE68A;color:inherit}
.exp .r[contenteditable="true"]{outline:none;border-radius:3px;margin:0 -6px;padding:2px 6px}
.exp .r[contenteditable="true"]:hover{background:var(--bg)}
.exp .r[contenteditable="true"]:focus{background:var(--amber-soft)}
.cm .tr[contenteditable="true"]{outline:2px solid var(--amber);background:#fff}
.composer{animation:slideIn .16s ease-out}
@keyframes slideIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
