:root{--color-primary: #4f46e5;--color-primary-hover: #4338ca;--color-primary-active: #3730a3;--color-primary-soft: #eef2ff;--color-primary-rgb: 79, 70, 229;--gradient-brand: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%);--color-bg: #f8fafc;--color-bg-accent: radial-gradient( 1200px 500px at 50% -10%, rgba(79, 70, 229, .07), transparent 60% );--color-surface: #ffffff;--color-surface-alt: #f1f5f9;--color-surface-glass: rgba(255, 255, 255, .82);--color-ink: #0f172a;--color-ink-secondary: #334155;--color-muted: #64748b;--color-border: #e2e8f0;--color-border-strong: #cbd5e1;--color-success: #059669;--color-success-soft: #ecfdf5;--color-success-border: #a7f3d0;--color-error: #dc2626;--color-error-soft: #fef2f2;--color-error-border: #fecaca;--color-warn: #b45309;--color-warn-soft: #fffbeb;--color-warn-border: #fde68a;--color-info-border: #c7d2fe;--color-highlight: #b45309;--color-highlight-soft: #fffbeb;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--font-serif: "Iowan Old Style", Georgia, "Times New Roman", serif;--text-xs: .8125rem;--text-sm: .9375rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.75rem;--text-3xl: 2.5rem;--leading-tight: 1.2;--leading-normal: 1.55;--leading-relaxed: 1.8;--tracking-tight: -.02em;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-8: 3rem;--radius-sm: 10px;--radius-md: 14px;--radius-lg: 18px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .05), 0 1px 3px rgba(15, 23, 42, .06);--shadow-md: 0 2px 4px rgba(15, 23, 42, .04), 0 8px 24px rgba(15, 23, 42, .08);--shadow-lg: 0 4px 8px rgba(15, 23, 42, .05), 0 20px 48px rgba(15, 23, 42, .14);--shadow-brand: 0 4px 14px rgba(var(--color-primary-rgb), .35);--container-max: 720px;--container-wide: 1040px;color-scheme:light}@media (prefers-color-scheme: dark){:root{--color-primary: #818cf8;--color-primary-hover: #a5b4fc;--color-primary-active: #6366f1;--color-primary-soft: rgba(129, 140, 248, .14);--color-primary-rgb: 129, 140, 248;--gradient-brand: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);--color-bg: #0b1120;--color-bg-accent: radial-gradient( 1200px 500px at 50% -10%, rgba(99, 102, 241, .12), transparent 60% );--color-surface: #111a2e;--color-surface-alt: #1b2540;--color-surface-glass: rgba(11, 17, 32, .8);--color-ink: #e2e8f0;--color-ink-secondary: #cbd5e1;--color-muted: #94a3b8;--color-border: #263352;--color-border-strong: #334569;--color-success: #34d399;--color-success-soft: rgba(52, 211, 153, .12);--color-success-border: rgba(52, 211, 153, .35);--color-error: #f87171;--color-error-soft: rgba(248, 113, 113, .12);--color-error-border: rgba(248, 113, 113, .35);--color-warn: #fbbf24;--color-warn-soft: rgba(251, 191, 36, .12);--color-warn-border: rgba(251, 191, 36, .35);--color-info-border: rgba(129, 140, 248, .35);--color-highlight: #fbbf24;--color-highlight-soft: rgba(251, 191, 36, .12);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--shadow-md: 0 2px 4px rgba(0, 0, 0, .3), 0 8px 24px rgba(0, 0, 0, .45);--shadow-lg: 0 4px 8px rgba(0, 0, 0, .35), 0 20px 48px rgba(0, 0, 0, .55);--shadow-brand: 0 4px 14px rgba(var(--color-primary-rgb), .25);color-scheme:dark}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-ink);background-color:var(--color-bg);background-image:var(--color-bg-accent);background-repeat:no-repeat;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh;display:flex;flex-direction:column}a{color:var(--color-primary);text-decoration:none}a:hover{color:var(--color-primary-hover);text-decoration:underline}h1,h2,h3{color:var(--color-ink);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);margin:0 0 var(--space-4);font-weight:700}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}::selection{background:var(--color-primary-soft)}.app-shell{min-height:100vh;display:flex;flex-direction:column;flex:1}.app-header{background:var(--color-surface-glass);-webkit-backdrop-filter:saturate(1.4) blur(14px);backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:10}.app-header__inner{max-width:var(--container-wide);margin:0 auto;padding:var(--space-3) var(--space-5);display:flex;align-items:center;justify-content:space-between;gap:var(--space-4)}.brand{display:inline-flex;align-items:center;gap:var(--space-2);font-weight:700;font-size:var(--text-lg);letter-spacing:var(--tracking-tight);color:var(--color-ink)}.brand:hover{color:var(--color-ink);text-decoration:none}.brand__mark{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:var(--radius-sm);background:var(--gradient-brand);color:#fff;font-size:var(--text-sm);font-weight:700;box-shadow:var(--shadow-brand)}.app-nav{display:flex;align-items:center;gap:var(--space-1);flex-wrap:wrap}.app-nav__link{padding:var(--space-2) var(--space-3);border-radius:var(--radius-pill);color:var(--color-muted);font-size:var(--text-sm);font-weight:500;transition:color .15s ease,background .15s ease}.app-nav__link:hover{color:var(--color-ink);background:var(--color-surface-alt);text-decoration:none}.app-nav__link--active{color:var(--color-primary);background:var(--color-primary-soft);font-weight:600}.app-nav__link--active:hover{color:var(--color-primary-hover);background:var(--color-primary-soft)}.app-nav .btn{margin-left:var(--space-2)}main.page{width:100%;max-width:var(--container-max);margin:0 auto;padding:var(--space-6) var(--space-5) var(--space-8);flex:1}main.page--wide{max-width:var(--container-wide)}.page__title{font-size:var(--text-2xl);margin-bottom:var(--space-2)}.page__lead{color:var(--color-muted);font-size:var(--text-lg);margin:0 0 var(--space-6)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-6);transition:box-shadow .2s ease,border-color .2s ease}.card:hover{box-shadow:var(--shadow-md)}.card+.card{margin-top:var(--space-5)}.card__title{font-size:var(--text-xl);margin-bottom:var(--space-4)}.form{display:flex;flex-direction:column;gap:var(--space-4)}.field{display:flex;flex-direction:column;gap:var(--space-2)}.label{font-size:var(--text-sm);font-weight:600;color:var(--color-ink-secondary)}.input,.select,.textarea{width:100%;font:inherit;color:var(--color-ink);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);padding:var(--space-3) var(--space-3);transition:border-color .15s ease,box-shadow .15s ease}.textarea{min-height:120px;resize:vertical;line-height:var(--leading-normal)}.textarea--essay{min-height:240px;font-size:var(--text-lg);line-height:var(--leading-relaxed)}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px rgba(var(--color-primary-rgb),.18)}.input[aria-invalid=true]{border-color:var(--color-error)}.input[aria-invalid=true]:focus{box-shadow:0 0 0 3px var(--color-error-soft)}.field-error{color:var(--color-error);font-size:var(--text-sm);margin:0}.word-counter{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--color-muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums;margin:0}.word-counter[data-out-of-range=true],.word-counter--warn{color:var(--color-warn);font-weight:600}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font:inherit;font-weight:600;line-height:1;padding:var(--space-3) var(--space-5);border-radius:var(--radius-pill);border:1px solid transparent;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .2s ease,transform .1s ease}.btn:disabled{opacity:.6;cursor:not-allowed}.btn:active:not(:disabled){transform:translateY(1px)}.btn--primary{background:var(--gradient-brand);color:#fff;box-shadow:var(--shadow-brand)}.btn--primary:hover:not(:disabled){filter:brightness(1.08);box-shadow:0 6px 20px rgba(var(--color-primary-rgb),.45)}.btn--secondary{background:var(--color-surface);color:var(--color-primary);border-color:var(--color-border-strong);box-shadow:var(--shadow-sm)}.btn--secondary:hover:not(:disabled){background:var(--color-surface-alt);border-color:var(--color-primary)}.btn--block{width:100%}.btn-link{text-decoration:none}.btn-link:hover{text-decoration:none;color:inherit}.btn--primary.btn-link:hover{color:#fff}.btn--google{color:var(--color-ink);gap:.6rem}.btn--google:hover{color:var(--color-ink)}.btn__icon{flex:0 0 auto}.divider{display:flex;align-items:center;gap:.75rem;margin:1.25rem 0;color:var(--color-muted);font-size:.85rem}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--color-border)}.fieldset{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5) var(--space-5);margin:0}.fieldset__legend{font-weight:600;padding:0 var(--space-2);color:var(--color-ink)}.fieldset__hint{color:var(--color-muted);font-size:var(--text-sm);margin:0 0 var(--space-3)}.radio-group{display:flex;flex-direction:column;gap:var(--space-2)}.radio-option{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.radio-option:hover{border-color:var(--color-primary);background:var(--color-primary-soft)}.radio-option:has(input:checked){border-color:var(--color-primary);background:var(--color-primary-soft);box-shadow:0 0 0 1px var(--color-primary) inset}.radio-option input{accent-color:var(--color-primary);width:1.05rem;height:1.05rem}.form-aside{margin-top:var(--space-5);color:var(--color-muted);font-size:var(--text-sm)}.muted{color:var(--color-muted)}.alert{border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);font-size:var(--text-sm);margin:0}.alert--error{background:var(--color-error-soft);color:var(--color-error);border:1px solid var(--color-error-border)}.alert--success{background:var(--color-success-soft);color:var(--color-success);border:1px solid var(--color-success-border)}.alert--info{background:var(--color-primary-soft);color:var(--color-primary-hover);border:1px solid var(--color-info-border)}.alert--warn{background:var(--color-warn-soft);color:var(--color-warn);border:1px solid var(--color-warn-border)}.goal-grid{display:grid;grid-template-columns:max-content 1fr;gap:var(--space-3) var(--space-6);margin:0}.goal-grid dt{color:var(--color-muted);font-size:var(--text-sm);font-weight:600}.goal-grid dd{margin:0;font-weight:600}.action-row{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-5)}.hero{text-align:center;padding:var(--space-8) 0 var(--space-6)}.hero__eyebrow{display:inline-block;text-transform:uppercase;letter-spacing:.08em;font-size:var(--text-xs);font-weight:700;color:var(--color-primary);background:var(--color-primary-soft);border:1px solid var(--color-info-border);padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);margin-bottom:var(--space-4)}.hero__title{font-size:var(--text-3xl);margin-bottom:var(--space-3);background:var(--gradient-brand);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:var(--color-primary)}.hero__subtitle{font-size:var(--text-lg);color:var(--color-muted);max-width:34rem;margin:0 auto var(--space-6)}.hero__actions{display:flex;justify-content:center;gap:var(--space-3);flex-wrap:wrap}.feature-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);margin-top:var(--space-6)}.feature-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-5);text-align:left;box-shadow:var(--shadow-sm);transition:box-shadow .2s ease,transform .2s ease}.feature-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.feature-card h3{font-size:var(--text-base);margin-bottom:var(--space-2)}.feature-card p{margin:0;color:var(--color-muted);font-size:var(--text-sm)}.reading-meta{display:flex;align-items:center;gap:var(--space-3);color:var(--color-muted);font-size:var(--text-sm);margin:0 0 var(--space-4)}.timer-pill{display:inline-flex;align-items:center;gap:var(--space-2);background:var(--color-surface-alt);border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:var(--space-1) var(--space-3);font-weight:600;font-variant-numeric:tabular-nums;color:var(--color-ink)}.passage{font-size:var(--text-lg);line-height:var(--leading-relaxed);color:var(--color-ink);max-width:62ch}.passage p{margin:0}.gloss{font:inherit;background:none;border:none;padding:0;margin:0;color:inherit;cursor:pointer;border-bottom:2px dotted var(--color-highlight);transition:background .15s ease;border-radius:3px}.gloss:hover{background:var(--color-highlight-soft);color:var(--color-highlight)}.gloss-panel{margin:var(--space-5) 0;background:var(--color-highlight-soft);border:1px solid var(--color-warn-border);border-left:4px solid var(--color-highlight);border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);color:var(--color-ink)}.gloss-panel strong{color:var(--color-highlight)}.questions{display:flex;flex-direction:column;gap:var(--space-4);margin:var(--space-6) 0}.question{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);margin:0;background:var(--color-surface)}.question__legend{font-weight:600;padding:0 var(--space-2)}.question .radio-group{margin-top:var(--space-3)}.correction{background:var(--color-warn-soft);color:inherit;border-bottom:2px solid var(--color-warn);border-radius:3px;padding:0 2px;cursor:help}.correction--grammar{background:var(--color-error-soft);border-bottom-color:var(--color-error)}.correction--word-choice,.correction--style{background:var(--color-primary-soft);border-bottom-color:var(--color-primary)}.correction--spelling{background:var(--color-warn-soft);border-bottom-color:var(--color-warn)}.results-callout{background:var(--color-primary-soft);border:1px solid var(--color-info-border);border-radius:var(--radius-lg);padding:var(--space-5);text-align:center;margin-bottom:var(--space-5)}.results-callout__score{font-size:var(--text-2xl);font-weight:700;color:var(--color-ink);margin:0 0 var(--space-2)}.clb-band{display:inline-flex;align-items:baseline;gap:var(--space-2);font-size:var(--text-xl);font-weight:700;color:var(--color-primary-hover)}.disclaimer-note{display:block;color:var(--color-muted);font-size:var(--text-sm);font-style:italic;margin-top:var(--space-2)}.results-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-2)}.results-list li{padding:var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface)}.tag{display:inline-block;font-size:var(--text-xs);font-weight:700;padding:2px var(--space-2);border-radius:var(--radius-pill);margin-right:var(--space-2)}.tag--correct{background:var(--color-success-soft);color:var(--color-success)}.tag--incorrect{background:var(--color-error-soft);color:var(--color-error)}.tag--warn{background:var(--color-warn-soft);color:var(--color-warn);border:1px solid var(--color-warn-border)}.tag--grammar{background:var(--color-error-soft);color:var(--color-error)}.tag--word-choice,.tag--style{background:var(--color-primary-soft);color:var(--color-primary)}.tag--spelling{background:var(--color-warn-soft);color:var(--color-warn)}.loading-state{display:flex;align-items:center;gap:var(--space-3);color:var(--color-muted);font-size:var(--text-base);padding:var(--space-5) 0}.spinner{width:20px;height:20px;border:2.5px solid var(--color-border-strong);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner{animation:none;border-top-color:var(--color-primary)}.card,.feature-card,.btn{transition:none}.feature-card:hover{transform:none}}@media (max-width: 640px){main.page{padding:var(--space-5) var(--space-4) var(--space-6)}.app-header__inner{padding:var(--space-3) var(--space-4);flex-wrap:wrap}.feature-grid{grid-template-columns:1fr}.hero__title{font-size:var(--text-2xl)}.hero__actions .btn,.action-row .btn,.action-row .btn-link{width:100%}.hero__actions,.action-row{flex-direction:column}.card{padding:var(--space-5) var(--space-4)}}
