:root{color-scheme:light;--ds-bg: #ffffff;--ds-bg-soft: #fafafa;--ds-fg: #1a1a1a;--ds-fg-soft: #4f4f4f;--ds-muted: #8a8a8a;--ds-rule: #eaeaea;--ds-accent: #3b6ef5;--ds-accent-soft: #eaf0ff;--ds-success: #267a45;--ds-success-soft: #ecf7ef;--ds-warn: #a55a00;--ds-warn-soft: #fff7e6;--ds-space-2xs: 4px;--ds-space-xs: 8px;--ds-space-sm: 12px;--ds-space-md: 20px;--ds-space-lg: 40px;--ds-space-xl: 64px;--ds-sidebar-w: 260px;--ds-main-max: 920px;--ds-measure: 72ch;--ds-font-sans: "Inter", "Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", "Apple SD Gothic Neo", system-ui, sans-serif;--ds-font-mono: "JetBrains Mono", "SFMono-Regular", Menlo, Consolas, monospace;--ds-fs-display: 2.25rem;--ds-fs-h2: 1.5rem;--ds-fs-h3: 1.125rem;--ds-fs-body: 1rem;--ds-fs-meta: .8125rem;--ds-fs-code: .875rem;--ds-lh-display: 1.25;--ds-lh-body: 1.65}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--ds-bg);color:var(--ds-fg);font-family:var(--ds-font-sans);font-size:var(--ds-fs-body);line-height:var(--ds-lh-body);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}button,summary{font:inherit}a{color:var(--ds-accent);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}a:focus-visible,button:focus-visible,summary:focus-visible,.file-drop:focus-visible{outline:3px solid rgba(59,110,245,.32);outline-offset:2px}code,.mono{font-family:var(--ds-font-mono);font-size:var(--ds-fs-code)}:not(pre)>code{background:var(--ds-bg-soft);border-radius:4px;color:var(--ds-fg);padding:2px 6px}.login-screen{align-items:center;background:var(--ds-bg-soft);display:grid;min-height:100vh;padding:var(--ds-space-md)}.login-panel{background:var(--ds-bg);border:1px solid var(--ds-rule);border-radius:8px;display:grid;gap:var(--ds-space-md);margin:0 auto;max-width:420px;padding:var(--ds-space-lg);width:100%}.login-form{display:grid;gap:var(--ds-space-sm)}.login-form label{display:grid;gap:var(--ds-space-2xs)}.login-form span{color:var(--ds-fg-soft);font-size:var(--ds-fs-meta);font-weight:600}.login-form input{border:1px solid var(--ds-rule);border-radius:6px;font:inherit;min-height:44px;padding:8px 10px}.login-feedback{border:1px solid var(--ds-rule);border-radius:8px;padding:var(--ds-space-sm)}.login-feedback.is-error{background:var(--ds-warn-soft);border-color:#a55a0059}.login-feedback.is-success{background:var(--ds-success-soft);border-color:#267a454d}.auth-tabs{border-bottom:1px solid var(--ds-rule);display:flex;gap:0}.auth-tab{background:transparent;border:none;border-bottom:2px solid transparent;color:var(--ds-fg-soft);cursor:pointer;flex:1;font:inherit;font-size:var(--ds-fs-meta);font-weight:400;margin-bottom:-1px;padding:8px 0}.auth-tab.is-active{border-bottom-color:#3b6ef5;color:#3b6ef5;font-weight:600}.app-shell{display:grid;grid-template-columns:minmax(220px,var(--ds-sidebar-w)) minmax(0,1fr);min-height:100vh}.sidebar{align-self:start;background:var(--ds-bg-soft);border-right:1px solid var(--ds-rule);max-height:100vh;overflow:auto;padding:var(--ds-space-md);position:sticky;top:0}.wordmark{color:var(--ds-fg);display:block;font-size:var(--ds-fs-h3);font-weight:600;margin-bottom:var(--ds-space-lg);text-decoration:none}.sidebar-group{margin-bottom:var(--ds-space-lg)}.group-label,.meta,.topbar-meta{color:var(--ds-muted);font-size:var(--ds-fs-meta);letter-spacing:0;text-transform:uppercase}.group-label{margin:0 0 var(--ds-space-xs);padding-left:var(--ds-space-md)}.sidebar nav{display:grid;gap:2px}.sidebar nav a{border-radius:4px;color:var(--ds-fg-soft);display:block;padding:6px var(--ds-space-md);text-decoration:none}.sidebar nav a:hover{background:var(--ds-bg);color:var(--ds-fg)}.sidebar nav a.active{background:var(--ds-accent-soft);color:var(--ds-accent);font-weight:500}.sidebar-details{border-top:1px solid var(--ds-rule);margin-top:var(--ds-space-md);padding-top:var(--ds-space-sm)}.sidebar-details summary{border-radius:4px;color:var(--ds-fg-soft);cursor:pointer;display:flex;min-height:44px;padding:6px var(--ds-space-md)}.sidebar-details[open] summary{color:var(--ds-fg);font-weight:500}.sidebar-details nav{margin-top:var(--ds-space-xs)}.schedule-list{display:grid;gap:var(--ds-space-xs);margin-top:var(--ds-space-xs)}.schedule-pill{background:var(--ds-bg);border:1px solid var(--ds-rule);border-radius:6px;color:var(--ds-fg-soft);display:grid;gap:2px;min-width:0;padding:8px 10px}.schedule-pill strong{color:var(--ds-fg);font-size:var(--ds-fs-meta);font-weight:600}.schedule-pill span{color:var(--ds-muted);font-size:var(--ds-fs-meta)}.schedule-pill.active{border-color:var(--ds-accent);background:var(--ds-accent-soft)}.schedule-pill.is-final{border-color:var(--ds-warn);background:var(--ds-warn-soft)}.sidebar-note{color:var(--ds-fg-soft);font-size:var(--ds-fs-meta);margin:0 0 var(--ds-space-xs);padding-left:var(--ds-space-md)}.main-area{display:flex;flex-direction:column;min-width:0}.topbar{align-items:center;background:var(--ds-bg);border-bottom:1px solid var(--ds-rule);display:flex;gap:var(--ds-space-md);justify-content:space-between;min-height:52px;padding:var(--ds-space-sm) var(--ds-space-md)}.topbar-session{align-items:center;display:flex;flex:0 0 auto;flex-wrap:wrap;gap:var(--ds-space-xs);justify-content:flex-end}.text-button{background:transparent;border:0;border-radius:6px;color:var(--ds-accent);cursor:pointer;font:inherit;font-size:var(--ds-fs-meta);font-weight:600;min-height:36px;padding:6px 8px}.text-button:hover{background:var(--ds-accent-soft)}.crumb{color:var(--ds-muted);font-size:var(--ds-fs-meta);min-width:0}.content{max-width:var(--ds-main-max);padding:var(--ds-space-xl) var(--ds-space-md);width:100%}section+section{margin-top:var(--ds-space-lg)}.hero-section{max-width:var(--ds-measure)}.home-hero{align-items:center;display:grid;gap:var(--ds-space-lg);grid-template-columns:minmax(0,1fr) minmax(280px,360px)}.home-hero img{border:1px solid var(--ds-rule);border-radius:8px;display:block;height:auto;max-width:100%}.subject-page-hero{max-width:var(--ds-measure)}h1,h2,h3,h4,p{overflow-wrap:anywhere}h1{font-size:var(--ds-fs-display);font-weight:600;letter-spacing:0;line-height:var(--ds-lh-display);margin:var(--ds-space-xs) 0 var(--ds-space-sm)}h2{font-size:var(--ds-fs-h2);font-weight:600;margin:0 0 var(--ds-space-sm)}h3{font-size:var(--ds-fs-h3);font-weight:600;margin:0}h4{font-size:var(--ds-fs-body);font-weight:600;margin:0 0 var(--ds-space-xs)}p{margin:0 0 var(--ds-space-sm)}.lede{color:var(--ds-fg-soft);max-width:64ch}.metric-grid,.subject-grid,.week-card-grid,.source-grid,.file-role-grid{display:grid;gap:var(--ds-space-md);grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}.keyword-grid{display:grid;gap:var(--ds-space-md);grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}.metric-card,.subject-card,.week-card,.keyword-card,.source-row,.file-role-card,.intake-step{background:var(--ds-bg);border:1px solid var(--ds-rule);border-radius:8px;min-height:132px;padding:var(--ds-space-md);transition:background .12s ease,border-color .12s ease}.metric-card:hover,.subject-card:hover,.week-card:hover,.keyword-card:hover,.source-row:hover,.file-role-card:hover,.intake-step:hover{background:var(--ds-bg-soft);border-color:var(--ds-fg-soft)}.metric-card strong{display:block;font-size:var(--ds-fs-h2);line-height:1.25;margin:var(--ds-space-xs) 0}.metric-card span,.source-pages{color:var(--ds-fg-soft);font-size:var(--ds-fs-meta)}.flow-section{align-items:center;border-bottom:1px solid var(--ds-rule);border-top:1px solid var(--ds-rule);display:grid;gap:var(--ds-space-md);grid-template-columns:minmax(0,.9fr) minmax(280px,1fr);padding:var(--ds-space-lg) 0}.flow-section img{border:1px solid var(--ds-rule);border-radius:8px;display:block;height:auto;max-width:100%}.subject-card,.week-card{display:flex;flex-direction:column}.subject-card h3,.week-card h3{margin-bottom:var(--ds-space-xs)}.subject-card-footer,.week-card-actions{margin-top:auto}.hero-actions{display:flex;flex-wrap:wrap;gap:var(--ds-space-sm);margin-top:var(--ds-space-md)}.action-link,.action-button{background:var(--ds-bg);border:1px solid var(--ds-accent);border-radius:6px;color:var(--ds-accent);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:var(--ds-fs-meta);font-weight:600;font-family:inherit;line-height:1.4;padding:8px 12px;text-decoration:none}.secondary-link{align-items:center;background:var(--ds-bg);border:1px solid var(--ds-rule);border-radius:6px;color:var(--ds-fg);display:inline-flex;font-size:var(--ds-fs-meta);font-weight:600;justify-content:center;line-height:1.4;padding:8px 12px;text-decoration:none}.action-link:hover,.action-button:hover{background:var(--ds-accent-soft);text-decoration:none}.secondary-link:hover{background:var(--ds-bg-soft);text-decoration:none}.action-link:active,.action-button:active{background:#dbe6ff}.secondary-link:active,.secondary-action:active{background:var(--ds-rule)}.subject-card-footer{align-items:center;border-top:1px solid var(--ds-rule);color:var(--ds-muted);display:flex;font-size:var(--ds-fs-meta);gap:var(--ds-space-sm);justify-content:space-between;margin-top:auto;padding-top:var(--ds-space-sm)}.sidebar nav a,.action-link,.action-button,.secondary-link,.inline-action,.secondary-action,.file-drop{min-height:44px}.home-split{border-top:1px solid var(--ds-rule);display:grid;gap:var(--ds-space-lg);grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding-top:var(--ds-space-lg)}.compact-list{display:grid;gap:var(--ds-space-sm)}.compact-list a{border:1px solid var(--ds-rule);border-radius:8px;display:grid;padding:var(--ds-space-sm);text-decoration:none}.compact-list a:hover{background:var(--ds-bg-soft)}.compact-list span{color:var(--ds-muted);font-size:var(--ds-fs-meta)}.compact-list strong{color:var(--ds-fg);font-weight:600}.upload-section{border:1px solid var(--ds-rule);border-radius:8px;display:grid;gap:var(--ds-space-lg);grid-template-columns:minmax(0,1fr) minmax(280px,360px);padding:var(--ds-space-md)}.upload-panel{display:grid;gap:var(--ds-space-sm)}.file-input{inline-size:1px;block-size:1px;opacity:0;overflow:hidden;position:absolute;z-index:-1}.file-drop{border:1px dashed var(--ds-accent);border-radius:8px;cursor:pointer;display:grid;gap:var(--ds-space-xs);min-height:128px;padding:var(--ds-space-md);place-content:center;text-align:center}.file-drop:hover{background:var(--ds-accent-soft)}.file-drop strong{color:var(--ds-accent);font-size:var(--ds-fs-h3)}.file-drop span{color:var(--ds-fg-soft);font-size:var(--ds-fs-meta)}.example-file{color:var(--ds-fg-soft);font-size:var(--ds-fs-meta);margin:0}.import-feedback{background:var(--ds-bg-soft);border:1px solid var(--ds-rule);border-radius:8px;color:var(--ds-fg-soft);font-size:var(--ds-fs-meta);padding:var(--ds-space-sm)}.import-feedback strong{color:var(--ds-fg);display:block;margin-bottom:var(--ds-space-2xs)}.import-feedback p{margin-bottom:var(--ds-space-xs)}.import-feedback code{overflow-wrap:anywhere}.import-feedback.is-success{background:var(--ds-success-soft);border-color:var(--ds-success)}.import-feedback.is-error{background:var(--ds-warn-soft);border-color:var(--ds-warn)}.secondary-action{background:var(--ds-bg);border:1px solid var(--ds-rule);border-radius:6px;color:var(--ds-fg);cursor:pointer;font:inherit;font-size:var(--ds-fs-meta);line-height:1.4;padding:8px 12px}.secondary-action:hover{background:var(--ds-bg-soft)}.file-role-card h3{font-size:var(--ds-fs-body);line-height:1.5;margin-bottom:var(--ds-space-sm)}.intake-flow{display:grid;gap:var(--ds-space-md)}.intake-step{min-height:0}.intake-step h3{margin-bottom:var(--ds-space-xs)}.intake-step span{color:var(--ds-fg-soft);display:block;font-size:var(--ds-fs-meta)}.intake-split{border-top:1px solid var(--ds-rule);display:grid;gap:var(--ds-space-lg);grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding-top:var(--ds-space-lg)}.code-block{background:var(--ds-bg-soft);border:1px solid var(--ds-rule);border-radius:8px;color:var(--ds-fg);margin:0;overflow-x:auto;padding:var(--ds-space-md);white-space:pre}.code-block-large{max-height:520px}.check-list,.contract-list{display:grid;gap:var(--ds-space-sm)}.check-list{list-style:none;margin:0;padding:0}.check-list li,.contract-list p{border:1px solid var(--ds-rule);border-radius:8px;margin:0;padding:var(--ds-space-sm)}.subject-section{border-top:1px solid var(--ds-rule);padding-top:var(--ds-space-lg)}.subject-heading{align-items:start;display:grid;gap:var(--ds-space-md);grid-template-columns:minmax(0,1fr) 180px;margin-bottom:var(--ds-space-md)}.summary-score{border:1px solid var(--ds-rule);border-radius:8px;padding:var(--ds-space-md)}.summary-score strong{display:block;font-size:var(--ds-fs-h2);line-height:1.25}.summary-score span{color:var(--ds-fg-soft);font-size:var(--ds-fs-meta)}.summary-grid{display:grid;gap:var(--ds-space-md);grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin-bottom:var(--ds-space-md)}.summary-block{background:var(--ds-bg-soft);border:1px solid var(--ds-rule);border-radius:8px;min-height:116px;padding:var(--ds-space-md)}.week-note-list{border-top:1px solid var(--ds-rule);margin-top:var(--ds-space-lg);padding-top:var(--ds-space-md)}.week-note{border:1px solid var(--ds-rule);border-radius:8px;margin-top:var(--ds-space-md);padding:var(--ds-space-md)}.week-note-header{align-items:start;display:flex;gap:var(--ds-space-md);justify-content:space-between}.week-note-header>div{min-width:0}.week-note-header>a{flex:0 0 auto;font-size:var(--ds-fs-meta)}.week-note-grid{display:grid;gap:var(--ds-space-md);grid-template-columns:repeat(3,minmax(0,1fr));margin:var(--ds-space-md) 0}.week-column{background:var(--ds-bg-soft);border-radius:6px;min-height:112px;padding:var(--ds-space-sm)}.week-column ul{margin:0;padding-left:18px}.week-column li{margin-bottom:var(--ds-space-2xs)}.empty-note{color:var(--ds-muted);font-size:var(--ds-fs-meta)}.keyword-card-header{align-items:start;display:flex;gap:var(--ds-space-sm);justify-content:space-between;margin-bottom:var(--ds-space-sm)}.keyword-card-header span{border:1px solid currentColor;border-radius:6px;color:var(--ds-muted);flex:0 0 auto;font-family:var(--ds-font-mono);font-size:var(--ds-fs-meta);line-height:1.3;padding:2px 8px}.keyword-card.is-covered .keyword-card-header span{color:var(--ds-success)}.keyword-card.is-missing{background:var(--ds-warn-soft)}.keyword-card.is-missing .keyword-card-header span{color:var(--ds-warn)}.linked-concepts{display:flex;flex-wrap:wrap;gap:var(--ds-space-xs);min-height:32px}.linked-concepts a,.linked-concepts span{background:var(--ds-bg-soft);border:1px solid var(--ds-rule);border-radius:6px;color:var(--ds-fg-soft);font-size:var(--ds-fs-meta);padding:4px 8px}.keyword-actions{border-top:1px solid var(--ds-rule);margin-top:var(--ds-space-md);padding-top:var(--ds-space-sm)}.inline-action{background:var(--ds-fg);border:1px solid var(--ds-fg);border-radius:6px;color:var(--ds-bg);cursor:pointer;font:inherit;font-size:var(--ds-fs-meta);font-weight:600;line-height:1.4;padding:8px 10px}.inline-action:hover{background:var(--ds-accent);border-color:var(--ds-accent)}.inline-action:active{background:#214ea8;border-color:#214ea8}.week-card-actions{align-items:center;border-top:1px solid var(--ds-rule);display:flex;flex-wrap:wrap;gap:var(--ds-space-sm);padding-top:var(--ds-space-sm)}.week-card-actions a{align-items:center;display:inline-flex;min-height:44px}.quick-note-panel{border:1px solid var(--ds-fg);border-radius:8px;padding:var(--ds-space-md);scroll-margin-top:96px}.quick-note-header{align-items:start;display:flex;gap:var(--ds-space-md);justify-content:space-between}.quick-note-header>div{min-width:0}.quick-note-body{border-top:1px solid var(--ds-rule);display:grid;gap:var(--ds-space-md);margin-top:var(--ds-space-md);padding-top:var(--ds-space-md)}.quick-note-section{border-top:1px solid var(--ds-rule);padding-top:var(--ds-space-sm)}.quick-note-section:first-child{border-top:0;padding-top:0}.quick-note-section h3{margin-bottom:var(--ds-space-xs)}.quick-note-section ul{margin:0;padding-left:18px}.quick-note-section li{margin-bottom:var(--ds-space-xs)}.concept-list,.question-list{display:grid;gap:var(--ds-space-md)}.concept-row{border-top:1px solid var(--ds-rule);display:grid;gap:var(--ds-space-md);grid-template-columns:minmax(0,1fr) 240px;padding-top:var(--ds-space-md)}.concept-main p:last-child,.concept-side p:last-child{margin-bottom:0}.plain-explanation{background:var(--ds-bg-soft);border-left:4px solid var(--ds-rule);border-radius:6px;color:var(--ds-fg);margin-top:var(--ds-space-sm);padding:var(--ds-space-sm)}.concept-side{color:var(--ds-fg-soft);font-size:var(--ds-fs-meta)}.concept-side strong{color:var(--ds-fg);display:block;font-size:var(--ds-fs-meta);margin-bottom:var(--ds-space-xs)}.concept-side ul{margin:0 0 var(--ds-space-md);padding-left:18px}.question-row{border:1px solid var(--ds-rule);border-radius:8px;padding:var(--ds-space-md)}.question-row summary{align-items:baseline;cursor:pointer;display:grid;gap:var(--ds-space-sm);grid-template-columns:84px minmax(0,1fr)}.question-difficulty{color:var(--ds-accent);font-family:var(--ds-font-mono);font-size:var(--ds-fs-meta);text-transform:uppercase}.answer-panel{border-top:1px solid var(--ds-rule);margin-top:var(--ds-space-md);padding-top:var(--ds-space-md)}.answer-panel strong{display:block;margin-bottom:var(--ds-space-xs)}.policy-block,.integrity-section{border-top:1px solid var(--ds-rule);margin-top:var(--ds-space-md);padding-top:var(--ds-space-md)}.policy-block.is-standalone{border:1px solid var(--ds-rule);border-radius:8px;margin-top:0;padding:var(--ds-space-md)}.policy-block strong{display:block;margin-bottom:var(--ds-space-xs)}.status-good{color:var(--ds-success);font-weight:500}.pdf-upload-section{align-items:stretch}.pdf-workspace{border-top:1px solid var(--ds-rule);padding-top:var(--ds-space-lg)}.pdf-workspace-header{align-items:start;display:grid;gap:var(--ds-space-md);grid-template-columns:minmax(0,1fr);margin-bottom:var(--ds-space-md)}.pdf-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:var(--ds-space-sm)}.pdf-page-controls,.pdf-tool-group{align-items:center;display:flex;flex-wrap:wrap;gap:var(--ds-space-xs)}.pdf-page-controls label{align-items:center;border:1px solid var(--ds-rule);border-radius:6px;display:inline-flex;gap:var(--ds-space-xs);min-height:44px;padding:6px 10px}.pdf-page-controls label span{color:var(--ds-muted);font-size:var(--ds-fs-meta)}.pdf-page-controls input{border:0;font:inherit;inline-size:64px;min-height:32px}.tool-button{background:var(--ds-bg);border:1px solid var(--ds-rule);border-radius:6px;color:var(--ds-fg);cursor:pointer;font:inherit;font-size:var(--ds-fs-meta);font-weight:600;min-height:44px;padding:8px 12px}.tool-button:hover{background:var(--ds-bg-soft)}.tool-button.active{background:var(--ds-fg);border-color:var(--ds-fg);color:var(--ds-bg)}.tool-button:focus-visible{outline:2px solid var(--ds-accent, #4f46e5);outline-offset:2px}.tool-button.is-disabled-placeholder{cursor:not-allowed;opacity:.5}.tool-button.is-disabled-placeholder:hover{background:var(--ds-bg)}.pdf-eraser-subtoolbar{align-items:center;background:var(--ds-bg-soft);border:1px solid var(--ds-rule);border-radius:6px;display:flex;flex-basis:100%;flex-wrap:wrap;gap:var(--ds-space-sm);padding:8px 10px}.pdf-eraser-shape-picker{align-items:center;display:flex;flex-wrap:wrap;gap:var(--ds-space-xs)}.eraser-shape-button{background:var(--ds-bg);border:1px solid var(--ds-rule);border-radius:6px;color:var(--ds-fg);cursor:pointer;font:inherit;font-size:var(--ds-fs-meta);font-weight:600;min-height:36px;padding:6px 10px}.eraser-shape-button:hover{background:#eef6ff}.eraser-shape-button.active{background:var(--ds-accent);border-color:var(--ds-accent);color:#fff}.pdf-eraser-size-control{align-items:center;color:var(--ds-fg);display:inline-flex;flex:1 1 260px;gap:var(--ds-space-sm);min-width:min(100%,240px)}.pdf-eraser-size-control span{font-size:var(--ds-fs-meta);font-weight:600;white-space:nowrap}.pdf-eraser-size-control input{accent-color:var(--ds-accent);flex:1;min-width:140px}.pdf-workspace-layout{display:grid;gap:var(--ds-space-md);grid-template-columns:minmax(0,1fr)}.pdf-workspace-layout.is-inspector-open{grid-template-columns:minmax(0,1fr) minmax(220px,260px)}.pdf-page-binding-notice{background:var(--ds-accent-soft);border-left:3px solid var(--ds-accent);border-radius:8px;color:var(--ds-fg-soft);display:grid;font-size:var(--ds-fs-meta);gap:2px;margin-bottom:var(--ds-space-sm);padding:8px 12px}.pdf-page-binding-notice__title{color:var(--ds-fg);font-weight:700}.pdf-page-binding-notice__body{line-height:1.45}.pdf-stage{background:var(--ds-bg-soft);border:1px solid var(--ds-rule);border-radius:8px;height:70vh;min-height:480px;overflow:hidden;position:relative;width:100%}.pdf-frame,.pdf-placeholder,.pdf-annotation-surface{block-size:100%;inline-size:100%;inset:0;position:absolute}.pdf-frame{border:0;background:var(--ds-bg);opacity:0;pointer-events:none;transition:opacity .08s ease-out;z-index:0}.pdf-frame.is-active{opacity:1;z-index:1}.pdf-frame.is-preload{opacity:1;z-index:0}.pdf-placeholder{align-content:center;color:var(--ds-fg-soft);display:grid;gap:var(--ds-space-xs);justify-items:center;padding:var(--ds-space-lg);text-align:center}.pdf-placeholder strong{color:var(--ds-fg)}.pdf-placeholder span{max-width:36ch}.pdf-annotation-surface{cursor:default;overflow:hidden;z-index:2}.pdf-surface-page-badge{background:#0000008c;border-radius:999px;color:#fff;font-size:.72rem;letter-spacing:.04em;padding:2px 8px;pointer-events:none;position:absolute;right:8px;top:8px;-webkit-user-select:none;user-select:none;z-index:3}.pdf-surface-page-end{background:linear-gradient(to bottom,#fff0,#fff9);border-top:1px dashed rgba(0,0,0,.35);bottom:0;color:#0009;font-size:.66rem;font-style:italic;left:0;padding:4px 8px 6px;pointer-events:none;position:absolute;right:0;text-align:center;z-index:1}.pdf-annotation-surface.is-read-mode{pointer-events:auto}.pdf-annotation-surface.is-sticky-mode{cursor:copy;pointer-events:auto}.pdf-annotation-surface.is-pen-mode,.pdf-annotation-surface.is-eraser-mode{cursor:crosshair;pointer-events:auto;touch-action:none}@keyframes pdf-highlight-pulse{0%,to{box-shadow:0 0 #fde68a00;outline:2px solid transparent}35%{box-shadow:0 0 0 8px #fde68a99;outline:2px solid rgba(217,119,6,.65)}65%{box-shadow:0 0 0 4px #fde68a66;outline:2px solid rgba(217,119,6,.5)}}.is-highlight-pulse{animation:pdf-highlight-pulse 1.5s ease-in-out 1;border-radius:6px;outline:2px solid rgba(217,119,6,.65);position:relative;z-index:4}.ink-layer{block-size:100%;inline-size:100%;inset:0;pointer-events:none;position:absolute}.ink-stroke{fill:none;stroke:var(--ds-fg);stroke-linecap:round;stroke-linejoin:round;stroke-width:3}.ink-stroke.is-live{opacity:.72}.ink-stroke.is-highlight-pulse{filter:drop-shadow(0 0 4px rgba(217,119,6,.75));stroke-width:3.4}.sticky-note{background:#fff8c7;border:1px solid #d9c15d;border-radius:8px;box-shadow:0 10px 24px #1a1a1a1f;display:grid;max-width:240px;min-width:180px;pointer-events:auto;position:absolute;transform:translate(-8px,-8px);z-index:3}.sticky-note-header{align-items:center;border-bottom:1px solid rgba(26,26,26,.12);display:flex;justify-content:space-between;padding:6px 8px}.sticky-note-header span{color:var(--ds-fg);font-size:var(--ds-fs-meta);font-weight:700}.sticky-note-header button{background:transparent;border:0;border-radius:4px;cursor:pointer;font-size:1rem;min-height:32px;min-width:32px}.sticky-note textarea{background:transparent;border:0;color:var(--ds-fg);font:inherit;font-size:var(--ds-fs-meta);min-height:96px;padding:8px;resize:vertical}.pdf-annotation-surface.is-text-mode{cursor:text;pointer-events:auto}.pdf-textbox.is-inline{background:transparent;border:0;cursor:grab;font-size:.875rem;padding:0;pointer-events:auto;position:absolute;z-index:3}.pdf-textbox.is-inline:active{cursor:grabbing}.pdf-textbox.is-inline:hover{outline:1px dashed rgba(26,26,26,.3);outline-offset:2px}.pdf-textbox-grip{background:#ffffffeb;border:1px solid rgba(26,26,26,.2);border-radius:3px;color:var(--ds-fg-soft);cursor:grab;display:none;font-size:.75rem;height:18px;left:-22px;letter-spacing:-2px;line-height:16px;padding:0 2px;position:absolute;top:-2px;touch-action:none;-webkit-user-select:none;user-select:none}.pdf-textbox.is-inline:hover .pdf-textbox-grip,.pdf-textbox.is-inline:focus-within .pdf-textbox-grip{display:inline-block}.pdf-textbox-grip:active{cursor:grabbing}.pdf-textbox-inline-input{background:transparent;border:0;color:var(--ds-fg);cursor:text;field-sizing:content;font:inherit;font-size:inherit;min-height:1.4em;min-width:80px;outline:0;padding:0 2px;resize:none;-webkit-user-select:text;user-select:text;vertical-align:top;white-space:pre-wrap}.pdf-textbox-inline-input:focus{outline:1px dotted var(--ds-accent, #4f46e5);outline-offset:2px}.pdf-textbox-delete{background:#ffffffeb;border:1px solid rgba(26,26,26,.2);border-radius:50%;color:var(--ds-fg);cursor:pointer;display:none;font-size:.75rem;height:18px;line-height:14px;padding:0;position:absolute;right:-22px;top:-4px;width:18px}.pdf-textbox.is-inline:hover .pdf-textbox-delete,.pdf-textbox.is-inline:focus-within .pdf-textbox-delete{display:inline-block}.pdf-annotation-surface.is-checklist-mode,.pdf-annotation-surface.is-table-mode{cursor:crosshair;pointer-events:auto}.pdf-checklist{background:#f0fff4;border:1px solid #6dbf8a;border-radius:6px;box-shadow:0 4px 12px #1a1a1a1a;display:flex;flex-direction:column;min-width:180px;pointer-events:auto;position:absolute;z-index:3}.pdf-checklist.is-collapsed .pdf-checklist-items,.pdf-checklist.is-collapsed .pdf-checklist-add-item{display:none}.pdf-checklist-header{align-items:center;background:#c6f0d4;border-bottom:1px solid #6dbf8a;border-radius:5px 5px 0 0;cursor:grab;display:flex;justify-content:space-between;padding:4px 6px;touch-action:none;-webkit-user-select:none;user-select:none}.pdf-checklist-header:active{cursor:grabbing}.pdf-checklist-title{color:var(--ds-fg);font-size:var(--ds-fs-meta);font-weight:600}.pdf-checklist-toggle{background:transparent;border:0;border-radius:4px;color:var(--ds-fg-soft);cursor:pointer;flex-shrink:0;font-size:.7rem;line-height:1;min-height:28px;min-width:22px;padding:0 2px}.pdf-checklist-toggle:hover{background:#1a1a1a14;color:var(--ds-fg)}.pdf-checklist-delete{background:transparent;border:0;border-radius:4px;color:var(--ds-fg-soft);cursor:pointer;font-size:1rem;line-height:1;min-height:28px;min-width:28px;padding:0}.pdf-checklist-delete:hover{background:#1a1a1a14;color:var(--ds-fg)}.pdf-checklist-items{list-style:none;margin:0;padding:4px 6px}.pdf-checklist-item{align-items:center;display:flex;gap:4px;padding:2px 0}.pdf-checklist-item input[type=checkbox]{cursor:pointer;flex-shrink:0;height:14px;margin:0;width:14px}.pdf-checklist-item-label{background:transparent;border:0;border-bottom:1px solid transparent;color:var(--ds-fg);flex:1;font:inherit;font-size:var(--ds-fs-meta);min-width:80px;outline:0;padding:1px 2px}.pdf-checklist-item-label:focus{border-bottom-color:var(--ds-accent)}.pdf-checklist-item-delete{background:transparent;border:0;border-radius:3px;color:var(--ds-fg-soft);cursor:pointer;flex-shrink:0;font-size:.75rem;line-height:1;min-height:20px;min-width:20px;opacity:0;padding:0;transition:opacity .15s}.pdf-checklist-item:hover .pdf-checklist-item-delete{opacity:1}.pdf-checklist-item-delete:hover{background:#1a1a1a14;color:var(--ds-fg)}.pdf-checklist-add-item{background:transparent;border:0;border-top:1px solid #6dbf8a;color:var(--ds-fg-soft);cursor:pointer;font:inherit;font-size:var(--ds-fs-meta);padding:4px 8px;text-align:left;width:100%}.pdf-checklist-add-item:hover{background:#c6f0d4;color:var(--ds-fg)}.pdf-table{background:#fffffff5;border:1px solid rgba(26,26,26,.18);border-radius:6px;box-shadow:0 4px 12px #1a1a1a1a;display:flex;flex-direction:column;max-width:60%;min-width:240px;pointer-events:auto;position:absolute;z-index:3}.pdf-table.is-collapsed .pdf-table-body{display:none}.pdf-table-header{align-items:center;background:#f6f8faf5;border-bottom:1px solid rgba(26,26,26,.14);border-radius:5px 5px 0 0;cursor:grab;display:flex;justify-content:space-between;padding:4px 6px;touch-action:none;-webkit-user-select:none;user-select:none}.pdf-table-header:active{cursor:grabbing}.pdf-table-title{color:var(--ds-fg);font-size:var(--ds-fs-meta);font-weight:600}.pdf-table-toggle,.pdf-table-delete{background:transparent;border:0;border-radius:4px;color:var(--ds-fg-soft);cursor:pointer;flex-shrink:0;line-height:1;padding:0}.pdf-table-toggle{font-size:.7rem;min-height:28px;min-width:22px}.pdf-table-delete{font-size:1rem;min-height:28px;min-width:28px}.pdf-table-toggle:hover,.pdf-table-delete:hover{background:#1a1a1a14;color:var(--ds-fg)}.pdf-table-body{display:grid;gap:8px;padding:8px}.pdf-table-grid{border-collapse:collapse;color:var(--ds-fg);font-size:var(--ds-fs-meta);max-width:100%;width:100%}.pdf-table-grid th,.pdf-table-grid td{border:1px solid rgba(26,26,26,.18);padding:2px 4px;text-align:left;vertical-align:top}.pdf-table-grid thead th{background:#f6f8faf5}.pdf-table-grid td.pdf-table-col-actions,.pdf-table-grid td.pdf-table-row-actions,.pdf-table-grid th.pdf-table-col-actions{background:transparent;border:none;padding:2px;white-space:nowrap;width:1%}.pdf-table-cell-input{background:transparent;border:0;color:var(--ds-fg);font:inherit;font-size:var(--ds-fs-meta);outline:none;padding:2px 4px;width:100%}.pdf-table-cell-input:focus{background:#3b82f60f;border-radius:2px;outline:1px solid var(--ds-accent)}.pdf-table-delete-col,.pdf-table-delete-row{background:transparent;border:0;border-radius:3px;color:var(--ds-fg-soft);cursor:pointer;font-size:.7rem;line-height:1;padding:2px 3px}.pdf-table-delete-col:hover,.pdf-table-delete-row:hover{background:#ef44441f;color:#ef4444}.pdf-table-actions{display:flex;gap:6px}.pdf-table-add-row,.pdf-table-add-col{background:transparent;border:1px solid var(--ds-rule);border-radius:4px;color:var(--ds-fg-soft);cursor:pointer;font-size:var(--ds-fs-meta);padding:3px 8px}.pdf-table-add-row:hover,.pdf-table-add-col:hover{background:#1a1a1a0f;color:var(--ds-fg)}.pdf-chart{background:#fffffff5;border:1px solid rgba(26,26,26,.18);border-radius:6px;box-shadow:0 4px 12px #1a1a1a1a;display:flex;flex-direction:column;max-width:60%;min-width:240px;pointer-events:auto;position:absolute;z-index:3}.pdf-chart.is-collapsed .pdf-chart-body{display:none}.pdf-chart-header{align-items:center;background:#f6f8faf5;border-bottom:1px solid rgba(26,26,26,.14);border-radius:5px 5px 0 0;cursor:grab;display:flex;justify-content:space-between;padding:4px 6px;touch-action:none;-webkit-user-select:none;user-select:none}.pdf-chart-header:active{cursor:grabbing}.pdf-chart-title{color:var(--ds-fg);font-size:var(--ds-fs-meta);font-weight:600}.pdf-chart-toggle,.pdf-chart-delete{background:transparent;border:0;border-radius:4px;color:var(--ds-fg-soft);cursor:pointer;flex-shrink:0;line-height:1;padding:0}.pdf-chart-toggle{font-size:.7rem;min-height:28px;min-width:22px}.pdf-chart-delete{font-size:1rem;min-height:28px;min-width:28px}.pdf-chart-toggle:hover,.pdf-chart-delete:hover{background:#1a1a1a14;color:var(--ds-fg)}.pdf-chart-body{display:grid;gap:8px;padding:8px}.pdf-chart-type-select{background:var(--ds-surface, #fff);border:1px solid var(--ds-rule);border-radius:4px;color:var(--ds-fg);font:inherit;font-size:var(--ds-fs-meta);padding:3px 6px}.pdf-chart-input-guide{color:var(--ds-fg-soft);font-size:var(--ds-fs-meta)}.pdf-chart-function-controls{align-items:end;display:grid;gap:6px;grid-template-columns:repeat(2,minmax(0,1fr))}.pdf-chart-function-title{color:var(--ds-fg);font-size:var(--ds-fs-meta);font-weight:600;grid-column:1 / -1}.pdf-chart-function-field,.pdf-chart-point-field{display:grid;gap:2px}.pdf-chart-function-field span,.pdf-chart-point-field span{color:var(--ds-fg-soft);font-size:.68rem;line-height:1}.pdf-chart-function-field input,.pdf-chart-function-field select{background:transparent;border:1px solid var(--ds-rule);border-radius:3px;color:var(--ds-fg);font:inherit;font-size:var(--ds-fs-meta);min-width:0;padding:2px 5px}.pdf-chart-function-field input[readonly]{background:#1a1a1a08;color:var(--ds-fg-soft)}.pdf-chart-function-fill,.pdf-chart-function-clear{background:transparent;border:1px solid var(--ds-rule);border-radius:4px;color:var(--ds-fg-soft);cursor:pointer;font-size:var(--ds-fs-meta);min-width:0;padding:3px 8px}.pdf-chart-function-fill:hover,.pdf-chart-function-clear:hover{background:#1a1a1a0f;color:var(--ds-fg)}.pdf-chart-function-clear:hover{background:#ef44441a;color:#ef4444}.pdf-chart-data{display:flex;flex-direction:column;gap:4px;max-height:140px;overflow:auto;padding-right:2px}.pdf-chart-point{align-items:center;display:flex;gap:4px}.pdf-chart-point-field{flex:1;min-width:0}.pdf-chart-point-x{background:transparent;border:1px solid var(--ds-rule);border-radius:3px;color:var(--ds-fg);font:inherit;font-size:var(--ds-fs-meta);min-width:0;padding:2px 5px;width:100%}.pdf-chart-point-value{background:transparent;border:1px solid var(--ds-rule);border-radius:3px;color:var(--ds-fg);flex:1;font:inherit;font-size:var(--ds-fs-meta);padding:2px 5px;width:100%}.pdf-chart-function-field input:focus,.pdf-chart-function-field select:focus,.pdf-chart-point-x:focus,.pdf-chart-point-value:focus{outline:1px solid var(--ds-accent)}.pdf-chart-point-delete{background:transparent;border:0;border-radius:3px;color:var(--ds-fg-soft);cursor:pointer;flex-shrink:0;font-size:.7rem;line-height:1;padding:2px 4px}.pdf-chart-point-delete:hover{background:#ef44441f;color:#ef4444}.pdf-chart-point-actions{display:flex;gap:6px}.pdf-chart-add-point,.pdf-chart-clear-points{background:transparent;border:1px solid var(--ds-rule);border-radius:4px;color:var(--ds-fg-soft);cursor:pointer;font-size:var(--ds-fs-meta);padding:3px 8px}.pdf-chart-add-point:hover,.pdf-chart-clear-points:hover{background:#1a1a1a0f;color:var(--ds-fg)}.pdf-chart-clear-points:hover{background:#ef44441a;color:#ef4444}@media(max-width:720px){.pdf-chart-function-controls{grid-template-columns:repeat(2,minmax(0,1fr))}}.pdf-chart-preview{color:var(--ds-accent);display:inline-block;height:120px;width:100%}.pdf-chart-preview text{fill:var(--ds-fg-soft)}.pdf-inspector{align-self:start;border:1px solid var(--ds-rule);border-radius:8px;display:grid;gap:var(--ds-space-sm);padding:var(--ds-space-md)}.pdf-inspector--collapsed{display:none}.pdf-toolbar-row{align-items:center;display:flex;flex-wrap:wrap;gap:var(--ds-space-sm)}.pdf-inspector-toggle{margin-left:auto}.pdf-inspector-toggle:focus-visible{outline:2px solid var(--ds-accent);outline-offset:2px}.pdf-inspector dl{display:grid;gap:var(--ds-space-xs);margin:0}.pdf-inspector dl div{align-items:center;border-bottom:1px solid var(--ds-rule);display:flex;justify-content:space-between;padding-bottom:var(--ds-space-xs)}.pdf-inspector dt{color:var(--ds-muted);font-size:var(--ds-fs-meta)}.pdf-inspector dd{margin:0;font-weight:600}.pdf-inspector-stats{display:grid;gap:var(--ds-space-xs);margin:0}.pdf-inspector-stats .pdf-inspector-stat-row{border-bottom:1px solid var(--ds-rule);display:block;padding-bottom:var(--ds-space-xs)}.pdf-inspector-stat-row--plain{align-items:center;display:flex;justify-content:space-between}.pdf-inspector-drill-toggle{align-items:center;appearance:none;background:transparent;border:0;color:inherit;cursor:pointer;display:flex;font:inherit;gap:var(--ds-space-xs);padding:0;text-align:left;width:100%}.pdf-inspector-drill-toggle:focus-visible,.pdf-inspector-drill-item:focus-visible{border-radius:6px;outline:2px solid var(--ds-accent);outline-offset:2px}.pdf-inspector-stat-label{color:var(--ds-muted);flex:1;font-size:var(--ds-fs-meta)}.pdf-inspector-stat-count{font-weight:600}.pdf-inspector-drill-caret{color:var(--ds-muted);transition:transform .15s ease}.pdf-inspector-drill-toggle[aria-expanded=true] .pdf-inspector-drill-caret{transform:rotate(180deg)}.pdf-inspector-drill-list{display:grid;gap:2px;list-style:none;margin:var(--ds-space-xs) 0 0;max-height:200px;overflow-y:auto;padding:0}.pdf-inspector-drill-item{appearance:none;background:transparent;border:0;border-radius:6px;color:var(--ds-fg);cursor:pointer;display:block;font:inherit;font-size:var(--ds-fs-meta);padding:4px 6px;text-align:left;width:100%}.pdf-inspector-drill-item:hover{background:var(--ds-bg-soft)}.pdf-inspector-drill-empty,.pdf-inspector-drill-more{color:var(--ds-muted);font-size:var(--ds-fs-meta);padding:4px 6px}.site-footer{border-top:1px solid var(--ds-rule);color:var(--ds-muted);font-size:var(--ds-fs-meta);margin-top:auto;padding:var(--ds-space-md)}body[data-route=pdf-workspace] .content{max-width:none}@media(max-width:820px){:root{--ds-space-xl: 44px}.app-shell,.home-hero,.home-split,.intake-split,.upload-section,.flow-section,.concept-row,.subject-heading,.week-note-grid,.pdf-workspace-layout{grid-template-columns:1fr}.sidebar{border-bottom:1px solid var(--ds-rule);border-right:0;max-height:none;overflow:visible;position:static}.wordmark{margin-bottom:var(--ds-space-md)}.sidebar nav{grid-template-columns:repeat(auto-fit,minmax(min(100%,140px),1fr))}.content{padding:var(--ds-space-lg) var(--ds-space-md)}.topbar,.week-note-header,.subject-card-footer,.quick-note-header,.pdf-toolbar{align-items:start;flex-direction:column}.pdf-stage{min-height:480px}}@media(max-width:1100px)and (min-width:821px){.app-shell{grid-template-columns:1fr}.sidebar{border-bottom:1px solid var(--ds-rule);border-right:0;max-height:none;overflow:visible;position:static}.sidebar nav{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.content{max-width:100%;padding:48px 24px}.home-hero{grid-template-columns:minmax(0,1fr) minmax(240px,320px)}.pdf-workspace-layout.is-inspector-open{grid-template-columns:minmax(0,1fr) 220px}}@media(max-width:520px){:root{--ds-fs-display: 1.875rem;--ds-space-xl: 36px}.sidebar{padding:var(--ds-space-sm)}.content{padding:32px var(--ds-space-sm)}.metric-card,.subject-card,.week-card,.keyword-card,.source-row,.file-role-card,.intake-step,.quick-note-panel{padding:var(--ds-space-sm)}.pdf-stage{min-height:420px}.sticky-note{min-width:148px;max-width:196px}.keyword-card-header{align-items:start;flex-direction:column}.question-row summary{grid-template-columns:1fr}}@media(max-width:1100px){.sidebar{padding:var(--ds-space-sm);position:sticky;top:0;z-index:5}.wordmark,.sidebar-group{margin-bottom:var(--ds-space-sm)}.group-label{padding-left:0}.sidebar nav{display:flex;gap:var(--ds-space-xs);overflow-x:auto;padding-bottom:var(--ds-space-2xs);scrollbar-width:thin}.sidebar nav a{background:var(--ds-bg);border:1px solid var(--ds-rule);flex:0 0 auto;padding:8px 12px;white-space:nowrap}.sidebar-group.is-secondary{display:none}.sidebar-details{border-top:0;margin-top:0;padding-top:0}.sidebar-details summary{background:var(--ds-bg);border:1px solid var(--ds-rule);padding:8px 12px}.sidebar-details nav{display:flex;gap:var(--ds-space-xs);overflow-x:auto}.schedule-list{display:flex;gap:var(--ds-space-xs);overflow-x:auto;padding-bottom:var(--ds-space-2xs)}.schedule-pill{flex:0 0 148px}}
