/* ============================================================
   openmdfile · Design System (Soba-style)  © 2026 CCC Studio
   ============================================================ */
:root{
  --font-sans:-apple-system,BlinkMacSystemFont,'SF Pro Text','SF Pro Display',system-ui,'Segoe UI',sans-serif;
  --font-mono:'SF Mono',ui-monospace,Menlo,Consolas,monospace;
  --accent:#99FF00; --accent-dim:#8BE800; --accent-tint:rgba(153,255,0,.22);
  --bg:#F6F6F6; --surface:rgba(255,255,255,.66); --bg-subtle:rgba(0,0,0,.05);
  --text:#000000; --text-2:#5c5c5c; --text-3:#9a9a9a;
  --border:rgba(0,0,0,.08); --border-strong:rgba(0,0,0,.20);
  --shadow:0 18px 50px rgba(0,0,0,.07);
  --shadow-lg:0 10px 40px rgba(0,0,0,.14);
  --code-bg:#F1F1F1; --doc-size:16px; --r:7px; --r-lg:12px;
}
[data-theme="dark"]{
  --accent:#99FF00; --accent-dim:#A8FF26; --accent-tint:rgba(153,255,0,.14);
  --bg:#0F0F0F; --surface:rgba(30,30,30,.62); --bg-subtle:rgba(255,255,255,.06);
  --text:#F2F2F2; --text-2:#A3A3A3; --text-3:#6E6E6E;
  --border:rgba(255,255,255,.10); --border-strong:rgba(255,255,255,.24);
  --shadow:0 18px 50px rgba(0,0,0,.4);
  --shadow-lg:0 10px 40px rgba(0,0,0,.6);
  --code-bg:#1E1E1E;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
body{font-family:var(--font-sans);font-size:14px;background:var(--bg);color:var(--text);transition:background .25s,color .25s;min-height:100vh}
button{font-family:inherit;cursor:pointer}
svg.i{width:1.1em;height:1.1em;flex-shrink:0;stroke:currentColor;fill:none;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.17em}

/* i18n visibility */
[data-lang="en"] .lang-zh{display:none!important}
[data-lang="zh"] .lang-en{display:none!important}

/* soft backdrop (soba-back style) */
body::before{content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;background:
  radial-gradient(120% 85% at 50% -10%, #ffffff 0%, rgba(255,255,255,0) 58%),
  radial-gradient(85% 65% at 10% 112%, rgba(186,190,197,.55) 0%, rgba(186,190,197,0) 62%),
  radial-gradient(85% 65% at 92% 105%, rgba(211,208,200,.6) 0%, rgba(211,208,200,0) 62%),
  linear-gradient(180deg,#F8F8F8 0%,#EAEAEA 100%)}
body::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.045'/%3E%3C/svg%3E");
  background-size:160px 160px}
[data-theme="dark"] body::before{background:
  radial-gradient(120% 85% at 50% -10%, rgba(255,255,255,.07) 0%, transparent 58%),
  radial-gradient(85% 65% at 10% 112%, rgba(110,120,140,.16) 0%, transparent 62%),
  radial-gradient(85% 65% at 92% 105%, rgba(90,95,90,.14) 0%, transparent 62%),
  linear-gradient(180deg,#141414 0%,#0A0A0A 100%)}

/* ============ Header ============ */
header.site{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}
.header-inner{max-width:1120px;margin:0 auto;padding:0 24px;height:56px;display:flex;align-items:center;gap:20px}
.logo{font-size:16px;font-weight:600;letter-spacing:-.2px;color:var(--text);text-decoration:none;white-space:nowrap;display:flex;align-items:center;gap:8px}
.logo-badge{display:inline-flex;align-items:center;justify-content:center;height:21px;padding:0 7px;border-radius:6px;background:var(--accent);color:#000;font-size:10.5px;font-weight:700;letter-spacing:.03em}
nav.site-nav{display:flex;gap:2px;flex:1;overflow:hidden}
nav.site-nav a{color:var(--text-2);text-decoration:none;font-size:13px;font-weight:500;padding:6px 10px;border-radius:var(--r);transition:.15s;white-space:nowrap}
nav.site-nav a:hover,nav.site-nav a.on{color:var(--text);background:var(--bg-subtle)}
.header-actions{display:flex;align-items:center;gap:8px}
.icon-btn{min-width:32px;height:32px;padding:0 8px;border-radius:var(--r);border:1px solid var(--border);background:var(--surface);color:var(--text-2);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;transition:.15s;text-decoration:none}
.icon-btn svg.i{width:15px;height:15px}
.icon-btn:hover{color:var(--text);border-color:var(--border-strong)}
@media(max-width:900px){nav.site-nav{display:none}}

/* ============ Hero / landing ============ */
.wrap{max-width:1120px;margin:0 auto;padding:0 24px}
.hero{text-align:center;padding:72px 0 8px}
.hero.compact{padding:48px 0 4px}
.hero .kicker{font-size:12px;font-weight:500;color:var(--text-3);letter-spacing:.02em;margin-bottom:18px;display:block}
.hero h1{font-size:clamp(26px,4vw,38px);font-weight:600;letter-spacing:-.8px;line-height:1.18}
.hero.compact h1{font-size:clamp(22px,3.4vw,32px)}
.hero h1 em{font-style:normal;background:var(--accent);color:#000;padding:1px 8px;border-radius:6px}
.hero p.sub{margin:14px auto 0;max-width:520px;font-size:15px;color:var(--text-2);line-height:1.6}

/* ============ Dropzone ============ */
.dropzone{max-width:680px;margin:32px auto 0;border:1px dashed var(--border-strong);border-radius:14px;background:var(--surface);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);padding:44px 32px;text-align:center;transition:.2s;cursor:pointer;box-shadow:var(--shadow)}
.dropzone:hover,.dropzone.dragover{border-color:var(--accent-dim);border-style:solid;box-shadow:0 0 0 3px var(--accent-tint),var(--shadow)}
.dropzone .dz-icon{width:52px;height:52px;margin:0 auto 16px;border-radius:12px;background:var(--accent);color:#000;display:flex;align-items:center;justify-content:center;transition:.2s}
.dropzone .dz-icon svg.i{width:24px;height:24px}
.dropzone.dragover .dz-icon{transform:scale(1.08)}
.dropzone h2{font-size:17px;font-weight:600;letter-spacing:-.2px}
.dropzone p{color:var(--text-2);font-size:13px;margin-top:5px}
.dz-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:20px}
.btn{display:inline-flex;align-items:center;gap:7px;border-radius:var(--r);font-size:13px;font-weight:500;padding:9px 15px;border:1px solid var(--border);background:var(--surface);color:var(--text);transition:.15s;text-decoration:none}
.btn:hover{border-color:var(--border-strong);background:var(--bg-subtle)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#000;font-weight:600}
.btn.primary:hover{background:var(--accent-dim);border-color:var(--accent-dim)}
.btn.ghost{border-color:transparent;background:transparent;color:var(--text-2)}
.btn.ghost:hover{color:var(--text);background:var(--bg-subtle)}
.privacy-line{display:flex;align-items:center;justify-content:center;gap:7px;margin-top:20px;font-size:12.5px;color:var(--text-2);font-weight:500}
.privacy-line svg.i{color:var(--text)}
.formats{margin-top:6px;text-align:center;font-size:12px;color:var(--text-3)}

/* ============ Features ============ */
.features{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;max-width:960px;margin:64px auto 0}
.feature{background:var(--surface);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid var(--border);border-radius:var(--r-lg);padding:20px;transition:.2s;box-shadow:var(--shadow)}
.feature:hover{border-color:var(--border-strong)}
.feature .f-icon{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;margin-bottom:12px;background:var(--accent-tint);color:var(--text)}
.feature .f-icon svg.i{width:16px;height:16px}
.feature h3{font-size:14px;font-weight:600;margin-bottom:5px;letter-spacing:-.1px}
.feature p{font-size:13px;color:var(--text-2);line-height:1.55}

/* ============ Prose (SEO content / legal) ============ */
.prose{max-width:760px;margin:48px auto 0;background:var(--surface);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);padding:36px 42px;font-size:14.5px;line-height:1.75;color:var(--text)}
.prose h2{font-size:17px;font-weight:600;letter-spacing:-.2px;margin:26px 0 10px}
.prose h2:first-child{margin-top:0}
.prose h3{font-size:14.5px;font-weight:600;margin:20px 0 8px}
.prose p{margin:9px 0;color:var(--text-2)}
.prose ul,.prose ol{padding-left:1.4em;margin:9px 0;color:var(--text-2)}
.prose li{margin:5px 0}
.prose a{color:var(--text);font-weight:600;text-decoration:none;border-bottom:2px solid var(--accent)}
.prose code{background:var(--code-bg);padding:.15em .4em;border-radius:5px;font-size:.86em;font-family:var(--font-mono)}
.prose strong{color:var(--text)}
.prose .muted{color:var(--text-3);font-size:12.5px}
.prose table{border-collapse:collapse;width:100%;margin:12px 0;font-size:.92em}
.prose th,.prose td{border:1px solid var(--border);padding:8px 12px;text-align:left;color:var(--text-2)}
.prose th{background:var(--bg-subtle);font-weight:600;color:var(--text)}

/* FAQ */
.faq{max-width:760px;margin:20px auto 0;padding:0 0}
.faq details{background:var(--surface);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow);margin-bottom:10px;padding:0 20px}
.faq summary{font-size:14px;font-weight:600;padding:15px 0;cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--text-3);font-size:16px;flex-shrink:0}
.faq details[open] summary::after{content:"−"}
.faq details p{font-size:13.5px;color:var(--text-2);line-height:1.65;padding:0 0 15px}
.section-title{max-width:760px;margin:56px auto 0;font-size:12px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--text-3)}
@media(max-width:820px){.section-title,.faq,.prose{margin-left:auto;margin-right:auto}}

/* ============ Footer ============ */
footer.site{margin-top:80px;border-top:1px solid var(--border);padding:28px 24px;text-align:center;font-size:12.5px;color:var(--text-3)}
footer.site .f-links{display:flex;flex-wrap:wrap;gap:4px 18px;justify-content:center;margin-bottom:12px}
footer.site a{color:var(--text-2);text-decoration:none}
footer.site a:hover{color:var(--text)}
footer.site .f-note{line-height:1.7}

/* ============ Reader ============ */
#reader{display:none}
#progress{position:fixed;top:0;left:0;height:2px;width:0;background:var(--accent);z-index:100;transition:width .1s linear}
.toolbar{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 90%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}
.toolbar-inner{max-width:1320px;margin:0 auto;padding:0 16px;height:52px;display:flex;align-items:center;gap:8px}
.toolbar .spacer{flex:1}
.tabs{display:flex;gap:5px;overflow-x:auto;max-width:42vw;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tab{display:flex;align-items:center;gap:7px;padding:6px 11px;border-radius:var(--r);font-size:12.5px;font-weight:500;border:1px solid var(--border);background:var(--surface);color:var(--text-2);white-space:nowrap;transition:.15s}
.tab.active{background:var(--accent);border-color:var(--accent);color:#000;font-weight:600}
.tab .close{opacity:.55;font-size:10px;padding:0 2px}
.tab .close:hover{opacity:1}
.tool-group{display:flex;align-items:center;gap:2px;border:1px solid var(--border);border-radius:var(--r);padding:2px;background:var(--surface)}
.tool-group button{border:none;background:transparent;color:var(--text-2);font-size:12.5px;font-weight:600;padding:5px 9px;border-radius:5px;transition:.15s;display:flex;align-items:center}
.tool-group button:hover{background:var(--bg-subtle);color:var(--text)}
.tool-group button.on{background:var(--accent);color:#000}
.export-btn{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:500;padding:7px 12px;border-radius:var(--r);border:1px solid var(--border);background:var(--surface);color:var(--text);transition:.15s;white-space:nowrap}
.export-btn:hover{border-color:var(--border-strong);background:var(--bg-subtle)}
.export-btn.primary{background:var(--accent);color:#000;border-color:var(--accent);font-weight:600}
.export-btn.primary:hover{background:var(--accent-dim);border-color:var(--accent-dim)}
.reader-layout{max-width:1320px;margin:0 auto;display:flex;gap:0;align-items:flex-start}
aside#toc{position:sticky;top:52px;width:250px;flex-shrink:0;max-height:calc(100vh - 52px);overflow-y:auto;padding:28px 8px 40px 18px;font-size:12.5px}
#toc .toc-title{font-size:10.5px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--text-3);margin-bottom:10px;padding-left:9px}
#toc a{display:block;color:var(--text-2);text-decoration:none;font-weight:500;padding:5px 9px;border-radius:var(--r);line-height:1.4;transition:.12s}
#toc a:hover{color:var(--text);background:var(--bg-subtle)}
#toc a.h2{padding-left:20px}
#toc a.h3{padding-left:32px;font-size:12px}
#toc a.active{color:var(--text);background:var(--accent-tint);font-weight:600}
main.doc-wrap{flex:1;min-width:0;padding:28px 28px 96px}
article#doc{max-width:780px;margin:0 auto;background:var(--surface);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);padding:46px 52px;font-size:var(--doc-size);line-height:1.75;color:var(--text)}
article#doc.serif{font-family:Georgia,'Times New Roman',serif}
#doc h1,#doc h2,#doc h3,#doc h4{font-family:var(--font-sans);font-weight:600;letter-spacing:-.4px;line-height:1.3;scroll-margin-top:76px}
#doc h1{font-size:1.75em;margin:.4em 0 .6em}
#doc h2{font-size:1.35em;margin:1.6em 0 .6em;padding-bottom:.3em;border-bottom:1px solid var(--border)}
#doc h3{font-size:1.1em;margin:1.4em 0 .5em}
#doc p{margin:.9em 0}
#doc a{color:var(--text);font-weight:600;text-decoration:none;border-bottom:2px solid var(--accent)}
#doc ul,#doc ol{padding-left:1.5em;margin:.9em 0}
#doc li{margin:.35em 0}
#doc li.task-item{list-style:none;margin-left:-1.5em}
#doc input[type=checkbox]{accent-color:var(--accent-dim)}
#doc blockquote{border-left:3px solid var(--accent);background:var(--bg);padding:10px 16px;margin:1.1em 0;border-radius:0 var(--r) var(--r) 0;color:var(--text-2)}
#doc code{background:var(--code-bg);padding:.15em .4em;border-radius:5px;font-size:.85em;font-family:var(--font-mono)}
#doc pre{background:var(--code-bg);border:1px solid var(--border);border-radius:10px;padding:15px 17px;overflow-x:auto;margin:1.1em 0;font-size:.85em;line-height:1.6}
#doc pre code{background:none;padding:0;font-size:1em}
#doc table{border-collapse:collapse;width:100%;margin:1.2em 0;font-size:.9em}
#doc th,#doc td{border:1px solid var(--border);padding:8px 12px;text-align:left}
#doc th{background:var(--bg);font-weight:600}
#doc img{max-width:100%;border-radius:10px}
#doc hr{border:none;border-top:1px solid var(--border);margin:2em 0}
#doc .mermaid{display:flex;justify-content:center;background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:20px;margin:1.2em 0}
#doc .img-missing{display:inline-flex;align-items:center;gap:7px;background:var(--bg);border:1px dashed var(--border-strong);border-radius:var(--r);padding:7px 13px;font-size:.8em;color:var(--text-3);font-weight:500}
.toc-toggle{display:none}
@media(max-width:960px){
  aside#toc{position:fixed;left:0;top:52px;bottom:0;background:var(--bg);z-index:60;border-right:1px solid var(--border);transform:translateX(-100%);transition:transform .25s;width:270px;padding-left:14px}
  aside#toc.open{transform:translateX(0);box-shadow:var(--shadow-lg)}
  .toc-toggle{display:flex}
  .tabs{max-width:28vw}
  .hide-mobile{display:none}
  main.doc-wrap{padding:16px 12px 80px}
  article#doc{padding:26px 20px;border-radius:12px}
  .prose{padding:26px 22px}
}

/* ============ Modal / Toast ============ */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);backdrop-filter:blur(3px);z-index:90;display:none;align-items:center;justify-content:center;padding:20px}
.modal-overlay.open{display:flex}
.modal{background:var(--surface);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow-lg);width:100%;max-width:600px;padding:24px}
.modal h3{font-size:15px;font-weight:600;margin-bottom:3px}
.modal p.hint{font-size:12.5px;color:var(--text-2);margin-bottom:13px}
.modal textarea{width:100%;height:220px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);padding:13px;font-family:var(--font-mono);font-size:12.5px;resize:vertical;outline:none}
.modal textarea:focus,.modal input:focus{border-color:var(--accent-dim);box-shadow:0 0 0 3px var(--accent-tint)}
.modal input[type=text]{width:100%;border:1px solid var(--border);border-radius:var(--r);background:var(--bg);color:var(--text);padding:10px 13px;font-size:13px;outline:none;font-family:inherit}
.modal .modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
#toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%) translateY(80px);background:#000;color:#fff;font-size:12.5px;font-weight:500;padding:10px 18px;border-radius:var(--r);box-shadow:var(--shadow-lg);z-index:120;transition:transform .3s;pointer-events:none;max-width:86vw}
[data-theme="dark"] #toast{background:#F2F2F2;color:#000}
#toast.show{transform:translateX(-50%) translateY(0)}

/* ============ PDF export (offscreen render target) ============ */
.pdf-doc{position:absolute;left:-10000px;top:0;width:800px;background:#fff;color:#111;font-family:var(--font-sans);font-size:14px;line-height:1.7;padding:2px}
.pdf-doc .pdf-meta{font-size:10px;color:#999;border-bottom:1px solid #e5e5e5;padding-bottom:6px;margin-bottom:16px}
.pdf-doc h1{font-size:26px;font-weight:700;margin:10px 0 12px;color:#000}
.pdf-doc h2{font-size:20px;font-weight:700;margin:20px 0 10px;padding-bottom:5px;border-bottom:1px solid #e5e5e5;color:#000}
.pdf-doc h3{font-size:16px;font-weight:700;margin:16px 0 8px;color:#000}
.pdf-doc p{margin:8px 0}
.pdf-doc ul,.pdf-doc ol{padding-left:22px;margin:8px 0}
.pdf-doc li{margin:4px 0}
.pdf-doc li.task-item{list-style:none;margin-left:-22px}
.pdf-doc blockquote{border-left:3px solid #99FF00;background:#fafafa;padding:8px 14px;margin:10px 0;color:#555}
.pdf-doc code{background:#f4f4f4;padding:1px 4px;border-radius:3px;font-family:var(--font-mono);font-size:12px;color:#111}
.pdf-doc pre{background:#f6f6f6;border:1px solid #e2e2e2;border-radius:6px;padding:12px;font-size:12px;line-height:1.55;white-space:pre-wrap;word-wrap:break-word;overflow:hidden}
.pdf-doc pre code{background:none;padding:0}
.pdf-doc table{border-collapse:collapse;width:100%;margin:10px 0;font-size:13px}
.pdf-doc th,.pdf-doc td{border:1px solid #ccc;padding:6px 10px;text-align:left;color:#111}
.pdf-doc th{background:#f2f2f2;font-weight:700}
.pdf-doc img,.pdf-doc svg{max-width:100%}
.pdf-doc a{color:#000}
.pdf-doc hr{border:none;border-top:1px solid #ddd;margin:16px 0}
.pdf-doc .mermaid{background:#fff;border:none;padding:6px 0;display:flex;justify-content:center}
.pdf-doc .img-missing{color:#999;font-size:11px;border:1px dashed #ccc;border-radius:5px;padding:5px 10px}

/* ============ Print ============ */
@media print{
  header.site,.toolbar,#toc,#progress,#toast,.toc-toggle,footer.site{display:none!important}
  body::before,body::after{display:none!important}
  body{background:#fff;color:#000}
  #page{display:none!important}
  main.doc-wrap{padding:0}
  article#doc{max-width:100%;font-size:12pt;border:none;box-shadow:none;padding:0;background:#fff}
  .print-header{display:block!important;font-size:9pt;color:#888;border-bottom:1px solid #ddd;padding-bottom:6px;margin-bottom:18px}
}
.print-header{display:none}
