:root{--bg:#f0f3f8;--surface:#fff;--surface-muted:#f9f9f9;--surface-subtle:#f9f9fb;--surface-tint:#f5f5ff;--text:#222;--text-strong:#2b2b2b;--text-body:#484848;--text-muted:#686868;--text-subtle:#797979;--text-placeholder:#bcbcbc;--border:#ebebeb;--border-strong:#dbdbdb;--border-input:#d8dde6;--accent:#6464dc;--accent-strong:#6c4cff;--accent-soft:#f5f5ff;--accent-hover:#f4f6fa;--coral:#f75961;--teal:#2dadba;--shadow-card:0 1px 2px 0 #002e3926;--shadow-float:0 2px 8px #2026321f;--radius-sm:8px;--radius-md:16px;--font-sans:"Nunito Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-heading:var(--font-sans);--font-body:var(--font-sans);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:32px;--type-title-large-size:22px;--type-title-large-line:28px;--type-title-medium-size:16px;--type-title-medium-line:24px;--type-title-small-size:14px;--type-title-small-line:20px;--type-body-large-size:16px;--type-body-large-line:24px;--type-body-medium-size:14px;--type-body-medium-line:20px;--type-body-small-size:12px;--type-body-small-line:16px;--type-label-large-size:14px;--type-label-large-line:20px;--type-label-medium-size:12px;--type-label-medium-line:16px;--type-label-small-size:11px;--type-label-small-line:16px;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-size-caption:var(--type-body-small-size);--font-size-meta:var(--type-body-medium-size);--font-size-body:var(--type-body-large-size);--font-size-title-sm:var(--type-title-medium-size);--font-size-title-md:var(--type-title-medium-size);--line-height-tight:calc(var(--type-label-large-line) / var(--type-label-large-size));--line-height-meta:calc(var(--type-body-medium-line) / var(--type-body-medium-size));--line-height-body:calc(var(--type-body-large-line) / var(--type-body-large-size));--paragraph-gap:var(--space-3);--section-gap:var(--space-4);--title-body-gap:var(--space-2);--content-padding-x:var(--space-5)}.prose{font-family:var(--font-sans);font-size:var(--type-body-large-size);line-height:var(--type-body-large-line);font-weight:var(--font-weight-regular);color:var(--text)}.prose p{white-space:pre-wrap;margin:0}.prose p+p,.prose>*+*{margin-top:var(--paragraph-gap)}.text-caption{font-family:var(--font-sans);font-size:var(--type-body-small-size);line-height:var(--type-body-small-line);font-weight:var(--font-weight-regular);color:var(--text-placeholder)}.text-meta{font-family:var(--font-sans);font-size:var(--type-label-large-size);line-height:var(--type-label-large-line);font-weight:var(--font-weight-medium);color:var(--text-body)}.text-secondary{font-family:var(--font-sans);font-size:var(--type-body-medium-size);line-height:var(--type-body-medium-line);font-weight:var(--font-weight-regular);color:var(--text-muted)}.text-section-title{font-family:var(--font-heading);font-size:var(--type-title-medium-size);line-height:var(--type-title-medium-line);font-weight:var(--font-weight-medium);color:var(--text-strong);letter-spacing:.01em;margin:0}.text-subsection-title{font-family:var(--font-heading);font-size:var(--type-title-small-size);line-height:var(--type-title-small-line);font-weight:var(--font-weight-medium);color:var(--text);margin:0}.text-action{font:inherit;font-family:var(--font-sans);font-size:var(--type-label-large-size);line-height:var(--type-label-large-line);font-weight:var(--font-weight-medium);color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0}.text-eyebrow{margin:0 0 var(--space-1);font-family:var(--font-heading);font-size:var(--type-label-large-size);line-height:var(--type-label-large-line);font-weight:var(--font-weight-bold);color:var(--accent)}.text-overline{font-family:var(--font-sans);font-size:var(--type-label-small-size);line-height:var(--type-label-small-line);font-weight:var(--font-weight-medium);letter-spacing:.06em;text-transform:uppercase;color:var(--text-subtle);margin:0}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}body{font-family:var(--font-sans);font-size:var(--type-body-large-size);line-height:var(--type-body-large-line);font-weight:var(--font-weight-regular);color:var(--text-body);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}#root{min-height:100dvh}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{font-family:var(--font-heading);color:var(--text-strong)}button,input,select{font:inherit}.boot-state{min-height:100dvh;color:var(--text-muted);place-items:center;display:grid}.boot-state--error{color:var(--coral)}.lang-toggle{border:1px solid var(--border-input);border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow-float);display:inline-flex;overflow:hidden}.lang-toggle button{color:#424b5d;font-family:var(--font-heading);cursor:pointer;background:0 0;border:0;padding:8px 14px;font-size:13px;font-weight:600}.lang-toggle button:not(.active):hover{background:var(--accent-hover)}.lang-toggle button.active{background:var(--accent-strong);color:#fff}.year-picker{color:var(--text-muted);align-items:center;gap:8px;font-size:14px;font-weight:400;display:flex}.year-picker select{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-body);font:inherit;padding:8px 10px}.year-picker--single{color:var(--text-body);font-weight:600}.bottom-nav{z-index:20;padding:8px 12px calc(8px + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--border);grid-template-columns:1fr 1fr;gap:8px;display:grid;position:fixed;bottom:0;left:0;right:0}.bottom-nav a{border-radius:var(--radius-sm);color:var(--text-muted);font-family:var(--font-heading);flex-direction:column;align-items:center;gap:4px;padding:10px 8px;font-size:12px;font-weight:600;text-decoration:none;display:flex}.bottom-nav a.active{color:var(--accent);background:var(--accent-soft)}.bottom-nav__icon{flex-shrink:0;width:22px;height:22px}.app-shell{background:var(--bg);min-height:100dvh}.app-header{z-index:10;background:var(--surface);border-bottom:1px solid var(--border);padding:16px 16px 12px;position:sticky;top:0}.app-header__main{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.app-header h1{font-family:var(--font-heading);font-size:var(--type-title-large-size);line-height:var(--type-title-large-line);font-weight:var(--font-weight-medium);color:var(--text-strong);margin:0}.app-header p{margin:var(--space-1) 0 0;color:var(--text-muted);font-size:var(--type-body-medium-size);line-height:var(--type-body-medium-line);font-weight:var(--font-weight-regular)}.app-header .year-picker{margin-top:12px}.app-main{padding:16px 16px calc(88px + env(safe-area-inset-bottom));max-width:600px;margin:0 auto}.attachment-gallery{margin-top:12px}.attachment-gallery__carousel{touch-action:pan-y;transition:height .35s;position:relative;overflow:hidden}.attachment-gallery__track{will-change:transform;align-items:flex-start;width:100%;transition:transform .5s;display:flex}.attachment-gallery__slide{flex:0 0 100%;width:100%;line-height:0}.attachment-gallery__slide img,.attachment-gallery__slide video{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%;height:auto;display:block}.attachment-gallery__arrow{z-index:2;border:.5px solid var(--border);background:var(--surface);width:32px;height:32px;color:var(--text-body);cursor:pointer;border-radius:50%;place-items:center;font-size:22px;line-height:1;display:grid;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 0 2px #002e3926}.attachment-gallery__arrow--prev{left:12px}.attachment-gallery__arrow--next{right:12px}.attachment-gallery__arrow:disabled{opacity:.35;cursor:default}.attachment-gallery__dots{z-index:3;pointer-events:none;justify-content:center;align-items:center;gap:6px;padding:0;display:flex;position:absolute;bottom:10px;left:0;right:0}.attachment-gallery__dots button{cursor:pointer;pointer-events:auto;background:#ffffffb3;border:0;border-radius:50%;width:6px;height:6px;padding:0;box-shadow:0 0 0 1px #0000001f}.attachment-gallery__dots button.is-active{background:var(--coral);box-shadow:none}.attachment-gallery__files{gap:8px;margin:10px 20px 16px;padding:0;list-style:none;display:grid}.attachment-gallery__files a{border-radius:var(--radius-sm);background:var(--surface-subtle);color:var(--accent);padding:10px 12px;font-size:14px;font-weight:600;text-decoration:none;display:block}.post-card{background:var(--surface);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:20px 0 0;overflow:hidden}.post-card:not(:has(.attachment-gallery)){padding-bottom:20px}.post-card__header{gap:var(--space-3);padding:0 var(--content-padding-x) var(--space-2);align-items:center;display:flex}.post-card__header-text{flex-direction:column;justify-content:center;gap:1px;min-height:40px;display:flex}.post-card__avatar{background:var(--accent);color:#fff;width:40px;height:40px;font-family:var(--font-heading);border:2px solid #fff;border-radius:50%;flex-shrink:0;place-items:center;font-size:13px;font-weight:700;display:grid}.post-card__meta{margin:0}.post-card__body{padding:0 var(--content-padding-x)}.post-card__toggle{margin-top:var(--space-2)}.page{gap:var(--space-2);display:grid}.page-state{margin:var(--space-6) 0;text-align:center;color:var(--text-muted)}.page-state--error{color:var(--coral)}.page-meta{font-size:var(--type-body-medium-size);line-height:var(--type-body-medium-line);color:var(--text-muted);font-family:var(--font-heading);text-align:center;margin:0}.search-field input{box-sizing:border-box;border:1px solid var(--border-strong);border-radius:var(--radius-sm);width:100%;padding:var(--space-3) var(--space-3);font:inherit;background:var(--surface);color:var(--text-body)}.search-field input::placeholder{color:var(--text-muted)}.post-feed,.report-list{gap:var(--space-2);display:grid}.back-link{align-items:center;gap:var(--space-1);color:var(--accent);font-weight:var(--font-weight-medium);font-size:var(--type-label-large-size);line-height:var(--type-label-large-line);text-decoration:none;display:inline-flex}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.achievement-badge{letter-spacing:.02em;border-radius:4px;justify-content:center;align-items:center;min-width:34px;padding:4px 8px;font-size:11px;font-weight:600;display:inline-flex}.achievement-badge--ee{color:#2e7d32;background:#e8f5e9}.achievement-badge--me{background:var(--accent);color:#fff}.achievement-badge--ae{color:#f57f17;background:#fff8e1}.achievement-badge--nme,.achievement-badge--ie{color:var(--coral);background:#fbe9e7}.achievement-badge--legend.achievement-badge--me{background:var(--accent-soft);color:var(--accent)}.report-view{gap:var(--space-2);display:grid}.card{background:var(--surface);border-radius:var(--radius-md);padding:var(--content-padding-x);box-shadow:var(--shadow-card)}.report-cover h2{margin:0 0 var(--space-2);font-family:var(--font-heading);font-size:var(--type-title-large-size);line-height:var(--type-title-large-line);font-weight:var(--font-weight-medium);color:var(--text-strong)}.report-cover dl{gap:var(--space-3);margin:var(--space-4) 0;display:grid}.report-cover dd{margin:var(--space-1) 0 0}.card>p:not(.text-overline):not(.text-secondary):not(.text-eyebrow):not(.text-meta),.report-snippet>p,.criteria-list__description,.report-grid__item p,.report-field--prose>p,.unit-block>.text-secondary,.subject-block>.text-secondary{font-size:var(--type-body-large-size);line-height:var(--type-body-large-line);color:var(--text)}.report-snippet{gap:var(--title-body-gap);display:grid}.report-snippet+.report-snippet,.report-snippet+.report-letter__closing{margin-top:var(--section-gap)}.report-snippet--meta{gap:var(--space-1)}.report-letter__closing{margin:0}.card>.text-section-title+:is(p,.prose,.report-field,.criteria-list,.unit-block,.subject-block,.report-grid){margin-top:var(--title-body-gap)}.card>.text-meta+p,.card>.text-secondary+p{margin-top:0}.report-grid,.report-grid__item,.unit-block,.subject-block{gap:var(--space-3);display:grid}.unit-block+.unit-block{margin-top:var(--space-1);padding-top:var(--space-4);border-top:1px solid var(--border)}.subject-block+.subject-block{margin-top:var(--space-2);padding-top:var(--space-5);border-top:1px solid var(--border)}.report-field{gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:var(--surface-muted);display:grid}.report-field .text-overline{margin:0}.report-field__list{font-size:var(--type-body-large-size);line-height:var(--type-body-large-line);color:var(--text);margin:0;padding-left:1.25em}.report-field__list li+li{margin-top:var(--space-1)}.report-field--prose{background:0 0;padding-block:0}.report-field--prose>p{font-size:var(--type-body-large-size);line-height:var(--type-body-large-line);color:var(--text);margin:0}.report-field--prose>.text-secondary+p{margin-top:var(--space-2)}.report-field--prose>.text-overline+p{margin-top:0}.report-grid__item+.report-grid__item{padding-top:var(--space-3);border-top:1px solid var(--border)}.criteria-list{grid-template-columns:auto max-content minmax(0,1fr);align-items:start;column-gap:0;display:grid}.criteria-list__row{display:contents}.criteria-list__badge,.criteria-list__label,.criteria-list__description{padding-top:var(--space-3);padding-bottom:var(--space-3);border-top:1px solid var(--border)}.criteria-list__badge:first-child,.criteria-list__label:nth-child(2),.criteria-list__description:nth-child(3){border-top:0;padding-top:0}.criteria-list__badge{padding-right:var(--space-4);text-align:center;line-height:0}.criteria-list__badge .achievement-badge{vertical-align:top;line-height:1}.criteria-list__label{padding-right:var(--space-4);white-space:nowrap;font-family:var(--font-sans);font-size:var(--type-title-small-size);line-height:var(--type-title-small-line);font-weight:var(--font-weight-medium);color:var(--text-body)}.criteria-list__description{font-size:var(--type-body-large-size);line-height:var(--type-body-large-line);color:var(--text);margin:0;padding-right:0}.unit-block__head,.subject-block__head{gap:var(--space-3);justify-content:space-between;align-items:flex-start;display:flex}.standards-list{border-collapse:collapse;border-spacing:0;width:100%}.standards-list__row+.standards-list__row .standards-list__name,.standards-list__row+.standards-list__row .standards-list__badge{padding-top:var(--space-2)}.standards-list__name,.standards-list__badge{vertical-align:middle}.standards-list__name{width:100%;padding-right:var(--space-4);font-size:var(--type-body-medium-size);line-height:var(--type-body-medium-line);color:var(--text)}.standards-list__badge{text-align:center;white-space:nowrap;width:52px;padding:0;line-height:0}.standards-list__badge .achievement-badge{vertical-align:middle;line-height:1}.report-pdf-link,.report-list-item{justify-content:space-between;align-items:center;gap:var(--space-3);color:inherit;text-decoration:none;display:flex}.report-pdf-link{padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent);font-size:var(--type-label-large-size);line-height:var(--type-label-large-line);font-weight:var(--font-weight-medium);justify-content:center}.report-list-item{background:var(--surface);border-radius:var(--radius-md);padding:var(--content-padding-x);box-shadow:var(--shadow-card)}.report-list-item h3{margin:0}.report-list-item .text-caption{margin-top:var(--space-1)}.report-list-item span[aria-hidden]{color:var(--text-placeholder);font-size:24px}.report-collapsible__toggle{justify-content:space-between;align-items:center;gap:var(--space-3);text-align:left;cursor:pointer;width:100%;color:inherit;font:inherit;background:0 0;border:0;margin:0;padding:0;display:flex}.report-collapsible__toggle h3{margin:0}.report-collapsible .report-grid{margin-top:var(--space-3)}
