
:root{color-scheme:light dark;--bg:#f6f3ec;--card:#fffdf8;--ink:#17202a;--muted:#5b6470;--line:#ddd6c8;--accent:#7a1020;--accent-ink:#fff;--chip:#eee7d8;--ok:#1d6b3a;--warn:#9a5b00;--bad:#9b1c1c;--focus:#2b6cb0;--shadow:0 1px 2px rgba(20,20,20,.06),0 8px 24px -16px rgba(20,20,20,.25)}
@media (prefers-color-scheme:dark){:root{--bg:#0f1115;--card:#171a20;--ink:#ecebe6;--muted:#a3a7ae;--line:#2a2f38;--accent:#e2b4bb;--accent-ink:#1b0a0d;--chip:#232833;--ok:#7fd49b;--warn:#f0c674;--bad:#ff9a9a;--focus:#8ab4f8;--shadow:none}}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;overflow-x:clip}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 -apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;overflow-x:clip;min-height:100dvh;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
a{color:inherit}h1,h2,h3{font-family:Georgia,"Iowan Old Style","Times New Roman",serif;line-height:1.15;margin:0 0 .4em;font-weight:600;letter-spacing:-.01em}
h1{font-size:clamp(1.6rem,2.6vw + 1rem,2.4rem)}h2{font-size:1.35rem}h3{font-size:1.1rem}
.wrap{max-width:1180px;margin:0 auto;padding-inline:max(16px,env(safe-area-inset-left),env(safe-area-inset-right))}
.top{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(1.3) blur(10px);border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top)}
.top .wrap{display:flex;align-items:center;gap:12px;min-height:56px;flex-wrap:wrap;padding-block:6px}
.brand{font-family:Georgia,serif;font-weight:700;font-size:1.2rem;text-decoration:none;letter-spacing:.01em;margin-right:auto}
.brand span{color:var(--accent)}
.nav{display:flex;gap:4px;flex-wrap:wrap}.nav a,.btn,button.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0 14px;border-radius:12px;border:1px solid var(--line);background:var(--card);color:var(--ink);text-decoration:none;font:inherit;font-size:16px;cursor:pointer;white-space:nowrap}
.nav a[aria-current=page]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn.small{min-height:44px;padding:0 12px;font-size:15px}.btn[disabled]{opacity:.45;cursor:not-allowed}
.btn:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
main{padding-block:20px 120px}
.views{display:flex;gap:6px;flex-wrap:wrap;padding-block:4px 8px}
.views a{flex:0 0 auto}
.filters{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px;margin-block:10px 16px}
.filters label{display:grid;gap:4px;font-size:14px;color:var(--muted)}
.filters input,.filters select,textarea,input[type=password],input[type=text]{font:inherit;font-size:16px;min-height:44px;padding:8px 12px;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--ink);width:100%}
.filters>*{min-width:0}.filters .row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;min-width:0}.filters input[type=date]{min-width:0;max-width:100%}.filters .actions{display:flex;gap:8px;flex-wrap:wrap}
@media(min-width:760px){.filters{grid-template-columns:2fr 1fr 1fr auto;align-items:end}.filters .row{grid-column:span 1}}
.count{color:var(--muted);font-size:14px;margin-block:0 10px}
.grid{display:grid;grid-template-columns:1fr;gap:12px}@media(min-width:700px){.grid{grid-template-columns:1fr 1fr}}@media(min-width:1100px){.grid{grid-template-columns:1fr 1fr 1fr}}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:8px;min-width:0}
.card .head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;color:var(--muted)}
.chip{display:inline-flex;align-items:center;min-height:24px;padding:0 9px;border-radius:999px;background:var(--chip);font-size:12.5px;font-weight:600;letter-spacing:.02em;text-transform:uppercase}
.chip.undated{background:transparent;border:1px dashed var(--warn);color:var(--warn)}.chip.ok{color:var(--ok)}.chip.warn{color:var(--warn)}.chip.bad{color:var(--bad)}
.card h3 a{text-decoration:none}.card h3 a:hover{text-decoration:underline}
.card p{margin:0;color:var(--muted);font-size:15px;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.card .meta{font-size:13px;color:var(--muted)}
.card .acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:auto}
.pick{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 10px;border-radius:12px;border:1px solid var(--line);font-size:15px;cursor:pointer;margin-left:auto}
.pick input{width:22px;height:22px;margin:0;accent-color:var(--accent)}
.fav{font-size:18px;line-height:1}.fav[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}
.unavail{color:var(--bad);font-size:14px}
.rail{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--card);border-top:1px solid var(--line);padding:10px max(16px,env(safe-area-inset-left)) calc(10px + env(safe-area-inset-bottom));display:none;gap:10px;align-items:center;flex-wrap:wrap}
.rail.show{display:flex}.rail .n{font-weight:600}.rail .hint{color:var(--muted);font-size:13px;flex-basis:100%}
.notice{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:12px;padding:12px 14px;margin-block:12px;font-size:15px}
.notice.bad{border-left-color:var(--bad)}.notice.ok{border-left-color:var(--ok)}.notice.warn{border-left-color:var(--warn)}
.doc-meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;color:var(--muted);font-size:14px;margin-block:6px 14px}
.reader{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:clamp(14px,3vw,34px);max-width:820px;font-size:17px;line-height:1.6}
.reader h2{margin-top:1.4em;font-size:1.3rem}.reader h3{margin-top:1.2em}.reader p{margin:0 0 .9em;overflow-wrap:anywhere}.reader table{width:100%;border-collapse:collapse;font-size:14.5px;margin-block:12px;display:block;overflow-x:auto}.reader th,.reader td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);padding:6px 8px}
.reader ol.sources{font-size:14px;color:var(--muted);padding-left:1.2em}.reader ol.sources a{overflow-wrap:anywhere}
progress.progress{display:block;width:100%;height:10px;border:0;border-radius:999px;overflow:hidden;margin-block:8px 4px;background:var(--chip);-webkit-appearance:none;appearance:none}progress.progress::-webkit-progress-bar{background:var(--chip);border-radius:999px}progress.progress::-webkit-progress-value{background:var(--accent);border-radius:999px}progress.progress::-moz-progress-bar{background:var(--accent);border-radius:999px}
.lesson{display:flex;gap:12px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px;text-decoration:none}
.lesson .num{font-family:Georgia,serif;font-size:1.5rem;width:44px;text-align:center;color:var(--accent)}.lesson .t{flex:1;min-width:0}.lesson .t small{display:block;color:var(--muted);font-size:13px}
.section{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;margin-block:14px;max-width:860px}
.q{border:0;border-top:1px solid var(--line);margin:0;padding:12px 0;min-inline-size:0}.q:first-of-type{border-top:0}.q legend{padding:0}.q legend,.q .prompt{font-weight:600;margin-bottom:8px}
.opt{display:flex;gap:10px;align-items:flex-start;min-height:44px;padding:8px 10px;border-radius:10px;border:1px solid transparent;cursor:pointer}.opt:hover{border-color:var(--line)}.opt input{width:22px;height:22px;margin:2px 0 0;flex:0 0 auto;accent-color:var(--accent)}
.opt.right{border-color:var(--ok)}.opt.wrong{border-color:var(--bad)}.why{font-size:14.5px;color:var(--muted);margin:4px 0 0 32px}
.htmlframe{width:100%;min-height:70vh;height:80vh;border:1px solid var(--line);border-radius:12px;background:#fff}.reader.frame{padding:0}
.stack{display:grid;gap:10px}.inline{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
textarea{min-height:160px;resize:vertical;line-height:1.5}
.muted{color:var(--muted)}.small{font-size:14px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;overflow-wrap:anywhere}
.login{max-width:440px;margin:8vh auto 0}.login form{display:grid;gap:12px}
table.status{width:100%;border-collapse:collapse;font-size:15px}table.status th,table.status td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--line);vertical-align:top}
@media(max-width:420px){.nav a{padding:0 10px;font-size:15px}}@media(max-width:600px){table.status thead{display:none}table.status tr{display:grid;grid-template-columns:1fr auto;padding-block:8px;border-bottom:1px solid var(--line)}table.status td{border:0;padding:2px 0}table.status td:first-child{grid-column:1/-1;font-weight:600}}
footer{color:var(--muted);font-size:13px;padding-block:24px;border-top:1px solid var(--line);margin-top:30px}
.sr{position:absolute;left:-9999px}
