@font-face{font-family:"LM";src:url(https://cdn.jsdelivr.net/npm/latex.css@1.10.0/fonts/LM-regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"LM";src:url(https://cdn.jsdelivr.net/npm/latex.css@1.10.0/fonts/LM-italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"LM";src:url(https://cdn.jsdelivr.net/npm/latex.css@1.10.0/fonts/LM-bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:"LM";src:url(https://cdn.jsdelivr.net/npm/latex.css@1.10.0/fonts/LM-bold-italic.woff2) format("woff2");font-weight:700;font-style:italic;font-display:swap}
:root{--accent:#2EBB55;--accent2:#1f9a43;--ink:#111;--muted:#5b6b62;--rule:#000;--soft:#d9d9d9;--hl:#EAF8EE;--bg:#eef1ef;--ui:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:70px}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"LM","Latin Modern Roman","Computer Modern Serif",Georgia,serif;font-size:18px;line-height:1.55;-webkit-font-smoothing:antialiased}

/* ---------- toolbar ---------- */
.toolbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 18px;background:rgba(255,255,255,.94);backdrop-filter:blur(8px);border-bottom:1px solid #dfe5e1;font-family:var(--ui);font-size:14px}
.brand{display:flex;align-items:center;gap:8px;color:var(--ink);text-decoration:none;font-weight:700}.brand img{height:26px}
.tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.tbtn{display:inline-flex;align-items:center;gap:6px;border:1px solid #d5ddd8;background:#fff;color:var(--ink);padding:7px 12px;border-radius:8px;font:600 14px var(--ui);cursor:pointer;text-decoration:none;white-space:nowrap}
.tbtn:hover{border-color:var(--accent)}
.tbtn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.tbtn.primary:hover{background:var(--accent2)}
.tbtn.ghost{background:transparent}
.tbtn.check input{margin:0;accent-color:var(--accent)}
.dot{width:7px;height:7px;border-radius:50%;background:#d97706;display:inline-block}

/* ---------- paper ---------- */
.paper{max-width:820px;margin:28px auto 80px;background:#fff;padding:64px 72px 72px;box-shadow:0 1px 3px rgba(0,0,0,.06),0 12px 40px rgba(0,0,0,.06);counter-reset:sec tbl fig}
.paper p{margin:0 0 .85em;text-align:justify;hyphens:auto}
.cover{text-align:left;padding:8px 0 40px;margin-bottom:28px;border-top:3px solid var(--accent)}
.cover img{height:64px;margin:36px 0 26px}
.cover h1{font-size:2.3rem;line-height:1.15;margin:0 0 .25em;font-weight:700}
.subtitle{font-size:1.3rem;color:var(--muted);margin:0 0 1.2em!important;text-align:left!important}
.meta{color:var(--muted);font-size:.95rem;text-align:left!important}
h2{font-size:1.2rem;font-weight:700;color:var(--accent);margin:2.2em 0 .7em;line-height:1.3}
section>h2:not(.unnum){counter-increment:sec}
section>h2:not(.unnum)::before{content:counter(sec) ".\2002"}
section{counter-reset:sub}
h3{font-size:1.1rem;font-weight:700;margin:1.8em 0 .5em;counter-increment:sub}
h3::before{content:counter(sec) "." counter(sub) "\2002"}
#recommendation h3::before{content:counter(sec) "." counter(sub) "\2002"}
.toc ol{list-style:none;padding:0;margin:0;columns:2;column-gap:40px}
.toc li{break-inside:avoid;padding:2px 0}
.toc a{color:var(--ink);text-decoration:none}.toc a:hover{color:var(--accent2)}
a{color:var(--accent2)}

/* booktabs tables */
figure{margin:1.2em 0 1.4em}
figure.tbl{counter-increment:tbl}
figure.tbl figcaption{text-align:center;font-size:.85rem;margin-bottom:6px}
figure.tbl figcaption::before{content:"Table " counter(tbl) ": ";font-weight:700}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;font-size:.84rem;line-height:1.35;border-top:1.4px solid var(--rule);border-bottom:1.4px solid var(--rule)}
thead th{font-weight:700;text-align:left;padding:9px 8px;border-bottom:.8px solid var(--rule);vertical-align:bottom}
td{padding:9px 8px;border-top:.5px solid #c9c9c9;vertical-align:middle}
tbody tr:first-child td{border-top:0}
.r{text-align:right!important;white-space:nowrap}.c{text-align:center}
tr.hl td{background:var(--hl)}tr.b td{font-weight:700}
td.over{color:#b4231b}
.small{font-size:.8rem}
.yes{color:var(--accent)}.no{color:#bbb}
figure.fig{counter-increment:fig;text-align:center}
figure.fig img,figure.fig svg{width:100%;height:auto;display:block}
figure.fig figcaption{font-size:.85rem;margin-top:8px}
figure.fig figcaption::before{content:"Figure " counter(fig) ": ";font-weight:700}
svg.chart text{font-family:"LM",serif;font-size:12px;fill:#333}
svg.chart .axis{font-size:13px}
svg.chart .grid{stroke:#e6e6e6;stroke-width:1}

/* definition lists */
dl.defs{display:grid;grid-template-columns:max-content 1fr;gap:4px 22px;margin:0;font-size:.95rem}
dl.defs.math{grid-template-columns:minmax(150px,max-content) 1fr}
dl.defs dt{font-weight:400}dl.defs.wide dt{font-weight:700}
dl.defs dd{margin:0}
ol.refs{padding-left:0;list-style:none;font-size:.85rem}
ol.refs li{padding-left:2.2em;text-indent:-2.2em;margin-bottom:.45em;overflow-wrap:anywhere}

/* calculations */
body.show-calc .calc-off,body:not(.show-calc) .calc-on{display:none}
.calc-on .katex-display{overflow-x:auto;overflow-y:hidden;padding:2px 0}
.katex{font-size:1.02em}.katex-display{margin:.6em 0}

/* ---------- inputs panel ---------- */
.panel{position:fixed;top:0;right:0;bottom:0;z-index:40;width:min(440px,100vw);background:#fff;box-shadow:-10px 0 40px rgba(0,0,0,.15);transform:translateX(100%);transition:transform .25s ease;font-family:var(--ui);font-size:14px;display:flex}
.panel.open{transform:none}
.panel-inner{display:flex;flex-direction:column;width:100%;overflow:auto}
.panel-head{display:flex;justify-content:space-between;align-items:center;padding:16px 20px 4px}
.panel-head h2{font:700 18px var(--ui);color:var(--ink);margin:0}
.hint{color:var(--muted);margin:0 20px 8px;font-size:13px}
.panel fieldset{border:0;margin:0;padding:8px 20px 4px}
.panel legend{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--accent2);padding:0;margin-bottom:6px}
.panel .grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}
.lab{display:block;font-size:12px;color:#333;margin-bottom:3px;line-height:1.25}
.inp{display:flex;align-items:center;border:1px solid #d5ddd8;border-radius:8px;background:#fff;overflow:hidden}
.inp:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px rgba(46,187,85,.15)}
.inp input{border:0;flex:1;min-width:0;padding:7px 8px;font:14px var(--ui);background:transparent;outline:none}
.inp small{color:var(--muted);font-size:11px;padding:0 8px;white-space:nowrap}
.panel-foot{position:sticky;bottom:0;display:flex;gap:8px;justify-content:flex-end;padding:12px 20px;background:#fff;border-top:1px solid #eef0ef;margin-top:auto}
.scrim{position:fixed;inset:0;z-index:30;background:rgba(15,30,20,.25);opacity:0;pointer-events:none;transition:opacity .2s}
.scrim.open{opacity:1;pointer-events:auto}
.x{border:0;background:none;font-size:24px;line-height:1;cursor:pointer;color:#555}

/* ---------- dialog ---------- */
dialog{border:0;border-radius:14px;padding:24px;width:min(820px,94vw);font-family:var(--ui);font-size:14px;box-shadow:0 30px 80px rgba(0,0,0,.25)}
dialog::backdrop{background:rgba(15,30,20,.35)}
dialog h2{font:700 18px var(--ui);color:var(--ink);margin:0 0 14px}
dialog h3{font:700 15px var(--ui);margin:0}dialog h3::before{content:none}
.dlg-close{position:absolute;right:12px;top:10px}
.choices{display:grid;grid-template-columns:1fr 1.3fr;gap:14px}
.choice{border:1px solid #e1e7e3;border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:8px}
.choice p{color:var(--muted);margin:0}
.choice label{display:block}
.choice input{width:100%;padding:8px 10px;border:1px solid #d5ddd8;border-radius:8px;font:14px var(--ui)}
.choice input:focus{outline:none;border-color:var(--accent)}
.choice .tbtn{margin-top:auto;justify-content:center}
.two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.busy-note{color:var(--muted);margin:12px 0 0}

/* ---------- login ---------- */
body.login{display:grid;place-items:center;min-height:100vh;background:var(--bg)}
.login-card{width:min(380px,92vw);background:#fff;padding:40px 36px;box-shadow:0 12px 40px rgba(0,0,0,.08);border-top:3px solid var(--accent)}
.login-logo{height:52px}
.login-card h1{font-size:1.6rem;margin:18px 0 2px}
.login-card .muted{color:var(--muted);margin:0 0 18px}
.login-card label{display:block;font:600 13px var(--ui);margin-bottom:6px}
.login-card input{width:100%;padding:10px 12px;border:1px solid #d5ddd8;border-radius:8px;font:15px var(--ui)}
.login-card input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(46,187,85,.15)}
.login-card button{margin-top:14px;width:100%;justify-content:center;padding:10px}
.alert{color:#b4231b;font:13px var(--ui)}
code{font-size:.9em}

/* ---------- small screens ---------- */
@media (max-width:760px){
  body{font-size:16px}
  .paper{margin:0;padding:28px 18px 48px;box-shadow:none}
  .paper p{text-align:left;hyphens:manual}
  .cover h1{font-size:1.7rem}.cover img{height:48px;margin:24px 0 18px}
  .toc ol{columns:1}
  .tools .tbtn{padding:6px 9px;font-size:13px}
  .tbtn.ghost{display:none}
  .toolbar{padding:8px 12px}.tools{flex-wrap:nowrap;gap:6px}.lg{display:none}
  .brand span{display:none}
  dl.defs,dl.defs.math{grid-template-columns:1fr;gap:0}
  dl.defs dd{margin-bottom:8px;color:#333}
  .choices,.two{grid-template-columns:1fr}
  .panel .grid{grid-template-columns:1fr 1fr}
  table{font-size:.78rem}
}
@media print{.toolbar,.panel,.scrim,dialog{display:none!important}.paper{box-shadow:none;margin:0;max-width:none}body{background:#fff}}
