@charset "UTF-8";:root{--bg: oklch(98% .004 240);--surface: oklch(100% 0 0);--fg: oklch(20% .02 240);--muted: oklch(40% .018 240);--border: oklch(90% .006 240);--accent: oklch(62% .105 170);--font-display: "Inter", "S\f6hne", "Avenir Next", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--font-body: "Inter", -apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, sans-serif;--font-mono: ui-monospace, "JetBrains Mono", Menlo, Consolas, monospace;--ink-strong: oklch(16% .024 250);--ink-soft: oklch(42% .03 250);--surface-raised: oklch(99% .004 240);--surface-tint: oklch(96% .025 178);--accent-deep: oklch(48% .095 175);--accent-soft: oklch(93% .045 172);--secondary: oklch(62% .12 255);--secondary-soft: oklch(94% .035 255);--gold: oklch(78% .105 82);--gold-deep: oklch(65% .12 80);--gold-soft: oklch(96% .045 85);--success: oklch(57% .14 150);--warning: oklch(73% .12 75);--danger: oklch(58% .16 28);--danger-soft: oklch(95% .035 28);--purple: oklch(55% .15 290);--teal: oklch(60% .12 200);--coral: oklch(65% .12 25);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-sm: 10px;--radius-md: 16px;--radius-lg: 24px;--radius-xl: 32px;--radius-pill: 999px;--radius-2xl: var(--radius-xl);--radius-full: var(--radius-pill);--shadow-soft: 0 14px 38px oklch(30% .04 245 / .08);--shadow-card: 0 22px 70px oklch(26% .04 230 / .12);--shadow-inner: inset 0 1px 0 oklch(100% 0 0 / .75);--shadow-xl: var(--shadow-card);--shadow-primary: 0 18px 36px oklch(56% .12 170 / .24);--shadow-sm: 0 2px 8px oklch(30% .05 250 / .06);--shadow-md: 0 8px 24px oklch(30% .05 250 / .08);--shadow-lg: 0 16px 48px oklch(30% .06 250 / .12);--glass-bg: oklch(100% 0 0 / .75);--glass-border: oklch(100% 0 0 / .5);--color-ink: var(--ink-strong);--color-muted: var(--muted);--color-surface: var(--surface);--color-surface-strong: oklch(100% 0 0 / .9);--color-border: var(--border);--color-primary: var(--accent);--color-primary-strong: var(--accent-deep);--color-primary-soft: var(--accent-soft);--color-accent-soft: var(--secondary-soft);--color-danger: var(--danger);--color-danger-soft: var(--danger-soft);--color-warning: var(--warning);--color-warning-soft: var(--gold-soft);--gradient-page: linear-gradient(135deg, var(--bg), oklch(96% .012 238));--gradient-hero: linear-gradient(180deg, oklch(100% 0 0 / .92), oklch(97% .021 178 / .88));--gradient-primary-soft: linear-gradient(145deg, var(--surface-tint), var(--surface));--ease: cubic-bezier(.2, .8, .2, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--duration-fast: .16s;--duration-base: .24s;--duration-slow: .4s;--max: 1240px}[data-theme=dark]{--bg: oklch(15% .015 250);--surface: oklch(20% .018 250);--fg: oklch(92% .005 240);--muted: oklch(65% .02 240);--border: oklch(28% .012 250);--accent: oklch(68% .11 170);--ink-strong: oklch(95% .005 240);--ink-soft: oklch(70% .025 250);--surface-raised: oklch(25% .02 250);--surface-tint: oklch(30% .03 178);--accent-deep: oklch(55% .1 175);--accent-soft: oklch(25% .04 172);--secondary: oklch(65% .12 255);--secondary-soft: oklch(25% .035 255);--gold: oklch(78% .105 82);--gold-deep: oklch(65% .12 80);--gold-soft: oklch(30% .045 85);--success: oklch(62% .14 150);--warning: oklch(75% .12 75);--danger: oklch(65% .16 28);--danger-soft: oklch(25% .035 28);--purple: oklch(60% .15 290);--teal: oklch(65% .12 200);--coral: oklch(68% .12 25);--shadow-soft: 0 14px 38px oklch(8% .04 245 / .3);--shadow-card: 0 22px 70px oklch(6% .04 230 / .4);--shadow-inner: inset 0 1px 0 oklch(100% 0 0 / .1);--shadow-primary: 0 18px 36px oklch(56% .12 170 / .35);--shadow-sm: 0 2px 8px oklch(0% 0 0 / .3);--shadow-md: 0 8px 24px oklch(0% 0 0 / .4);--shadow-lg: 0 16px 48px oklch(0% 0 0 / .5);--glass-bg: oklch(20% 0 0 / .8);--glass-border: oklch(30% 0 0 / .4);--color-ink: var(--ink-strong);--color-muted: var(--muted);--color-surface: var(--surface);--color-surface-strong: oklch(15% 0 0 / .95);--color-border: var(--border);--color-primary: var(--accent);--color-primary-strong: var(--accent-deep);--color-primary-soft: var(--accent-soft);--color-accent-soft: var(--secondary-soft);--color-danger: var(--danger);--color-danger-soft: var(--danger-soft);--color-warning: var(--warning);--color-warning-soft: var(--gold-soft);--gradient-page: linear-gradient(135deg, var(--bg), oklch(12% .012 238));--gradient-hero: linear-gradient(180deg, oklch(15% 0 0 / .92), oklch(20% .021 178 / .88));--gradient-primary-soft: linear-gradient(145deg, var(--surface-tint), var(--surface))}*{box-sizing:border-box}html{min-height:100%;scroll-behavior:smooth}body{background:radial-gradient(circle at 14% 8%,oklch(92% .055 170deg / .68),transparent 28rem),radial-gradient(circle at 86% 4%,oklch(94% .045 255deg / .58),transparent 30rem),linear-gradient(135deg,var(--bg),oklch(96% .012 238deg));color:var(--fg);font-family:var(--font-body);line-height:1.5;margin:0;min-height:100%;min-width:320px;text-rendering:optimizeLegibility}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{box-shadow:0 0 #339a7c66}50%{box-shadow:0 0 0 8px #339a7c00}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes gradientShift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes glow{0%,to{opacity:.6;filter:brightness(1)}50%{opacity:1;filter:brightness(1.1)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.animate-fade-in-up{animation:fadeInUp var(--duration-slow) var(--ease-spring) both}.animate-fade-in{animation:fadeIn var(--duration-base) var(--ease) both}.animate-scale-in{animation:scaleIn var(--duration-base) var(--ease-spring) both}.animate-slide-left{animation:slideInLeft var(--duration-base) var(--ease) both}.animate-slide-right{animation:slideInRight var(--duration-base) var(--ease) both}.route-stage{perspective:1200px;transform-style:preserve-3d}.route-page-turn{--route-curl: 0;--route-shade: 0;--route-lift: 0;display:block;position:relative;overflow:hidden;transform-origin:left center;box-shadow:calc(var(--route-lift) * 12px) calc(22px + var(--route-lift) * 12px) calc(58px + var(--route-lift) * 18px) rgb(28,40,62,calc(.14 + var(--route-lift) * .08))}.route-page-turn:before,.route-page-turn:after,.route-paper-curl,.route-paper-sheen{content:"";position:absolute;inset:0;pointer-events:none}.route-page-turn:before{right:auto;z-index:2;width:56px;background:linear-gradient(90deg,rgba(21,31,50,.13),rgba(21,31,50,.035) 45%,rgba(255,255,255,.36) 78%,transparent);opacity:calc(.2 + var(--route-curl) * .36)}.route-page-turn:after{z-index:2;background:linear-gradient(90deg,rgba(15,24,39,.16),transparent 26%),linear-gradient(270deg,rgba(255,255,255,.5),transparent 34%);opacity:var(--route-shade);mix-blend-mode:multiply}.route-paper-curl{left:auto;z-index:4;width:34%;border-left:1px solid rgba(217,226,237,.62);background:linear-gradient(92deg,transparent,rgba(255,255,255,.72) 34%,rgba(220,229,241,.38) 52%,rgba(37,48,67,.13) 100%);filter:blur(.1px)}.route-paper-sheen{z-index:5;background:linear-gradient(102deg,transparent 18%,rgba(255,255,255,.56) 47%,transparent 68%)}@media(prefers-reduced-motion:reduce){.route-stage{perspective:none}}::selection{background:#d9b1655c;color:var(--ink-strong)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:active{transform:translateY(1px)}.matching-group-editor{background:linear-gradient(180deg,var(--surface) 0%,oklch(99% .003 240deg / .8) 100%);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card),var(--shadow-inner);display:grid;gap:var(--space-3);padding:var(--space-4) var(--space-5) var(--space-5) var(--space-5);transition:border-color var(--duration-base) var(--ease),box-shadow var(--duration-base) var(--ease)}.matching-group-editor header{align-items:center;border-bottom:1.5px solid var(--border);display:flex;flex-wrap:wrap;gap:var(--space-4);justify-content:space-between;margin-bottom:var(--space-2);padding-bottom:var(--space-4)}.header-title-group{align-items:center;display:flex;gap:var(--space-3)}.header-title-group strong{color:var(--ink-strong);font-family:var(--font-display);font-size:18px;letter-spacing:-.02em}.count-badge{background:var(--secondary-soft);border-radius:var(--radius-pill);color:#135298;font-size:11px;font-weight:800;padding:4px 10px}.header-settings{align-items:center;display:flex;flex-wrap:wrap;gap:var(--space-4)}.subtype-label{align-items:center;display:flex;gap:var(--space-2);min-width:260px}.subtype-label span{color:var(--ink-soft);font-size:13px;font-weight:800;white-space:nowrap}.matching-reuse-toggle{align-items:center;color:var(--ink-soft);display:flex;font-size:13px;font-weight:800;gap:var(--space-2);-webkit-user-select:none;user-select:none}.matching-reuse-toggle input{cursor:pointer;height:16px;margin:0;width:16px}.matching-subtype-hint-banner{align-items:flex-start;background:var(--accent-soft);border:1.5px dashed oklch(56% .12 170deg / .22);border-radius:var(--radius-sm);display:flex;gap:var(--space-2);margin:var(--space-2) 0 var(--space-3) 0;padding:var(--space-3) var(--space-4)}.matching-subtype-hint-banner .info-icon{color:var(--accent-deep);font-size:16px;margin-top:2px}.matching-subtype-hint{color:var(--accent-deep);font-size:13px;font-weight:600;line-height:1.55;margin:0}.hint-content{display:flex;flex-direction:column;gap:var(--space-2)}.matching-general-prompt-tip{color:var(--accent-deep);font-size:12px;line-height:1.5;margin:0;opacity:.85}.matching-section-title{color:var(--muted);font-size:11px;font-weight:850;letter-spacing:.06em;margin:var(--space-3) 0 var(--space-2) 0;text-transform:uppercase}.matching-group-editor .option-editor{display:grid;gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:var(--space-2)}.matching-group-editor .option-row{align-items:center;background:var(--surface-raised);border:1.5px solid var(--border);border-radius:var(--radius-sm);display:flex;gap:var(--space-2);padding:var(--space-2) var(--space-3);transition:border-color var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease)}.matching-group-editor .option-row:hover,.matching-group-editor .option-row:focus-within{border-color:#00896a57;border-color:oklch(56% .12 170deg / .34);box-shadow:0 4px 12px #1c304105}.option-key{align-items:center;background:linear-gradient(135deg,var(--accent),var(--accent-deep));box-shadow:0 4px 10px #00896a33;box-shadow:0 4px 10px oklch(56% .12 170deg / .2);color:#fff;border-radius:8px;display:inline-flex;font-weight:850;font-size:13.5px;height:28px;justify-content:center;width:28px;flex-shrink:0}.matching-group-editor .option-row input{background:transparent!important;border:0!important;box-shadow:none!important;color:var(--ink-strong);font-weight:650;font-size:14px;min-height:auto!important;outline:none;padding:0!important;width:100%}.delete-option-btn{align-items:center;background:transparent;border:0;border-radius:6px;color:var(--muted);cursor:pointer;display:inline-flex;font-size:14px;height:24px;justify-content:center;min-height:44px;min-width:44px;padding:10px;transition:all var(--duration-fast) var(--ease);width:24px;flex-shrink:0}.delete-option-btn:hover:not([disabled]){background:#c74c411a;color:var(--danger);transform:scale(1.08)}.delete-option-btn[disabled]{cursor:not-allowed;opacity:.25}.add-option-btn{align-items:center;background:transparent;border:1.5px dashed var(--border);border-radius:var(--radius-pill);color:var(--accent-deep);cursor:pointer;display:inline-flex;font-size:13px;font-weight:800;gap:var(--space-2);justify-content:center;margin-bottom:var(--space-4);padding:9px 18px;transition:all var(--duration-fast) var(--ease);width:fit-content}.add-option-btn:hover{background:var(--accent-soft);border-color:var(--accent);transform:translateY(-1px)}.matching-item-table{display:grid;gap:var(--space-3);margin-bottom:var(--space-2)}.matching-item-row{align-items:center;background:var(--surface-raised);border:1.5px solid var(--border);border-left:4px solid var(--accent);border-radius:var(--radius-sm);display:grid;gap:var(--space-3);grid-template-columns:auto 1fr minmax(180px,.36fr) auto;padding:var(--space-3) var(--space-4);position:relative;transition:border-color var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease),border-left-color var(--duration-fast) var(--ease)}.matching-item-row:hover{border-color:#00896a4d;border-color:oklch(56% .12 170deg / .3);box-shadow:0 8px 24px #1c30410a}.matching-item-row.item-invalid{border-color:#c74c412e;border-left-color:var(--danger);background:linear-gradient(90deg,oklch(58% .16 28deg / .018) 0%,var(--surface-raised) 100%)}.question-number{align-items:center;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius-pill);box-shadow:var(--shadow-soft);color:var(--ink-strong);display:inline-flex;font-size:13px;font-weight:850;height:30px;justify-content:center;width:30px}.input-wrapper,.select-wrapper{position:relative;width:100%}.validation-dot{background:var(--danger);border-radius:var(--radius-pill);box-shadow:0 0 6px var(--danger);cursor:help;height:6px;position:absolute;right:14px;top:50%;transform:translateY(-50%);width:6px}.matching-item-row input,.matching-item-row select{background:var(--surface)!important;border:1.5px solid var(--border)!important;border-radius:var(--radius-sm)!important;color:var(--ink-strong)!important;font-weight:650!important;font-size:14px!important;min-height:42px!important;padding:0 var(--space-3)!important;transition:all var(--duration-fast) var(--ease)!important;width:100%}.matching-item-row input:focus,.matching-item-row select:focus{background:var(--surface)!important;border-color:var(--accent)!important;box-shadow:0 0 0 3.5px #00896a1c!important;box-shadow:0 0 0 3.5px oklch(56% .12 170deg / .11)!important;outline:0}.inline-cloze-editor{border:1px solid var(--border);border-radius:var(--radius-md);display:grid;gap:var(--space-3);padding:var(--space-3)}.inline-cloze-editor>.card-head{min-height:0;padding-bottom:var(--space-1)}.inline-cloze-editor>.card-head strong{font-size:15px}.inline-cloze-table-head,.inline-cloze-row{align-items:start;display:grid;gap:var(--space-2);grid-template-columns:32px minmax(180px,.75fr) 132px minmax(260px,.7fr) 36px}.inline-cloze-table-head{color:var(--muted);font-size:11px;font-weight:850;letter-spacing:.04em;padding:0 var(--space-1);text-transform:uppercase}.inline-cloze-row{border:1px solid transparent;border-radius:var(--radius-sm);padding:var(--space-2) 0;transition:background var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease)}.inline-cloze-row+.inline-cloze-row{border-top:1px solid var(--border)}.inline-cloze-row:hover,.inline-cloze-row:focus-within{background:var(--surface-raised);border-color:var(--border)}.inline-cloze-row.item-invalid{border-color:#c74c4133}.inline-cloze-row input,.inline-cloze-row select{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--ink-strong);font:inherit;font-weight:650;min-height:36px;min-width:0;padding:0 var(--space-3);transition:border-color var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease);width:100%}.inline-cloze-row input:focus,.inline-cloze-row select:focus{border-color:var(--accent);box-shadow:0 0 0 3px #00896a1c;box-shadow:0 0 0 3px oklch(56% .12 170deg / .11);outline:0}.inline-answer-list{display:grid;gap:5px}.inline-select-options{display:grid;gap:6px}.inline-select-label{clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.inline-cloze-row .select-option-row{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);display:grid;gap:6px;grid-template-columns:22px minmax(0,1fr) 28px;padding:2px 4px}.inline-cloze-row .inline-correct-radio{accent-color:var(--accent);height:15px;justify-self:center;margin:0;width:15px}.inline-cloze-row .remove-option-btn{align-items:center;background:transparent;border:0;border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;display:inline-flex;height:30px;justify-content:center;padding:0;width:30px}.inline-cloze-row .select-option-row.is-correct input{border-color:color-mix(in srgb,var(--accent) 45%,var(--border))}.inline-cloze-row .select-option-row input:not([type=radio]){border:0;box-shadow:none;min-height:30px;padding:0 var(--space-2)}.inline-cloze-row .remove-option-btn:hover:not([disabled]){background:#c74c411a;color:var(--danger)}.inline-cloze-row .remove-option-btn[disabled]{cursor:not-allowed;opacity:.35}.inline-add-answer{background:transparent;border:0;color:var(--accent-deep);cursor:pointer;font-size:12px;font-weight:800;justify-self:start;min-height:28px;padding:0 var(--space-1)}.inline-add-answer:hover{text-decoration:underline}.inline-note-input{width:100%}.insert-blank-bar{align-items:center;background:color-mix(in srgb,var(--accent) 3%,transparent);border:1px solid color-mix(in srgb,var(--accent) 14%,transparent);border-radius:0 0 var(--radius-md) var(--radius-md);border-top:0;display:flex;flex-wrap:wrap;gap:var(--space-1);padding:6px var(--space-3)}.insert-blank-label{align-items:center;color:var(--accent-deep);display:inline-flex;font-size:12px;font-weight:750;gap:var(--space-1)}.insert-blank-label app-ui-icon{height:14px;width:14px}.insert-blank-chip{background:var(--accent-soft);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);border-radius:var(--radius-pill);color:var(--accent-deep);cursor:pointer;font-family:monospace;font-size:12px;font-weight:800;min-height:24px;padding:2px 9px;transition:background .15s,transform .1s}.insert-blank-chip:hover{background:var(--accent);color:#fff;transform:translateY(-1px)}.insert-blank-chip:active{transform:translateY(0)}.create-from-selection{font-family:inherit}.manual-marker-tools{background:transparent;border:1px solid var(--border);border-top:0;color:var(--muted);font-size:12px;padding:5px var(--space-3)}.manual-marker-tools summary{cursor:pointer;font-weight:800}.marker-chip-list{display:flex;flex-wrap:wrap;gap:var(--space-1);padding-top:var(--space-2)}.delete-row-btn{align-items:center;background:transparent;border:0;border-radius:8px;color:var(--muted);cursor:pointer;display:inline-flex;font-size:16px;height:44px;justify-content:center;padding:0;transition:all var(--duration-fast) var(--ease);width:44px}.delete-row-btn:hover{background:#c74c411a;color:var(--danger);transform:scale(1.04)}.add-matching-row{align-items:center;background:linear-gradient(135deg,var(--accent),var(--accent-deep));border:0;border-radius:var(--radius-pill);box-shadow:0 8px 22px #00896a33;box-shadow:0 8px 22px oklch(56% .12 170deg / .2);color:#fff;cursor:pointer;display:inline-flex;font-size:13.5px;font-weight:800;gap:var(--space-2);justify-content:center;justify-self:start;padding:10px 20px;transition:all var(--duration-fast) var(--ease);width:fit-content}.add-matching-row:hover{box-shadow:0 12px 28px #00896a4d;box-shadow:0 12px 28px oklch(56% .12 170deg / .3);opacity:.95;transform:translateY(-1.5px)}.add-matching-row:active{transform:translateY(0)}.media-tools{align-items:center;display:flex;flex-wrap:wrap;gap:var(--space-2)}.media-block-editor{align-items:center;border:1px solid var(--border);border-radius:var(--radius-md);display:grid;gap:var(--space-3);grid-template-columns:minmax(120px,180px) minmax(0,1fr) auto;padding:var(--space-3)}.media-block-editor img,.media-block-editor video{aspect-ratio:16/9;background:var(--surface-raised);border-radius:var(--radius-sm);object-fit:cover;width:100%}.media-block-fields{display:grid;gap:var(--space-1);min-width:0}.media-block-fields span{color:var(--muted);font-size:12px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inline-cloze-guide,.fill-blank-standalone-guide{align-items:center;background:color-mix(in srgb,var(--accent) 8%,transparent);border:1px solid color-mix(in srgb,var(--accent) 25%,transparent);border-radius:var(--radius-md);color:var(--accent-deep);display:flex;font-size:13px;font-weight:700;gap:var(--space-2);padding:var(--space-2) var(--space-3)}.inline-cloze-guide code,.fill-blank-standalone-guide code{background:var(--accent-soft);border-radius:4px;font-family:monospace;font-size:12px;padding:1px 5px}.inline-cloze-guide app-ui-icon.guide-icon,.fill-blank-standalone-guide app-ui-icon.guide-icon{color:var(--accent);flex-shrink:0;height:16px;width:16px}.answer-mode-toggle{background:var(--surface-raised, var(--surface));border:1px solid var(--border);border-radius:var(--radius-pill);display:inline-flex;gap:2px;padding:2px;width:fit-content}.mode-btn{background:transparent;border:0;border-radius:calc(var(--radius-pill) - 2px);color:var(--ink-soft);font-size:13px;font-weight:800;padding:var(--space-1) var(--space-3);transition:background .15s,color .15s}.mode-btn.active{background:var(--accent);color:#fff}.select-options-editor{display:grid;gap:var(--space-2)}.select-options-label{color:var(--ink-soft);font-size:12px;font-weight:800;margin:0}.select-options-label .hint-text{color:var(--success)}.select-option-row{align-items:center;border:1px solid transparent;border-radius:var(--radius-md);display:flex;gap:var(--space-2);padding:4px var(--space-2);transition:background .15s}.select-option-row.is-correct{background:color-mix(in srgb,var(--success) 8%,transparent);border-color:color-mix(in srgb,var(--success) 30%,transparent)}.select-option-row input{flex:1;min-height:38px;padding:0 var(--space-3)}.correct-toggle-checkbox{background:transparent;border:0;color:var(--ink-muted);cursor:pointer;font-size:18px;line-height:1;padding:2px 4px}.correct-toggle-checkbox.checked{color:var(--success)}.remove-option-btn{align-items:center;background:transparent;border:0;color:var(--ink-muted);cursor:pointer;display:flex;height:32px;justify-content:center;width:32px}.remove-option-btn:hover:not(:disabled){color:var(--danger)}.remove-option-btn:disabled{opacity:.35}.teacher-note-editor{display:grid;gap:var(--space-1)}.teacher-note-editor span{align-items:center;color:var(--ink-soft);display:inline-flex;font-size:12px;font-weight:800;gap:var(--space-1)}.teacher-note-editor app-ui-icon.note-icon{color:var(--accent);height:14px;width:14px}.teacher-note-editor textarea{min-height:56px;padding:var(--space-2) var(--space-3);resize:vertical}.attempt-section{align-items:start;display:grid;gap:var(--space-5);grid-template-columns:minmax(340px,.95fr) minmax(420px,1.05fr)}.attempt-section>.passage-panel{max-height:calc(100vh - 92px);overflow:auto;position:sticky;top:76px}.question-column{display:grid;gap:var(--space-5);min-width:0}a{color:inherit;text-decoration:none}h1,h2,h3{color:var(--ink-strong);font-family:var(--font-display);letter-spacing:0;margin:0}h1{font-size:clamp(20px,1.8vw,24px);line-height:1.2}h2{font-size:clamp(16px,1.3vw,18px);line-height:1.25}h3{font-size:15px;line-height:1.25}p{margin:0}.login-page,.login-page .panel{animation:page-entry var(--duration-base) var(--ease) both}:focus-visible{outline:2.5px solid var(--accent);outline-offset:2px;box-shadow:0 0 0 4px #339a7c40}@media(max-width:820px){.inline-cloze-table-head{display:none}.inline-cloze-row{grid-template-columns:32px 1fr 36px}.inline-answer-list,.inline-mode-select,.inline-note-input{grid-column:2/-1}.inline-cloze-row .delete-row-btn{grid-column:3;grid-row:1}.media-block-editor{grid-template-columns:1fr auto}.media-block-editor img,.media-block-editor video,.media-block-fields{grid-column:1/-1}}@media(max-width:980px){.attempt-section{grid-template-columns:1fr}.attempt-section>.passage-panel{max-height:none;overflow:visible;position:static}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}@keyframes page-entry{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page{margin:0 auto;max-width:var(--max);padding:clamp(18px,3vw,36px)}.shell{align-items:start;display:grid;gap:var(--space-6);grid-template-columns:248px minmax(0,1fr)}.sidebar{background:linear-gradient(180deg,#ffffffeb,#f3fafee6);border:1px solid oklch(100% 0 0deg / .8);border-radius:var(--radius-xl);box-shadow:var(--shadow-soft),var(--shadow-inner);min-height:calc(100vh - 48px);padding:var(--space-5);position:sticky;top:24px}.brand{align-items:center;display:flex;gap:var(--space-3);margin-bottom:var(--space-8)}.logo{background:linear-gradient(135deg,oklch(100% 0 0deg / .5),transparent),linear-gradient(145deg,var(--accent),var(--secondary));border-radius:var(--radius-md);box-shadow:0 12px 26px #00896a42;box-shadow:0 12px 26px oklch(56% .12 170deg / .26);color:#fff;display:grid;font-weight:800;height:42px;letter-spacing:-.03em;place-items:center;width:42px}.logo-img{border-radius:var(--radius-md);height:42px;object-fit:contain;width:42px}.brand strong{color:var(--ink-strong);display:block;font-family:var(--font-display);letter-spacing:-.025em}.brand span,.brand small{color:var(--muted);display:block;font-size:12px;margin-top:1px}.nav{display:grid;gap:var(--space-2);margin-bottom:var(--space-8)}.nav a{align-items:center;border-radius:var(--radius-md);color:var(--ink-soft);display:flex;gap:var(--space-3);padding:11px 12px;transition:background var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease),transform var(--duration-fast) var(--ease)}.nav a:hover,.nav a.active{background:var(--surface);box-shadow:0 8px 24px #1c30410f;color:var(--ink-strong);transform:translateY(-1px)}.nav-dot{background:var(--border);border-radius:var(--radius-pill);height:9px;width:9px}.active .nav-dot,.nav a.active .nav-dot{background:var(--accent)}.mini-panel{background:linear-gradient(145deg,var(--surface-tint),var(--surface));border:1px solid oklch(100% 0 0deg / .85);border-radius:var(--radius-lg);box-shadow:var(--shadow-inner);padding:var(--space-4)}.mini-panel b{color:var(--ink-strong);display:block;margin-bottom:4px}.mini-panel p,.muted{color:var(--muted);font-size:13px}.topbar{align-items:center;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffffc7;border:1px solid oklch(100% 0 0deg / .75);border-radius:var(--radius-xl);box-shadow:0 18px 52px #1c304114;display:flex;gap:var(--space-4);justify-content:space-between;margin-bottom:var(--space-6);padding:12px;position:sticky;top:18px;z-index:5}.search,.filter-search{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);display:flex;flex:1;gap:var(--space-3);min-height:44px;min-width:160px;padding:0 14px}.search input,.filter-search input{background:transparent;border:0;color:var(--fg);outline:0;width:100%}.input,input.ui-input,select.ui-input,textarea.ui-input{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);min-height:44px;outline:0;padding:0 14px;transition:border-color var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease);width:100%}textarea.ui-input{min-height:104px;padding-block:12px;resize:vertical}.input:focus,.ui-input:focus{border-color:var(--accent);box-shadow:0 0 0 4px #00896a24;box-shadow:0 0 0 4px oklch(56% .12 170deg / .14)}.input.ng-invalid.ng-touched,.ui-input.ng-invalid.ng-touched,.input[aria-invalid=true],.ui-input[aria-invalid=true]{border-color:var(--danger);box-shadow:0 0 0 4px #c74c411f}.btn,.button{align-items:center;background:var(--surface);border:2px solid oklch(85% .01 240deg);border-bottom-color:#a6afb7;border-right-color:#b7bfc5;border-radius:var(--radius-pill);box-shadow:0 4px #b5bfc7,0 6px 12px #0f304a26;color:var(--ink-strong);display:inline-flex;font-weight:750;gap:var(--space-2);justify-content:center;min-height:44px;padding:10px 20px;position:relative;top:0;transition:background var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease),transform var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease)}.btn:hover,.button:hover{background:#f9fcff;box-shadow:0 6px #b5bfc7,0 10px 20px #0f304a33;transform:translateY(-2px)}.btn:active,.button:active{box-shadow:0 2px #b5bfc7,0 3px 6px #0f304a1a;transform:translateY(2px)}.btn.primary,.button.primary{background:linear-gradient(180deg,var(--accent) 0%,var(--accent-deep) 100%);border:2px solid var(--accent-deep);border-bottom-color:#004f3c;border-bottom-color:oklch(38% .1 170deg);border-right-color:#005b4b;border-right-color:oklch(42% .1 175deg);box-shadow:0 4px #005b46,0 8px 20px #00896a59;box-shadow:0 4px oklch(42% .1 170deg),0 8px 20px oklch(56% .12 170deg / .35);color:#fff}.btn.primary:hover,.button.primary:hover{background:linear-gradient(180deg,oklch(66% .11 170deg) 0%,var(--accent-deep) 100%);box-shadow:0 6px #005b46,0 12px 30px #00896a73;box-shadow:0 6px oklch(42% .1 170deg),0 12px 30px oklch(56% .12 170deg / .45);transform:translateY(-2px)}.btn.primary:active,.button.primary:active{box-shadow:0 2px #005b46,0 4px 10px #00896a40;box-shadow:0 2px oklch(42% .1 170deg),0 4px 10px oklch(56% .12 170deg / .25);transform:translateY(2px)}.btn.primary app-ui-icon,.button.primary app-ui-icon{color:currentColor!important}.btn.secondary,.button.secondary,.button.ghost{border:2px solid oklch(85% .01 240deg);border-bottom-color:#a6afb7;border-right-color:#b7bfc5;box-shadow:0 4px #c8cfd4,0 6px 12px #0f304a1f}.btn.secondary:hover,.button.secondary:hover,.button.ghost:hover{border-color:var(--accent);border-bottom-color:var(--accent-deep);border-right-color:#007b66;border-right-color:oklch(52% .1 175deg);box-shadow:0 6px #c8cfd4,0 10px 20px #0f304a2e;transform:translateY(-2px)}.btn.secondary:active,.button.secondary:active,.button.ghost:active{box-shadow:0 2px #c8cfd4,0 3px 6px #0f304a14;transform:translateY(2px)}.btn.danger-btn,.button.danger-btn{background:var(--color-danger-soft);border:2px solid var(--color-danger);border-bottom-color:#9d352d;border-right-color:#af3d34;box-shadow:0 4px #bf5449,0 6px 12px #c74c4133;color:var(--color-danger)}.btn.danger-btn:hover,.button.danger-btn:hover{background:var(--color-danger);box-shadow:0 6px #9d352d,0 10px 20px #c74c414d;color:#fff;transform:translateY(-2px)}.btn.danger-btn:active,.button.danger-btn:active{box-shadow:0 2px #9d352d,0 3px 6px #c74c4126;transform:translateY(2px)}.btn.small{font-size:13px;min-height:44px;padding:8px 16px;box-shadow:0 3px #b5bfc7,0 4px 8px #0f304a1f}.btn.small:hover{box-shadow:0 4px #b5bfc7,0 6px 12px #0f304a2e}.btn.small.primary{box-shadow:0 3px #005b46,0 6px 14px #00896a4d;box-shadow:0 3px oklch(42% .1 170deg),0 6px 14px oklch(56% .12 170deg / .3)}.btn.small.primary:hover{box-shadow:0 4px #005b46,0 8px 18px #00896a66;box-shadow:0 4px oklch(42% .1 170deg),0 8px 18px oklch(56% .12 170deg / .4)}.btn.icon-only{aspect-ratio:1;flex:0 0 auto;min-height:44px;min-width:44px;padding:0;width:44px}@media(min-width:820px){.btn:not(.primary):not(.small):not(.icon-only),.button:not(.primary):not(.small):not(.icon-only){min-height:44px;padding:10px 20px;font-size:14px}}.btn .icon,.btn app-ui-icon,.back-link app-ui-icon{align-items:center;display:inline-flex;font-size:16px;font-weight:850;justify-content:center;line-height:1}app-ui-icon[name=plus],app-ui-icon[name=check]{color:var(--success)}app-ui-icon[name=refresh],app-ui-icon[name=external-link],app-ui-icon[name=table],app-ui-icon[name=play],app-ui-icon[name=search],app-ui-icon[name=arrow-left]{color:var(--accent-deep)}app-ui-icon[name=edit]{color:var(--secondary)}app-ui-icon[name=key],app-ui-icon[name=lock]{color:#a36e09}app-ui-icon[name=minus],app-ui-icon[name=close]{color:var(--danger)}.btn.primary app-ui-icon{color:#fff}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.skip-link{position:absolute;left:-9999px;z-index:9999;background:var(--accent);color:#fff;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-weight:700;text-decoration:none}.skip-link:focus{left:var(--space-4);top:var(--space-4);outline:3px solid var(--ink-strong);outline-offset:2px}.btn:disabled,.button:disabled{cursor:not-allowed;opacity:.56;transform:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft),var(--shadow-inner);min-width:0;padding:var(--space-5)}.soft-card{background:linear-gradient(160deg,var(--surface),oklch(97% .021 178deg));border-color:#ffffffe6}.card-head{align-items:start;display:flex;gap:var(--space-4);justify-content:space-between;margin-bottom:var(--space-4)}.card-head p{margin-top:var(--space-1)}.dashboard-head{align-items:end;display:flex;gap:var(--space-4);justify-content:space-between}.header-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.dashboard-head>div{display:grid;gap:var(--space-2);min-width:0}.dashboard-head p{color:var(--muted);max-width:68ch}.eyebrow{color:var(--accent-deep);display:inline-flex;font-size:12px;font-weight:850;letter-spacing:.08em;line-height:1.2;text-transform:uppercase}.stat-grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(4,minmax(0,1fr))}.stat{background:linear-gradient(160deg,var(--surface),oklch(98% .014 178deg));border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft),var(--shadow-inner);display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);min-width:0;padding:var(--space-3) var(--space-4);transition:transform var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease)}.stat:hover{box-shadow:var(--shadow-card);transform:translateY(-1px)}.stat span{color:var(--muted);font-size:13.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat b{color:var(--ink-strong);font-family:var(--font-display);font-size:20px;line-height:1.1;overflow-wrap:anywhere;white-space:nowrap}.hero,.section,.sample{background:linear-gradient(180deg,#ffffffe6,#f4f9fde0);border:1px solid oklch(100% 0 0deg / .82);border-radius:var(--radius-xl);box-shadow:var(--shadow-card),var(--shadow-inner)}.badge,.status-badge{align-items:center;background:var(--accent-soft);border-radius:var(--radius-pill);color:var(--accent-deep);display:inline-flex;font-size:12px;font-weight:750;min-height:28px;padding:5px 10px;white-space:nowrap}.badge.blue,.status-badge.info{background:var(--secondary-soft);color:#135298}.badge.gold,.status-badge.warning{background:var(--gold-soft);color:#694500;color:oklch(42% .09 75deg)}.badge.red,.status-badge.danger{background:#ffe8e5;background:oklch(95% .035 28deg);color:var(--danger)}.badge.neutral,.status-badge.neutral{background:#eff2f6;color:var(--muted)}.practice-card{background:linear-gradient(145deg,#ffffffeb,#e1f8f2c7),var(--surface);border:1px solid oklch(100% 0 0deg / .86);border-radius:var(--radius-lg);box-shadow:0 20px 58px #1c30411a,var(--shadow-inner);min-height:210px;overflow:hidden;padding:var(--space-5);position:relative;transition:box-shadow var(--duration-base) var(--ease),transform var(--duration-base) var(--ease)}.practice-card:after{background:linear-gradient(145deg,var(--accent-soft),oklch(94% .035 255deg));border-radius:var(--radius-xl);bottom:-38px;content:"";height:110px;position:absolute;right:-36px;transform:rotate(18deg);width:110px}.practice-card:hover{box-shadow:0 28px 78px #1c304124;transform:translateY(-5px)}.practice-card>*{position:relative;z-index:1}.progress-line{background:#dce2e7;border-radius:var(--radius-pill);height:9px;overflow:hidden;width:100%}.progress-line span{background:linear-gradient(90deg,var(--accent),var(--secondary));border-radius:inherit;display:block;height:100%}.filters,.filter-bar{align-items:center;display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-5)}.chip,.filter-chip{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--ink-soft);font-weight:700;min-height:36px;padding:8px 13px;transition:background var(--duration-fast) var(--ease),border-color var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease)}.chip[aria-pressed=true],.filter-chip.active{background:var(--accent-deep);border-color:var(--accent-deep);color:#fff}.segmented-options{display:flex;flex-wrap:wrap;gap:var(--space-2)}.choice-button{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--ink-soft);font-weight:800;padding:var(--space-2) var(--space-3)}.choice-button.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-deep)}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);max-height:680px;max-width:100%;overflow:auto}.table-wrap table{border-collapse:collapse;font-size:14px;min-width:560px;width:100%}.table-wrap th,.table-wrap td{border-bottom:1px solid var(--border);padding:14px 16px;text-align:left}.table-wrap th{background:var(--surface);color:var(--muted);font-size:12px;letter-spacing:.04em;position:sticky;top:0;text-transform:uppercase;z-index:1}.table-wrap tr:last-child td{border-bottom:0}.table-wrap tbody tr{transition:background var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease)}.table-wrap tbody tr:hover{background:#e9f9f5b8}.table-wrap td strong,.table-wrap td span{display:block}.table-wrap td span{color:var(--muted);font-size:12px;margin-top:2px}.table-actions,.row-actions{display:flex;flex-wrap:nowrap;gap:var(--space-2)!important;justify-content:flex-end}.pagination{align-items:center;border-top:1px solid var(--border);display:flex;gap:var(--space-3);justify-content:space-between;margin-top:var(--space-4);padding-top:var(--space-4)}.pagination-info{color:var(--muted);font-size:13px;font-weight:700}.pagination-actions{display:flex;gap:var(--space-2)}.list-row{align-items:center;background:color-mix(in oklch,var(--surface),white 12%);border:1px solid var(--border);border-radius:var(--radius-lg);display:grid;gap:var(--space-4);grid-template-columns:minmax(0,1fr) auto;padding:var(--space-4)}.list-row-main{display:grid;gap:var(--space-2);min-width:0}.list-row-title{align-items:center;display:flex;flex-wrap:wrap;gap:var(--space-2)}.list-row-title h3{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-row-meta{color:var(--muted);display:flex;flex-wrap:wrap;font-size:13px;gap:var(--space-3)}.empty-state{background:#f9fcfeb8;border:1px dashed oklch(78% .02 240deg);border-radius:var(--radius-lg);color:var(--muted);padding:var(--space-6)}.empty-state.error-state,.form-message.error{background:color-mix(in oklch,var(--danger-soft),white 38%);border-color:color-mix(in oklch,var(--danger),white 62%);color:var(--danger)}.empty-state.warning-state{background:color-mix(in oklch,var(--gold-soft),white 32%);border-color:color-mix(in oklch,var(--warning),white 62%);color:#694500;color:oklch(42% .09 75deg)}.empty-state.success-state,.form-message.success{background:var(--accent-soft);border-color:color-mix(in oklch,var(--accent),white 62%);color:var(--accent-deep)}.avatar{align-items:center;background:linear-gradient(145deg,var(--accent),var(--secondary));border:1px solid oklch(100% 0 0deg / .68);border-radius:var(--radius-pill);box-shadow:var(--shadow-primary);color:#fff;display:inline-flex;flex:0 0 auto;font-size:13px;font-weight:850;height:36px;justify-content:center;line-height:1;width:36px}.loading-skeleton{background:linear-gradient(90deg,#e7ecf0,#f9fcfe 42%,#e7ecf0);background-size:220% 100%;border-radius:var(--radius-md);min-height:16px;animation:elevate-skeleton 1.2s var(--ease) infinite}@keyframes elevate-skeleton{0%{background-position:120% 0}to{background-position:-120% 0}}.modal-backdrop{align-items:center;background:#060e1752;display:grid;inset:0;justify-items:center;padding:var(--space-5);position:fixed;z-index:1100}.modal,.drawer{background:linear-gradient(180deg,#fffffff0,#f4f9fdeb);border:1px solid oklch(100% 0 0deg / .82);border-radius:var(--radius-xl);box-shadow:var(--shadow-card),var(--shadow-inner);padding:var(--space-5)}.modal{max-width:min(540px,100%);width:100%}@media(max-width:640px){.modal{max-height:85vh;overflow-y:auto}}.drawer{align-self:stretch;justify-self:end;max-width:min(420px,100%);width:100%}@media(max-width:1120px){.shell{grid-template-columns:1fr}.sidebar{display:grid;grid-template-columns:1fr;min-height:auto;position:relative;top:0}.nav{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:820px){.topbar,.card-head,.dashboard-head{align-items:stretch;flex-direction:column}.stat-grid,.nav{grid-template-columns:repeat(2,minmax(0,1fr))}.pagination,.list-row{align-items:stretch;grid-template-columns:1fr}.pagination{flex-direction:column}.pagination-actions,.table-actions,.row-actions{justify-content:flex-start}}@media(max-width:520px){.page{padding:12px}.hero,.section,.sample{border-radius:var(--radius-lg);padding:18px}.top-actions{justify-content:space-between;width:100%}.nav,.stat-grid{grid-template-columns:1fr}}@media(max-width:820px){.table-wrap table{min-width:0!important}.table-wrap thead{display:none!important}.table-wrap tbody tr{display:grid!important;grid-template-columns:1fr;padding:var(--space-3) 0;border-bottom:1px solid var(--border)}.table-wrap td{display:flex!important;justify-content:space-between;align-items:center;border-bottom:0!important;padding:var(--space-2) var(--space-4)!important;text-align:right}.table-wrap td:before{content:attr(data-label);font-weight:750;color:var(--muted);text-transform:uppercase;font-size:11px;letter-spacing:.04em;margin-right:var(--space-4);text-align:left}.table-wrap td strong,.table-wrap td span{display:inline-block!important}.table-actions,.row-actions{justify-content:flex-end!important;width:100%}}.required{color:var(--danger);margin-left:2px}.floating-toast-container{position:fixed;top:24px;right:24px;display:flex;flex-direction:column;gap:var(--space-2);z-index:9999;pointer-events:none}.floating-toast{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:var(--radius-md);box-shadow:var(--shadow-card);color:var(--fg);display:flex;align-items:center;gap:var(--space-3);padding:12px 18px;min-width:280px;font-weight:700;font-size:14px;pointer-events:auto;animation:slide-in-toast .3s var(--ease) forwards}.floating-toast.success{border-left-color:var(--success)}.floating-toast.error{border-left-color:var(--danger)}@keyframes slide-in-toast{0%{transform:translateY(-20px) scale(.95);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.floating-toast.fade-out{animation:fade-out-toast .3s var(--ease) forwards}@keyframes fade-out-toast{to{transform:translateY(-10px) scale(.95);opacity:0}}.btn-copied{background:var(--success)!important;color:#fff!important;border-color:var(--success)!important;box-shadow:0 4px 12px #258d4833!important;pointer-events:none}.pencil{display:block;width:10em;height:10em}.pencil__body1,.pencil__body2,.pencil__body3,.pencil__eraser,.pencil__eraser-skew,.pencil__point,.pencil__rotate,.pencil__stroke{animation-duration:3s;animation-timing-function:linear;animation-iteration-count:infinite}.pencil__body1,.pencil__body2,.pencil__body3{transform:rotate(-90deg)}.pencil__body1{animation-name:pencilBody1}.pencil__body2{animation-name:pencilBody2}.pencil__body3{animation-name:pencilBody3}.pencil__eraser{animation-name:pencilEraser;transform:rotate(-90deg) translate(49px)}.pencil__eraser-skew{animation-name:pencilEraserSkew;animation-timing-function:ease-in-out}.pencil__point{animation-name:pencilPoint;transform:rotate(-90deg) translate(49px,-30px)}.pencil__rotate{animation-name:pencilRotate}.pencil__stroke{animation-name:pencilStroke;transform:translate(100px,100px) rotate(-113deg)}@keyframes pencilBody1{0%,to{stroke-dashoffset:351.86;transform:rotate(-90deg)}50%{stroke-dashoffset:150.8;transform:rotate(-225deg)}}@keyframes pencilBody2{0%,to{stroke-dashoffset:406.84;transform:rotate(-90deg)}50%{stroke-dashoffset:174.36;transform:rotate(-225deg)}}@keyframes pencilBody3{0%,to{stroke-dashoffset:296.88;transform:rotate(-90deg)}50%{stroke-dashoffset:127.23;transform:rotate(-225deg)}}@keyframes pencilEraser{0%,to{transform:rotate(-45deg) translate(49px)}50%{transform:rotate(0) translate(49px)}}@keyframes pencilEraserSkew{0%,32.5%,67.5%,to{transform:skew(0)}35%,65%{transform:skew(-4deg)}37.5%,62.5%{transform:skew(8deg)}40%,45%,50%,55%,60%{transform:skew(-15deg)}42.5%,47.5%,52.5%,57.5%{transform:skew(15deg)}}@keyframes pencilPoint{0%,to{transform:rotate(-90deg) translate(49px,-30px)}50%{transform:rotate(-225deg) translate(49px,-30px)}}@keyframes pencilRotate{0%{transform:translate(100px,100px) rotate(0)}to{transform:translate(100px,100px) rotate(720deg)}}@keyframes pencilStroke{0%{stroke-dashoffset:439.82;transform:translate(100px,100px) rotate(-113deg)}50%{stroke-dashoffset:164.93;transform:translate(100px,100px) rotate(-113deg)}75%,to{stroke-dashoffset:439.82;transform:translate(100px,100px) rotate(112deg)}}.app-shell{align-items:start;display:grid;gap:var(--space-6);grid-template-columns:248px minmax(0,1fr);min-height:100vh;padding:clamp(18px,3vw,36px)}.shell-ocean{bottom:clamp(4px,2vw,18px);filter:drop-shadow(0 16px 24px oklch(24% .045 230deg / .14));height:clamp(112px,11.5vw,160px);left:clamp(6px,1.8vw,26px);opacity:.9;overflow:hidden;pointer-events:none;position:fixed;right:auto;width:clamp(150px,13.5vw,196px);z-index:1}.shell-ocean-video{display:block;height:100%;inset:0;position:absolute;width:100%}.shell-ocean-video{filter:saturate(1.08) contrast(1.04);-webkit-mask-image:radial-gradient(ellipse at 50% 58%,#000 48%,rgba(0,0,0,.74) 62%,transparent 79%);mask-image:radial-gradient(ellipse at 50% 58%,#000 48%,rgba(0,0,0,.74) 62%,transparent 79%);object-fit:cover;opacity:.92;z-index:2}.main-shell{display:grid;gap:var(--space-6);grid-template-rows:auto minmax(0,1fr);min-width:0}.main-shell>header{align-items:center;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#ffffffc7;border:1px solid oklch(100% 0 0deg / .75);border-radius:var(--radius-xl);box-shadow:0 18px 52px #1c304114;display:flex;gap:var(--space-4);justify-content:space-between;margin-bottom:0;padding:12px;position:sticky;top:18px;z-index:5}.main-shell>header strong{color:var(--ink-strong);display:block;font-size:15px}.sidebar nav{display:grid;gap:var(--space-2);margin-bottom:var(--space-8)}.sidebar nav p{color:var(--muted);font-size:11px;font-weight:800;margin:14px 12px 2px;text-transform:uppercase}.sidebar nav a{align-items:center;border-radius:var(--radius-md);color:var(--ink-soft);display:flex;gap:var(--space-3);padding:11px 12px;transition:background var(--duration-fast) var(--ease),color var(--duration-fast) var(--ease),transform var(--duration-fast) var(--ease)}.sidebar nav a:hover,.sidebar nav a.active{background:var(--surface);box-shadow:0 8px 24px #1c30410f;color:var(--ink-strong);transform:translateY(-1px)}.account{align-items:center;display:flex;gap:var(--space-3);margin-left:auto}.top-actions{align-items:center;display:flex;gap:var(--space-3)}.account span{color:var(--muted);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.signin,.account button{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--ink-strong);display:inline-flex;font-weight:750;justify-content:center;min-height:36px;padding:7px 12px}.button.ghost{border:1px solid var(--border);box-shadow:none}.status-pill{align-items:center;background:var(--accent-soft);border-radius:var(--radius-pill);color:var(--accent-deep);display:inline-flex;font-size:12px;font-style:normal;font-weight:750;justify-content:center;min-height:28px;padding:5px 10px;white-space:nowrap}.status-pill.info,.status-pill.primary{background:var(--secondary-soft);color:#135298}.status-pill.warning{background:var(--gold-soft);color:#694500;color:oklch(42% .09 75deg)}.status-pill.danger{background:#ffe8e5;background:oklch(95% .035 28deg);color:var(--danger)}.login-page{align-items:center;background:radial-gradient(circle at 18% 18%,oklch(93% .045 172deg / .92),transparent 31%),radial-gradient(circle at 86% 74%,oklch(94% .035 255deg / .92),transparent 30%),linear-gradient(135deg,var(--bg),oklch(96% .012 238deg));display:grid;min-height:100vh;padding:var(--space-6)}.login-shell{display:grid;gap:var(--space-5);grid-template-columns:minmax(0,1.2fr) minmax(340px,420px);margin:0 auto;max-width:1040px;width:100%}.login-hero{background:linear-gradient(180deg,#ffffffeb,#e7faf5e0);border:1px solid rgba(255,255,255,.9);border-radius:var(--radius-xl);box-shadow:var(--shadow-card);min-height:560px;overflow:hidden;padding:clamp(30px,6vw,72px);position:relative}.login-hero:after{background:linear-gradient(135deg,var(--accent),transparent 38%),var(--surface);border:18px solid var(--accent);border-radius:38px;box-shadow:var(--shadow-soft);content:"";height:210px;position:absolute;right:-18px;top:36px;transform:rotate(-7deg);width:210px}.login-page .brand-mark{align-items:center;background:linear-gradient(135deg,#7fbdb8,#a7c7e7);border-radius:var(--radius-lg);box-shadow:var(--shadow-primary);color:#fff;display:inline-flex;font-weight:900;height:42px;justify-content:center;margin-bottom:var(--space-5);width:42px}.login-logo{height:auto;max-height:115px;max-width:280px;margin-bottom:var(--space-5)}.login-hero h1{color:var(--ink-strong);font-size:clamp(44px,7vw,84px);line-height:.96;margin:var(--space-4) 0;max-width:620px;position:relative;z-index:1}.login-hero p{color:var(--muted);font-size:20px;line-height:1.45;max-width:540px;position:relative;z-index:1}.hero-card{background:color-mix(in oklch,var(--secondary-soft),white 24%);border:1px solid rgba(255,255,255,.72);border-radius:var(--radius-xl);box-shadow:var(--shadow-soft);display:grid;gap:var(--space-2);margin-top:var(--space-6);max-width:300px;padding:var(--space-4)}.hero-card span,.login-panel label>span{color:var(--muted);font-size:14px}.login-panel,.login-panel label{display:grid;gap:var(--space-4)}.login-panel{align-self:center}.login-panel h2{color:var(--ink-strong);font-size:32px;line-height:1.1;margin:var(--space-2) 0 0}.login-panel label{gap:var(--space-2)}.login-panel label>span{color:var(--ink-strong);font-weight:800}.form-message{border-radius:var(--radius-md);font-size:14px;margin:0;padding:var(--space-3)}.form-message.error{background:color-mix(in oklch,var(--danger-soft),white 38%);border:1px solid color-mix(in oklch,var(--danger),white 62%);color:var(--danger)}.mobile-menu-toggle{display:none}.mobile-backdrop{position:fixed;inset:0;background:#00000059;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:90;animation:fade-in var(--duration-base) var(--ease) both}.student-tabs{display:inline-flex;gap:var(--space-1);background:#fff9;border:1px solid var(--border);padding:4px;border-radius:var(--radius-pill);margin-bottom:var(--space-5);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.student-tabs a{display:inline-flex;align-items:center;padding:8px 16px;font-size:14px;font-weight:700;color:var(--ink-soft);border-radius:var(--radius-pill);transition:all var(--duration-fast) var(--ease)}.student-tabs a:hover{color:var(--ink-strong);background:#fff6}.student-tabs a.active{background:var(--accent);color:#fff;box-shadow:0 4px 12px #00896a33;box-shadow:0 4px 12px oklch(56% .12 170deg / .2)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@media(max-width:1120px){.app-shell{grid-template-columns:1fr}}@media(max-width:820px){.app-shell{gap:var(--space-4);padding:12px;grid-template-columns:1fr}.shell-ocean{display:none}.sidebar{position:fixed;top:0;left:0;bottom:0;width:280px;height:100vh;min-height:100vh;padding:var(--space-5);background:linear-gradient(180deg,#fffffffa,#f3fafefa);border:none;border-right:1px solid var(--border);border-radius:0 var(--radius-xl) var(--radius-xl) 0;box-shadow:var(--shadow-card);z-index:100;transform:translate(-100%);transition:transform var(--duration-base) var(--ease);margin:0;overflow-y:auto;display:block}.mobile-nav-open .sidebar{transform:translate(0)}.brand{margin-bottom:var(--space-6)}.sidebar nav{gap:var(--space-2);margin-bottom:var(--space-8)}.sidebar nav a{min-width:0;padding:11px 12px}.main-shell{gap:var(--space-4)}.account{flex-wrap:wrap}.main-shell>header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:10px 16px;position:sticky;top:12px;z-index:5}.mobile-menu-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--ink-strong);font-size:18px;transition:all var(--duration-fast) var(--ease);cursor:pointer}.mobile-menu-toggle:hover,.mobile-menu-toggle:focus-visible{background:var(--surface-raised);border-color:var(--accent)}}@media(max-width:520px){.sidebar nav a{font-size:14px}}@media(max-width:900px){.login-shell{grid-template-columns:1fr}.login-hero{min-height:auto}}@media(max-width:640px){.login-page,.login-hero{padding:var(--space-4)}.login-hero:after{opacity:.35;right:-84px}}@media(prefers-reduced-motion:reduce){.shell-ocean-video{opacity:.78}}
