:root{--bg: #fcfcfd;--surface: #ffffff;--surface-2: #f5f6f8;--surface-3: #eceef2;--ink: #05070a;--ink-dim: #1a212b;--muted: #39424f;--subtle: #55606f;--line: #e6e8ed;--line-2: #d5d9e0;--accent: #0b7f8f;--on-accent: #ffffff;--accent-bg: rgba(11, 127, 143, .07);--accent-line: rgba(11, 127, 143, .32);--warn: #8f5f08;--warn-bg: rgba(143, 95, 8, .09);--danger: #bd3327;--danger-bg: rgba(189, 51, 39, .07);--shadow-fab: 0 6px 20px rgba(14, 19, 25, .16);color-scheme:light;--radius: 8px;--mono: ui-monospace, "SF Mono", SFMono-Regular, "Cascadia Mono", "Segoe UI Mono", Consolas, monospace}@media(prefers-color-scheme:dark){:root:not([data-theme]){--bg: #08090b;--surface: #101216;--surface-2: #161920;--surface-3: #1d212a;--ink: #f2f5f8;--ink-dim: #d2d8e0;--muted: #a2abb8;--subtle: #7b8492;--line: #1c2028;--line-2: #272c36;--accent: #35e0f0;--on-accent: #04131a;--accent-bg: rgba(53, 224, 240, .09);--accent-line: rgba(53, 224, 240, .3);--warn: #f0b545;--warn-bg: rgba(240, 181, 69, .1);--danger: #ff6b5e;--danger-bg: rgba(255, 107, 94, .11);--shadow-fab: 0 6px 24px rgba(0, 0, 0, .45);color-scheme:dark}}:root[data-theme=dark]{--bg: #08090b;--surface: #101216;--surface-2: #161920;--surface-3: #1d212a;--ink: #f2f5f8;--ink-dim: #d2d8e0;--muted: #a2abb8;--subtle: #7b8492;--line: #1c2028;--line-2: #272c36;--accent: #35e0f0;--on-accent: #04131a;--accent-bg: rgba(53, 224, 240, .09);--accent-line: rgba(53, 224, 240, .3);--warn: #f0b545;--warn-bg: rgba(240, 181, 69, .1);--danger: #ff6b5e;--danger-bg: rgba(255, 107, 94, .11);--shadow-fab: 0 6px 24px rgba(0, 0, 0, .45);color-scheme:dark}:root[data-theme=claude]{--bg: #faf9f5;--surface: #ffffff;--surface-2: #f0eee6;--surface-3: #e7e4d8;--ink: #14120f;--ink-dim: #2b2723;--muted: #474139;--subtle: #665f54;--line: #e8e4da;--line-2: #d8d3c6;--accent: #ad5233;--on-accent: #ffffff;--accent-bg: rgba(217, 119, 87, .12);--accent-line: rgba(217, 119, 87, .42);--warn: #a9701a;--warn-bg: rgba(169, 112, 26, .11);--danger: #bc4c3a;--danger-bg: rgba(188, 76, 58, .09);--shadow-fab: 0 6px 20px rgba(70, 55, 40, .2);color-scheme:light}*{box-sizing:border-box}html,body{margin:0;padding:0}body{min-height:100vh;background:var(--bg);color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer}input,select,textarea{font:inherit;color:inherit}.app{max-width:640px;margin:0 auto;padding:0 16px calc(96px + env(safe-area-inset-bottom))}.top{position:sticky;top:0;z-index:20;margin:0 -16px;padding:12px 16px;background:color-mix(in srgb,var(--bg) 90%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.top-row{display:flex;align-items:center;gap:9px}.mark{flex:0 0 auto;display:grid;place-items:center;width:28px;height:28px;border:1px solid var(--accent-line);border-radius:var(--radius);background:var(--accent-bg);color:var(--accent);font-family:var(--mono);font-size:12px;font-weight:600}.course-pick{flex:1;min-width:0;position:relative;display:flex;align-items:center}.course-pick select{width:100%;height:36px;padding:0 32px 0 11px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface);font-size:15px;font-weight:590;letter-spacing:-.018em;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;text-overflow:ellipsis;transition:background .12s ease,border-color .12s ease,box-shadow .12s ease}.course-pick select:hover{border-color:var(--accent-line);background:var(--surface-2)}.course-pick select:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-bg)}.course-pick:after{content:"";position:absolute;right:11px;width:6px;height:6px;border-right:1.6px solid var(--muted);border-bottom:1.6px solid var(--muted);transform:translateY(-2px) rotate(45deg);pointer-events:none}.icon-action{flex:0 0 auto;width:36px;height:36px;display:grid;place-items:center;border:1px solid transparent;border-radius:var(--radius);background:transparent;color:var(--muted);transition:background .12s ease,color .12s ease,border-color .12s ease}.icon-action:hover{border-color:var(--line-2);background:var(--surface-2);color:var(--ink)}.icon-action-danger:hover{border-color:transparent;background:var(--danger-bg);color:var(--danger)}.icon-btn{flex:0 0 auto;width:32px;height:32px;display:grid;place-items:center;border:none;border-radius:var(--radius);background:transparent;color:var(--muted);font-size:17px;line-height:1;transition:background .12s ease,color .12s ease}.icon-btn:hover{background:var(--surface-2);color:var(--ink)}.search{position:relative;margin-top:10px}.search-icon{position:absolute;top:50%;left:13px;transform:translateY(-50%);width:12px;height:12px;border:1.6px solid var(--muted);border-radius:50%;pointer-events:none}.search-icon:after{content:"";position:absolute;top:9px;left:8px;width:6px;height:1.6px;background:var(--muted);transform:rotate(45deg);transform-origin:left center}.search input{width:100%;height:40px;padding:0 36px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface);outline:none;font-size:14.5px;-webkit-appearance:none;transition:border-color .12s ease,box-shadow .12s ease}.search input::-webkit-search-cancel-button{display:none}.search input:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-bg)}.search input::placeholder{color:var(--subtle)}.search-clear{position:absolute;top:50%;right:7px;transform:translateY(-50%);width:26px;height:26px;display:grid;place-items:center;border:none;border-radius:var(--radius);background:transparent;color:var(--muted);font-size:17px;line-height:1}.search-clear:hover{background:var(--surface-3);color:var(--ink)}.crumb{display:flex;align-items:center;gap:10px;padding:16px 0 12px}.crumb-back{flex:0 0 auto;width:40px;height:40px;display:grid;place-items:center;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface);color:var(--accent);font-family:var(--mono);font-size:21px;font-weight:600;line-height:1;transition:background .12s ease,border-color .12s ease,transform .12s ease}.crumb-back:hover{border-color:var(--accent-line);background:var(--accent-bg)}.crumb-back:active{transform:scale(.94)}.crumb-path{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.crumb-actions{flex:0 0 auto;display:flex;gap:2px}.ghost{padding:5px 9px;border:none;border-radius:var(--radius);background:transparent;color:var(--muted);font-size:12.5px;white-space:nowrap;transition:background .12s ease,color .12s ease}.ghost:hover{background:var(--surface-2);color:var(--ink)}.ghost-danger:hover{background:var(--danger-bg);color:var(--danger)}.headline{padding:2px 0 16px}.headline-code{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.1em;color:var(--accent)}.headline-name{margin:3px 0 0;font-size:23px;font-weight:630;letter-spacing:-.03em;line-height:1.15}.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.tile{padding:18px 15px 15px;border:1px solid var(--line);border-radius:12px;background:var(--surface);text-align:left;transition:border-color .13s ease,background .13s ease}.tile:hover{border-color:var(--accent-line);background:var(--surface-2)}.tile-num{display:block;font-family:var(--mono);font-size:27px;font-weight:600;letter-spacing:-.04em;line-height:1}.tile-num sup{font-size:14px;font-weight:500;color:var(--muted)}.tile-label{display:block;margin-top:8px;font-family:var(--mono);font-size:10px;letter-spacing:.11em;text-transform:uppercase;color:var(--muted)}.tile-count{display:block;margin-top:3px;font-size:12.5px;color:var(--subtle)}.list{border-top:1px solid var(--line)}.item{display:flex;align-items:center;gap:12px;width:100%;padding:15px 2px;border:none;border-bottom:1px solid var(--line);background:transparent;text-align:left;transition:background .11s ease}.item:hover{background:var(--surface-2)}.item-body{flex:1;min-width:0}.item-code{display:block;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.09em;color:var(--accent);margin-bottom:2px}.item-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:540;letter-spacing:-.015em}.item-meta{flex:0 0 auto;font-family:var(--mono);font-size:11.5px;color:var(--subtle);font-variant-numeric:tabular-nums}.item-chevron{flex:0 0 auto;width:6px;height:6px;border-right:1.5px solid var(--subtle);border-bottom:1.5px solid var(--subtle);transform:rotate(-45deg)}.block{margin-bottom:16px;border:1px solid var(--line);border-radius:12px;background:var(--surface);overflow:hidden}.block-head{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--surface-2)}.block-code{flex:0 0 auto;display:grid;place-items:center;min-width:30px;height:21px;padding:0 6px;border:1px solid var(--accent-line);border-radius:5px;background:var(--accent-bg);color:var(--accent);font-family:var(--mono);font-size:10px;font-weight:650;letter-spacing:.05em}.block-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:550}.block-count{flex:0 0 auto;font-family:var(--mono);font-size:10.5px;color:var(--muted)}.exam{display:flex;align-items:center;gap:11px;padding-right:12px;border-bottom:1px solid var(--line);transition:background .11s ease}.exam:last-child{border-bottom:none}.exam:hover{background:var(--surface-2)}.exam-open{flex:1;min-width:0;display:block;padding:11px 0 11px 14px;border:none;background:transparent;text-align:left;overflow:hidden}.exam-line{display:flex;align-items:center;gap:8px}.exam-year{font-family:var(--mono);font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}.exam-sub{display:block;margin-top:1px;font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.exam-size{flex:0 0 auto;font-family:var(--mono);font-size:10px;color:var(--subtle)}.exam-del{flex:0 0 auto;width:26px;height:26px;display:grid;place-items:center;border:none;border-radius:var(--radius);background:transparent;color:var(--subtle);font-size:15px;line-height:1;opacity:0;transition:opacity .12s ease,background .12s ease,color .12s ease}.exam:hover .exam-del,.exam-del:focus-visible{opacity:1}.exam-del:hover{background:var(--danger-bg);color:var(--danger)}@media(hover:none){.exam-del{opacity:1}}.tag{flex:0 0 auto;padding:2px 6px;border-radius:4px;background:var(--warn-bg);color:var(--warn);font-family:var(--mono);font-size:9.5px;font-weight:650;letter-spacing:.06em}.tag-term{background:var(--accent-bg);color:var(--accent)}.result-head{padding:10px 14px;border-bottom:1px solid var(--line);background:var(--surface-2);font-family:var(--mono);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result-head b{color:var(--ink-dim);font-weight:600}.state{padding:60px 16px;text-align:center}.state-title{margin:0;font-size:15px;font-weight:550;letter-spacing:-.015em;color:var(--ink-dim)}.state-text{margin:6px auto 0;max-width:300px;font-size:13px;color:var(--subtle)}.state-error .state-title{color:var(--danger)}.state-action{display:inline-flex;align-items:center;gap:7px;height:40px;margin-top:18px;padding:0 18px;border:none;border-radius:var(--radius);background:var(--accent);color:var(--on-accent);font-size:14px;font-weight:620}.fab{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:30;display:flex;align-items:center;gap:7px;height:44px;padding:0 20px;border:none;border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:14.5px;font-weight:620;letter-spacing:-.012em;box-shadow:var(--shadow-fab);transition:transform .12s ease}.fab:active{transform:translate(-50%) scale(.97)}.fab-plus{font-family:var(--mono);font-size:15px;font-weight:700}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:flex-end;justify-content:center;background:#0000009e;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.sheet{width:100%;max-width:520px;max-height:92vh;overflow-y:auto;padding:18px 17px calc(20px + env(safe-area-inset-bottom));border:1px solid var(--line-2);border-bottom:none;border-radius:14px 14px 0 0;background:var(--surface)}@media(min-width:600px){.scrim{align-items:center;padding:24px}.sheet{border-bottom:1px solid var(--line-2);border-radius:12px}}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.sheet-title{margin:0;font-size:16.5px;font-weight:620;letter-spacing:-.02em}.sheet-close{flex:0 0 auto;width:30px;height:30px;display:grid;place-items:center;border:none;border-radius:var(--radius);background:transparent;color:var(--muted);font-size:19px;line-height:1}.sheet-close:hover{background:var(--surface-3);color:var(--ink)}.sheet-where{margin:-8px 0 16px;font-family:var(--mono);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--accent)}.field{margin-bottom:13px}.field-label{display:block;margin-bottom:5px;font-family:var(--mono);font-size:10px;font-weight:550;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.field input[type=text],.field input[type=number],.field select,.field textarea{width:100%;padding:9px 11px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface-2);outline:none;font-size:14.5px;transition:border-color .12s ease,box-shadow .12s ease}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-bg)}.field textarea{min-height:58px;resize:vertical;font-size:14px}.field-pair{display:grid;grid-template-columns:1fr 1fr;gap:11px}.picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(60px,1fr));gap:6px}.picker-wide{grid-template-columns:repeat(auto-fit,minmax(78px,1fr))}.opt{padding:9px 4px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface-2);color:var(--muted);text-align:center;transition:border-color .12s ease,background .12s ease,color .12s ease}.opt:hover{color:var(--ink)}.opt[aria-pressed=true]{border-color:var(--accent-line);background:var(--accent-bg);color:var(--accent)}.opt-code{display:block;font-family:var(--mono);font-size:12px;font-weight:650;letter-spacing:.04em}.opt-name{display:block;margin-top:2px;font-size:9.5px;opacity:.75}.switch{display:flex;align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface-2);font-size:13.5px;cursor:pointer}.switch input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.drop{position:relative;display:block;padding:22px 16px;border:1px dashed var(--line-2);border-radius:var(--radius);background:var(--surface-2);text-align:center;cursor:pointer;transition:border-color .13s ease,background .13s ease}.drop:hover,.drop[data-active=true]{border-color:var(--accent-line);background:var(--accent-bg)}.drop-title{display:block;font-size:13.5px;font-weight:540;color:var(--ink-dim)}.drop-hint{display:block;margin-top:3px;font-family:var(--mono);font-size:10px;letter-spacing:.07em;color:var(--subtle)}.drop input[type=file]{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.picked{display:flex;align-items:center;gap:10px;padding:10px 11px;border:1px solid var(--accent-line);border-radius:var(--radius);background:var(--accent-bg)}.picked-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}.picked-size{flex:0 0 auto;font-family:var(--mono);font-size:10px;color:var(--muted)}.form-error{margin:0 0 12px;padding:9px 11px;border:1px solid var(--danger);border-radius:var(--radius);background:var(--danger-bg);color:var(--danger);font-size:13px}.submit{width:100%;height:44px;margin-top:4px;border:none;border-radius:var(--radius);background:var(--accent);color:var(--on-accent);font-size:14.5px;font-weight:630;transition:opacity .12s ease}.submit:disabled{opacity:.35;cursor:not-allowed}.note{display:block;margin:26px 0 0;font-family:var(--mono);font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--subtle);text-align:center}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.theme-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.theme-opt{display:flex;align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--line-2);border-radius:var(--radius);background:var(--surface-2);color:var(--ink-dim);font-size:14px;text-align:left;transition:border-color .12s ease,background .12s ease,color .12s ease}.theme-opt:hover{color:var(--ink)}.theme-opt[aria-pressed=true]{border-color:var(--accent-line);background:var(--accent-bg);color:var(--accent);font-weight:570}.theme-swatch{position:relative;flex:0 0 auto;width:30px;height:24px;border:1px solid;border-radius:5px;overflow:hidden}.theme-swatch-bar{position:absolute;top:5px;left:5px;width:13px;height:2.5px;border-radius:2px}.theme-swatch-dot{position:absolute;bottom:5px;left:5px;width:8px;height:8px;border-radius:50%}.theme-icon{display:block;width:15px;height:15px;border:1.6px solid currentColor;border-radius:50%;background:linear-gradient(to right,currentColor 50%,transparent 50%)}.tile-num-word{font-family:inherit;font-size:19px;font-weight:620;letter-spacing:-.025em}.scrim-viewer{align-items:stretch;justify-content:stretch;padding:0}.viewer{display:flex;flex-direction:column;width:100%;height:100%;background:var(--bg)}@media(min-width:720px){.scrim-viewer{align-items:center;justify-content:center;padding:24px}.viewer{max-width:900px;height:100%;max-height:92vh;border:1px solid var(--line-2);border-radius:12px;overflow:hidden}}.viewer-top{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:12px 14px;padding-top:calc(12px + env(safe-area-inset-top));border-bottom:1px solid var(--line);background:var(--surface)}.viewer-title{flex:1;min-width:0}.viewer-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:570;letter-spacing:-.015em}.viewer-meta{display:block;margin-top:1px;font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer-body{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;background:var(--surface-2);overflow:auto}.viewer-frame{width:100%;height:100%;border:none;background:var(--surface-2)}.viewer-image{max-width:100%;max-height:100%;object-fit:contain}.viewer-fallback{padding:40px 20px;text-align:center}.viewer-actions{flex:0 0 auto;display:flex;gap:8px;padding:10px 14px;padding-bottom:calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--surface)}.viewer-action{flex:1;display:grid;place-items:center;height:40px;padding:0 10px;border:1px solid var(--line-2);border-radius:var(--radius);background:transparent;color:var(--ink-dim);font-size:13.5px;font-weight:540;text-align:center;text-decoration:none;transition:border-color .12s ease,background .12s ease,color .12s ease}.viewer-action:hover{border-color:var(--accent-line);background:var(--accent-bg);color:var(--accent)}.viewer-action-strong{border-color:transparent;background:var(--accent);color:var(--on-accent)}.viewer-action-strong:hover{border-color:transparent;background:var(--accent);color:var(--on-accent);opacity:.9}.grid-three{grid-template-columns:1fr}.app-title{flex:1;min-width:0;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14.5px;font-weight:620;letter-spacing:-.02em}.top .course-pick{display:flex;width:100%;margin-top:9px}
