@import "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600&family=Inter:wght@400;500;600;700&display=swap";:root{--ink:#0a1628;--ink-soft:#14233a;--ink-line:#f4eee324;--paper:#f4eee3;--canvas:#fbfaf6;--paper-line:#0a162814;--signal:#19c;--signal-ink:#042a3d;--signal-soft:#d3ecf7;--accent-red:#d43f3f;--ember:#e8875a;--ember-soft:#fbe4d4;--fg-on-ink:#f4eee3;--fg-on-ink-mute:#f4eee3ad;--fg-on-ink-faint:#f4eee361;--fg-on-paper:#0a1628;--fg-on-paper-mute:#4b5a6b;--fg-on-paper-faint:#8090a3;--data-1:#19c;--data-2:#3b82f6;--data-3:#e8875a;--data-4:#a78bfa;--data-5:#475569;--focus-ring:0 0 0 3px #1199cc59;--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-display:"Fraunces", "Georgia", "Times New Roman", serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--text-display:clamp(48px, 5.2vw, 72px);--lh-display:1.04;--text-h1:clamp(34px, 3.2vw, 44px);--lh-h1:1.12;--text-h2:clamp(26px, 2.2vw, 32px);--lh-h2:1.2;--text-h3:22px;--lh-h3:1.3;--text-body:17px;--lh-body:1.6;--text-small:15px;--lh-small:1.5;--text-micro:13px;--lh-micro:1.4;--tracking-tight:-.02em;--tracking-body:0;--tracking-micro:.08em;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-8:48px;--s-10:64px;--s-12:96px;--s-16:128px;--r-sm:4px;--r-md:8px;--r-lg:14px;--r-xl:24px;--r-pill:999px;--shadow-1:0 1px 2px #0a16280f;--shadow-2:0 18px 40px -24px #0a162847;--shadow-ink:0 24px 60px -32px #0009;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in:cubic-bezier(.64, 0, .78, 0);--dur-fast:.12s;--dur-base:.24s;--dur-slow:.42s;--page-max:1280px;--page-pad:clamp(24px, 6vw, 120px);--grid-cols:12;--grid-gap:32px}*,:before,:after{box-sizing:border-box}html{font-family:var(--font-sans);font-feature-settings:"ss01", "cv11";color:var(--fg-on-paper);background:var(--paper);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}body{font-size:var(--text-body);line-height:var(--lh-body);margin:0}.bg-ink{background:var(--ink);color:var(--fg-on-ink)}.bg-paper{background:var(--paper);color:var(--fg-on-paper)}.bg-canvas{background:var(--canvas);color:var(--fg-on-paper)}.t-display,h1.display{font-family:var(--font-display);font-weight:500;font-size:var(--text-display);line-height:var(--lh-display);letter-spacing:var(--tracking-tight);font-variation-settings:"opsz" 72, "SOFT" 30;text-wrap:pretty;margin:0}.t-h1,h1{font-family:var(--font-display);font-weight:500;font-size:var(--text-h1);line-height:var(--lh-h1);letter-spacing:var(--tracking-tight);font-variation-settings:"opsz" 48, "SOFT" 30;text-wrap:balance;margin:0}.t-h2,h2{font-family:var(--font-display);font-weight:500;font-size:var(--text-h2);line-height:var(--lh-h2);letter-spacing:-.01em;font-variation-settings:"opsz" 36;text-wrap:balance;margin:0}.t-h3,h3{font-family:var(--font-sans);font-weight:600;font-size:var(--text-h3);line-height:var(--lh-h3);margin:0}.t-body,p{font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--lh-body);text-wrap:pretty;margin:0}.t-small{font-size:var(--text-small);line-height:var(--lh-small)}.t-micro,.eyebrow{font-family:var(--font-sans);font-size:var(--text-micro);line-height:var(--lh-micro);letter-spacing:var(--tracking-micro);text-transform:uppercase;font-weight:500}.t-num{font-family:var(--font-sans);font-feature-settings:"tnum", "cv11";font-variant-numeric:tabular-nums}.t-quote{font-family:var(--font-display);text-wrap:pretty;font-size:clamp(22px,2.4vw,30px);font-style:italic;font-weight:400;line-height:1.35}.btn{align-items:center;gap:var(--s-2);border-radius:var(--r-md);background:var(--signal);color:var(--signal-ink);font-family:var(--font-sans);cursor:pointer;transition:transform var(--dur-fast) var(--ease-out), filter var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out);border:1px solid #0000;padding:14px 22px;font-size:16px;font-weight:600;line-height:1;text-decoration:none;display:inline-flex}.btn--ghost{color:inherit;opacity:.9;background:0 0;border:1px solid}.btn--ghost:hover{opacity:1}.btn--inverse{background:var(--paper);color:var(--ink)}.chip{border-radius:var(--r-pill);background:var(--signal-soft);color:var(--signal-ink);letter-spacing:.02em;align-items:center;gap:6px;padding:6px 10px;font-size:13px;font-weight:500;display:inline-flex}.card{background:var(--canvas);border:1px solid var(--paper-line);border-radius:var(--r-lg);padding:var(--s-6);transition:box-shadow var(--dur-base) var(--ease-out), transform var(--dur-base) var(--ease-out)}.card--ink{background:var(--ink-soft);border-color:var(--ink-line);color:var(--fg-on-ink)}.divider{background:var(--paper-line);height:1px;margin:var(--s-8) 0;border:0}.divider--ink{background:var(--ink-line)}a.link{color:inherit;text-underline-offset:3px;transition:opacity var(--dur-fast) var(--ease-out);text-decoration:underline;text-decoration-thickness:1px}a.link:hover{opacity:.7}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{background:var(--canvas);color:var(--fg-on-paper)}body{font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--lh-body);background:var(--canvas);color:var(--fg-on-paper)}a{color:inherit;text-decoration:none}.layout{min-height:100vh;display:flex}.sidebar{background:var(--ink);width:256px;color:var(--fg-on-ink);flex-direction:column;flex-shrink:0;display:flex}.sidebar-logo{padding:var(--s-5) var(--s-5);border-bottom:1px solid var(--ink-line);gap:var(--s-1);flex-direction:column;display:flex}.sidebar-logo .logo-wordmark{font-family:var(--font-display);color:var(--fg-on-ink);letter-spacing:-.02em;font-variation-settings:"opsz" 24, "SOFT" 30;font-size:20px;font-weight:500;line-height:1.1}.sidebar-logo .logo-sub{font-size:var(--text-micro);letter-spacing:var(--tracking-micro);text-transform:uppercase;color:var(--fg-on-ink-mute)}.sidebar-nav{padding:var(--s-3) 0;flex:1}.nav-item{align-items:center;gap:var(--s-3);padding:10px var(--s-5);font-size:var(--text-small);cursor:pointer;color:var(--fg-on-ink-mute);transition:background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);border-left:2px solid #0000;font-weight:500;display:flex}.nav-item svg{flex-shrink:0}.nav-item:hover{background:var(--ink-soft);color:var(--fg-on-ink)}.nav-item.router-link-active{background:var(--ink-soft);color:var(--fg-on-ink);border-left-color:var(--signal)}.sidebar-footer{padding:var(--s-4) var(--s-5);border-top:1px solid var(--ink-line)}.sidebar-footer .user-name{font-size:var(--text-small);color:var(--fg-on-ink);margin-bottom:var(--s-1);font-weight:500}.sidebar-footer .user-role{font-size:var(--text-micro);letter-spacing:var(--tracking-micro);text-transform:uppercase;color:var(--fg-on-ink-faint);margin-bottom:var(--s-3)}.main-content{background:var(--canvas);flex:1;overflow-y:auto}.page-header{background:var(--canvas);padding:var(--s-5) var(--s-6);border-bottom:1px solid var(--paper-line);justify-content:space-between;align-items:center;display:flex}.page-header h2{font-family:var(--font-display);font-weight:500;font-size:var(--text-h2);line-height:var(--lh-h2);letter-spacing:-.01em;font-variation-settings:"opsz" 36;color:var(--fg-on-paper)}.page-body{padding:var(--s-6)}.card{background:var(--canvas);border-radius:var(--r-lg);border:1px solid var(--paper-line);margin-bottom:var(--s-4);transition:box-shadow var(--dur-base) var(--ease-out);overflow:hidden}.card:hover{box-shadow:var(--shadow-2)}.card-header{padding:var(--s-4) var(--s-5);border-bottom:1px solid var(--paper-line);justify-content:space-between;align-items:center;display:flex}.card-header h3{font-family:var(--font-sans);font-size:var(--text-small);color:var(--fg-on-paper);font-weight:600}.card-body{padding:var(--s-5)}.card-grid{gap:var(--s-4);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));display:grid}.stat-strip{background:var(--ink);padding:var(--s-5) var(--s-6)}.stat-grid{gap:var(--s-4);margin-bottom:var(--s-5);grid-template-columns:repeat(auto-fill,minmax(160px,1fr));display:grid}.stat-card{background:var(--ink-soft);border-radius:var(--r-lg);padding:var(--s-5);border:1px solid var(--ink-line)}.stat-card .label{font-size:var(--text-micro);letter-spacing:var(--tracking-micro);text-transform:uppercase;color:var(--fg-on-ink-mute)}.stat-card .value{font-family:var(--font-display);color:var(--fg-on-ink);font-variation-settings:"opsz" 36;margin:var(--s-1) 0;font-size:clamp(28px,3vw,40px);font-weight:500;line-height:1.1}.stat-card .sub{font-size:var(--text-micro);color:var(--fg-on-ink-faint)}.btn{align-items:center;gap:var(--s-2);border-radius:var(--r-md);font-family:var(--font-sans);font-size:var(--text-small);cursor:pointer;transition:transform var(--dur-fast) var(--ease-out), filter var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);border:1px solid #0000;padding:10px 18px;font-weight:600;line-height:1;text-decoration:none;display:inline-flex}.btn:hover{filter:brightness(1.04)}.btn:active{transform:scale(.98)}.btn:focus-visible{box-shadow:var(--focus-ring);outline:none}.btn-primary{background:var(--signal);color:var(--signal-ink);border-color:var(--signal)}.btn-secondary{color:var(--fg-on-paper);border-color:var(--paper-line);background:0 0}.btn-secondary:hover{background:var(--paper);filter:none}.bg-ink .btn-secondary,.sidebar .btn-secondary{color:var(--fg-on-ink-mute);border-color:var(--ink-line)}.bg-ink .btn-secondary:hover,.sidebar .btn-secondary:hover{background:var(--ink-soft);color:var(--fg-on-ink);filter:none}.btn-danger{color:var(--accent-red);border-color:var(--accent-red);background:0 0}.btn-danger:hover{filter:none;background:#d43f3f0f}.btn-success{color:#15803d;background:0 0;border-color:#86efac}.btn-sm{font-size:var(--text-micro);padding:6px 12px}.form-group{margin-bottom:var(--s-4)}.form-label{font-size:var(--text-small);color:var(--fg-on-paper-mute);margin-bottom:var(--s-2);font-weight:500;display:block}.form-input,.form-select{width:100%;padding:9px var(--s-3);border:1px solid var(--paper-line);border-radius:var(--r-md);font-size:var(--text-small);font-family:var(--font-sans);background:var(--canvas);color:var(--fg-on-paper);transition:border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);outline:none}.form-input:focus,.form-select:focus{border-color:var(--signal);box-shadow:var(--focus-ring)}.form-row{gap:var(--s-4);grid-template-columns:1fr 1fr;display:grid}.progress-wrap{background:var(--paper-line);border-radius:var(--r-pill);height:6px;margin:var(--s-2) 0;overflow:hidden}.progress-fill{border-radius:var(--r-pill);background:var(--signal);height:100%;transition:width .5s var(--ease-out)}.badge{padding:3px var(--s-3);border-radius:var(--r-pill);font-size:var(--text-micro);letter-spacing:.02em;font-weight:500;display:inline-block}.badge-blue{background:var(--signal-soft);color:var(--signal-ink)}.badge-green{color:#15803d;background:#dcfce7}.badge-yellow{background:var(--ember-soft);color:#92400e}.badge-red{color:var(--accent-red);background:#d43f3f1a}.badge-gray{background:var(--paper);color:var(--fg-on-paper-mute)}.table{border-collapse:collapse;width:100%;font-size:var(--text-small)}.table th{text-align:left;padding:var(--s-3) var(--s-3);font-size:var(--text-micro);letter-spacing:var(--tracking-micro);text-transform:uppercase;color:var(--fg-on-paper-mute);background:var(--paper);border-bottom:1px solid var(--paper-line);font-weight:600}.table td{padding:var(--s-3);border-bottom:1px solid var(--paper-line);vertical-align:middle;color:var(--fg-on-paper)}.table tr:hover td{background:var(--paper)}.alert{padding:var(--s-3) var(--s-4);border-radius:var(--r-md);font-size:var(--text-small);margin-bottom:var(--s-4)}.alert-error{color:var(--accent-red);background:#d43f3f14;border:1px solid #d43f3f33}.alert-success{color:#15803d;background:#dcfce7;border:1px solid #86efac}.alert-info{background:var(--signal-soft);color:var(--signal-ink);border:1px solid #1199cc4d}.login-page{background:var(--ink);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--ink-soft);border-radius:var(--r-xl);padding:var(--s-8) var(--s-6);border:1px solid var(--ink-line);width:100%;max-width:400px;box-shadow:var(--shadow-ink)}.login-card h1{font-family:var(--font-display);font-weight:500;font-size:var(--text-h2);font-variation-settings:"opsz" 36, "SOFT" 30;color:var(--fg-on-ink);margin-bottom:var(--s-1)}.login-card>p{font-size:var(--text-small);color:var(--fg-on-ink-mute);margin-bottom:var(--s-5)}.login-card .form-label{color:var(--fg-on-ink-mute)}.login-card .form-input{border-color:var(--ink-line);color:var(--fg-on-ink);background:#f4eee30f}.login-card .form-input::placeholder{color:var(--fg-on-ink-faint)}.login-card .form-input:focus{border-color:var(--signal);box-shadow:var(--focus-ring)}.survey-page{background:var(--paper);flex-direction:column;min-height:100vh;display:flex}.survey-header{background:var(--ink);color:var(--fg-on-ink);padding:var(--s-5) var(--s-6);border-bottom:1px solid var(--ink-line)}.survey-header h1{font-family:var(--font-display);font-weight:500;font-size:var(--text-h2);font-variation-settings:"opsz" 36, "SOFT" 30;color:var(--fg-on-ink);margin-bottom:var(--s-1)}.survey-header p{font-size:var(--text-small);color:var(--fg-on-ink-mute)}.survey-body{max-width:720px;padding:var(--s-6) var(--s-5);flex:1;width:100%;margin:0 auto}.question-card{background:var(--canvas);border-radius:var(--r-lg);padding:var(--s-5);margin-bottom:var(--s-4);border:1px solid var(--paper-line);transition:border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out)}.question-card:hover{box-shadow:var(--shadow-1)}.question-text{font-size:var(--text-body);color:var(--fg-on-paper);margin-bottom:var(--s-4);font-weight:500;line-height:var(--lh-body)}.theme-title{font-family:var(--font-display);font-weight:500;font-size:var(--text-h3);font-variation-settings:"opsz" 24;color:var(--fg-on-paper);margin:var(--s-6) 0 var(--s-4);padding-bottom:var(--s-2);border-bottom:1px solid var(--paper-line)}.likert-scale{gap:var(--s-2);flex-wrap:wrap;display:flex}.likert-option{flex:1;min-width:60px}.likert-option input{display:none}.likert-option label{align-items:center;gap:var(--s-1);padding:var(--s-3) var(--s-2);border:1.5px solid var(--paper-line);border-radius:var(--r-md);cursor:pointer;font-size:var(--text-micro);text-align:center;color:var(--fg-on-paper-mute);transition:border-color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);flex-direction:column;display:flex}.likert-option label:hover{border-color:var(--signal);background:var(--signal-soft);color:var(--signal-ink)}.likert-option input:checked+label{border-color:var(--signal);background:var(--signal-soft);color:var(--signal-ink);font-weight:600}.likert-num{font-family:var(--font-sans);font-variant-numeric:tabular-nums;color:var(--fg-on-paper);font-size:18px;font-weight:600;line-height:1}.likert-option input:checked+label .likert-num{color:var(--signal-ink)}.yes-no{gap:var(--s-3);display:flex}.yes-no input{display:none}.yes-no label{padding:var(--s-3);border:1.5px solid var(--paper-line);border-radius:var(--r-md);text-align:center;cursor:pointer;font-weight:500;font-size:var(--text-small);color:var(--fg-on-paper-mute);transition:border-color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);flex:1}.yes-no label:hover,.yes-no input:checked+label{border-color:var(--signal);background:var(--signal-soft);color:var(--signal-ink)}.open-textarea{width:100%;min-height:88px;padding:var(--s-3) var(--s-3);border:1px solid var(--paper-line);border-radius:var(--r-md);font-size:var(--text-small);font-family:var(--font-sans);color:var(--fg-on-paper);background:var(--canvas);resize:vertical;transition:border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);outline:none}.open-textarea:focus{border-color:var(--signal);box-shadow:var(--focus-ring)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important}}@media (width<=768px){.sidebar{display:none}.form-row{grid-template-columns:1fr}.page-body{padding:var(--s-4)}.stat-grid{grid-template-columns:1fr 1fr}}
