:root{--paper:#f6f2e8;--card:#fffdf7;--ink:#2a2923;--mut:#7b7667;--line:#d9d2bf;--blue:#2d4a85;--crit:#a83a24;--high:#c2641a;--med:#a58218;--low:#4c7a50;--chill:#8a8778}
@media(prefers-color-scheme:dark){:root{--paper:#1c1b18;--card:#252420;--ink:#ebe7da;--mut:#a29d8c;--line:#3a382f;--blue:#8fb0ee}}
*{box-sizing:border-box}body{margin:0;font:16px/1.45 system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--paper);color:var(--ink)}
h1,h2,h3{font-family:Georgia,"Times New Roman",serif;font-weight:600;margin:0 0 10px}h3{font-size:17px}
button,input,select{font:inherit;color:inherit}
input,select{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:2px;background:var(--card);margin-bottom:8px}
input:focus,select:focus{outline:2px solid var(--blue);outline-offset:-1px}
button{padding:7px 12px;border:1px solid var(--ink);border-radius:2px;background:transparent;cursor:pointer}
button:hover{background:var(--ink);color:var(--paper)}
button.primary,.tabs .on{background:var(--ink);color:var(--paper)}
button.ghost{border:0;color:var(--mut);padding:4px 6px;text-decoration:underline}button.ghost:hover{background:none;color:var(--crit)}
button.mini{padding:2px 8px;font-size:13px;border-color:var(--line);margin:0 4px 4px 0}
.login{max-width:340px;margin:14vh auto;padding:0 20px}.login h1{font-size:30px}.sub,.hint,.meta{color:var(--mut)}.meta{font-size:14px}
.tabs{display:flex;margin:18px 0 12px}.tabs button{flex:1;border-radius:0}.err{color:var(--crit);min-height:1.3em;font-size:14px}
header{display:flex;justify-content:space-between;align-items:baseline;padding:14px 24px;border-bottom:2px solid var(--ink)}header b{font:600 20px Georgia,serif}
.wrap{display:grid;grid-template-columns:1fr 300px;gap:32px;max-width:1000px;margin:24px auto;padding:0 20px}
@media(max-width:800px){.wrap{grid-template-columns:1fr!important;gap:8px}}
.card{background:var(--card);border:1px solid var(--line);padding:16px 18px;margin-bottom:20px}
.hero{border-left:5px solid var(--ink)}
ul{list-style:none;margin:0;padding:0}
.item{display:flex;gap:12px;align-items:center;padding:10px 0 10px 12px;border-top:1px solid var(--line);border-left:4px solid var(--c)}.item:first-child{border-top:0}
.crit{--c:var(--crit)}.high{--c:var(--high)}.med{--c:var(--med)}.low{--c:var(--low)}.chill{--c:var(--chill)}
.lvl{color:var(--c);font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;width:64px;flex:none}.lvl small{display:block;font-weight:400;letter-spacing:0}
.grow{flex:1;min-width:0}.sw{display:inline-block;width:10px;height:10px;margin-right:4px;vertical-align:baseline}
.row{display:flex;gap:8px}.cls{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px dotted var(--line)}
label.meta{display:block;margin:2px 0}
.item{flex-wrap:wrap}.tag{font-size:11px;border:1px solid var(--ink);padding:0 5px;text-transform:uppercase;letter-spacing:.05em;vertical-align:middle}
.stats{display:flex;flex-wrap:wrap;gap:6px 22px;margin-bottom:20px;color:var(--mut);font-size:14px}.stats b{color:var(--ink);font:600 20px Georgia,serif;margin-right:3px}
.chips{margin-bottom:16px}button.mini.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.prog{width:auto;padding:4px;margin:0;font-size:13px}.cls select{width:auto;margin:0 6px;padding:3px}
.grades{display:flex;flex-wrap:wrap;gap:4px 10px;margin:4px 0 8px}.grades label{font-size:14px}.grades input{width:auto;margin:0 3px 0 0}
.grades{gap:6px}.pill{position:relative}.pill input{position:absolute;opacity:0;width:0;height:0;margin:0}
.pill span{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--line);background:var(--card);cursor:pointer;font-size:14px;user-select:none}
.pill:hover span{border-color:var(--ink)}.pill input:checked+span{background:var(--ink);color:var(--paper);border-color:var(--ink);font-weight:600}
.pill input:focus-visible+span{outline:2px solid var(--blue);outline-offset:2px}
.tabs button{font-size:14px}
