@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:400;font-display:swap;src:url(../media/9cc5c0547f229dea-s.00y8kskkn0hyx.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:400;font-display:swap;src:url(../media/b0947914c9718a1e-s.1xjn85gt7t6qs.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:400;font-display:swap;src:url(../media/d0b60be57f16ee32-s.1xtu7gopqv2u0.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:400;font-display:swap;src:url(../media/1f9e983605289f29-s.3aak_kra40y8r.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:400;font-display:swap;src:url(../media/01e4147cff8141ee-s.p.3huc2loe0ie8a.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:500;font-display:swap;src:url(../media/9cc5c0547f229dea-s.00y8kskkn0hyx.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:500;font-display:swap;src:url(../media/b0947914c9718a1e-s.1xjn85gt7t6qs.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:500;font-display:swap;src:url(../media/d0b60be57f16ee32-s.1xtu7gopqv2u0.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:500;font-display:swap;src:url(../media/1f9e983605289f29-s.3aak_kra40y8r.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:500;font-display:swap;src:url(../media/01e4147cff8141ee-s.p.3huc2loe0ie8a.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:600;font-display:swap;src:url(../media/9cc5c0547f229dea-s.00y8kskkn0hyx.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:600;font-display:swap;src:url(../media/b0947914c9718a1e-s.1xjn85gt7t6qs.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:600;font-display:swap;src:url(../media/d0b60be57f16ee32-s.1xtu7gopqv2u0.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:600;font-display:swap;src:url(../media/1f9e983605289f29-s.3aak_kra40y8r.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:600;font-display:swap;src:url(../media/01e4147cff8141ee-s.p.3huc2loe0ie8a.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant Garamond Fallback;src:local(Times New Roman);ascent-override:95.27%;descent-override:29.59%;line-gap-override:0.0%;size-adjust:96.98%}.cormorant_garamond_c7483de-module__YUd6ZW__className{font-family:Cormorant Garamond,Cormorant Garamond Fallback;font-style:normal}.cormorant_garamond_c7483de-module__YUd6ZW__variable{--font-title-loaded:"Cormorant Garamond", "Cormorant Garamond Fallback"}
@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/a342834df7752944-s.3hd2l7bm32o7k.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/d3fe2f289711ac3f-s.1l2zhvq5eocqf.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/58c4895d0a0ef7cc-s.2vhvl9vrvk-va.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/bfc7db5c00d21bc5-s.173xwsdme27n8.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/6ab0db14f70d8ed6-s.13hnt-xgp82zk.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(../media/a343f882a40d2cc9-s.p.1sj6eobyi31rd.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a342834df7752944-s.3hd2l7bm32o7k.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/d3fe2f289711ac3f-s.1l2zhvq5eocqf.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/58c4895d0a0ef7cc-s.2vhvl9vrvk-va.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/bfc7db5c00d21bc5-s.173xwsdme27n8.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6ab0db14f70d8ed6-s.13hnt-xgp82zk.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a343f882a40d2cc9-s.p.1sj6eobyi31rd.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/a342834df7752944-s.3hd2l7bm32o7k.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/d3fe2f289711ac3f-s.1l2zhvq5eocqf.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/58c4895d0a0ef7cc-s.2vhvl9vrvk-va.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/bfc7db5c00d21bc5-s.173xwsdme27n8.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/6ab0db14f70d8ed6-s.13hnt-xgp82zk.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(../media/a343f882a40d2cc9-s.p.1sj6eobyi31rd.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(../media/a342834df7752944-s.3hd2l7bm32o7k.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(../media/d3fe2f289711ac3f-s.1l2zhvq5eocqf.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(../media/58c4895d0a0ef7cc-s.2vhvl9vrvk-va.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(../media/bfc7db5c00d21bc5-s.173xwsdme27n8.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(../media/6ab0db14f70d8ed6-s.13hnt-xgp82zk.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(../media/a343f882a40d2cc9-s.p.1sj6eobyi31rd.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope Fallback;src:local(Arial);ascent-override:103.31%;descent-override:29.07%;line-gap-override:0.0%;size-adjust:103.19%}.manrope_a3a98ff3-module__moOpvq__className{font-family:Manrope,Manrope Fallback;font-style:normal}.manrope_a3a98ff3-module__moOpvq__variable{--font-body-loaded:"Manrope", "Manrope Fallback"}
:root{--color-background:#f5f1ec;--color-background-deep:#e5ddd5;--color-surface:#fffdf9;--color-surface-muted:#ece6df;--color-ink:#252729;--color-ink-soft:#56585b;--color-line:#b7aea5;--color-accent:#5c5a5d;--color-accent-hover:#48474a;--color-on-accent:#fff;--color-focus:#23577a;--color-error:#8c2f3b;--color-error-surface:#fae9ec;--color-student:#4c6265;--color-parent:#605b72;--color-teacher:#4d6257;--color-admin:#75421e;--color-overlay:#2527291a;--color-shadow:#25272914;--color-shadow-strong:#25272924;--radius-small:.5rem;--radius-medium:.9rem;--radius-large:1.5rem;--radius-pill:999px;--shadow-card:0 1rem 3rem var(--color-shadow);--shadow-float:0 .8rem 2rem var(--color-shadow-strong);--font-title:var(--font-title-loaded), Georgia, serif;--font-body:var(--font-body-loaded), Arial, sans-serif;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-md:1.125rem;--font-size-lg:1.4rem;--font-size-xl:clamp(2rem, 5vw, 3.25rem);--font-size-display:clamp(3rem, 7.4vw, 6.9rem);--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height-tight:.98;--line-height-title:1.08;--line-height-body:1.65;--tracking-wide:.14em}*{box-sizing:border-box}html{background:var(--color-background);color:var(--color-ink);scroll-behavior:smooth}body{background:var(--color-background);min-width:20rem;min-height:100dvh;color:var(--color-ink);font-family:var(--font-body);font-size:var(--font-size-base);font-weight:var(--font-weight-regular);line-height:var(--line-height-body);margin:0}a{color:inherit;text-underline-offset:.2em;text-decoration-thickness:.07em}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}:focus-visible{outline:3px solid var(--color-focus);outline-offset:3px}h1,h2,p{margin-top:0}h1,h2{font-family:var(--font-title);font-weight:var(--font-weight-medium);line-height:var(--line-height-title)}h1{font-size:var(--font-size-xl);margin-bottom:1rem}h2{font-size:var(--font-size-lg);margin-bottom:.7rem}.eyebrow{color:var(--color-ink-soft);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);letter-spacing:var(--tracking-wide);line-height:var(--line-height-title);text-transform:uppercase;margin-bottom:.8rem}.lede{color:var(--color-ink-soft);margin-bottom:2rem}.brand{color:var(--color-ink);align-items:center;gap:.85rem;text-decoration:none;display:inline-flex}.brand__logo{width:5.25rem;height:5.25rem;box-shadow:0 .3rem 1.2rem var(--color-shadow);object-fit:cover;border-radius:50%}.brand__name,.brand__signature{display:block}.brand__name{font-family:var(--font-title);font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);line-height:var(--line-height-title)}.brand__signature{color:var(--color-ink-soft);font-size:var(--font-size-xs);letter-spacing:var(--tracking-wide);line-height:var(--line-height-body);text-transform:uppercase}.brand--compact .brand__logo{width:3.25rem;height:3.25rem}.brand--compact .brand__name{font-size:var(--font-size-md)}.button{border-radius:var(--radius-pill);cursor:pointer;min-height:3rem;font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);line-height:var(--line-height-title);text-align:center;border:1px solid #0000;justify-content:center;align-items:center;padding:.7rem 1.3rem;text-decoration:none;transition:background-color .16s,border-color .16s,color .16s,transform .16s;display:inline-flex}.button:hover:not(:disabled){transform:translateY(-1px)}.button:disabled{cursor:wait;opacity:.62}.button--primary{background:var(--color-accent);color:var(--color-on-accent)}.button--primary:hover:not(:disabled){background:var(--color-accent-hover)}.button--outline{border-color:var(--color-ink);color:var(--color-ink);background:0 0}.button--outline:hover{background:var(--color-ink);color:var(--color-on-accent)}.button--text{color:var(--color-ink);background:0 0}.button--wide{width:100%}.home{flex-direction:column;min-height:100dvh;padding:1.4rem;display:flex;overflow:hidden}.home:before,.home:after{z-index:-1;border:1px solid var(--color-line);content:"";opacity:.42;pointer-events:none;border-radius:50%;position:fixed}.home:before{width:35rem;height:35rem;top:-18rem;right:-13rem}.home:after{width:42rem;height:42rem;bottom:-25rem;left:-19rem}.home__header,.home__footer{justify-content:space-between;align-items:center;width:min(100%,86rem);margin-inline:auto;display:flex}.hero{flex:1;align-items:center;gap:3.5rem;width:min(100%,76rem);margin:4rem auto;display:grid}.hero__copy h1{-webkit-hyphens:none;hyphens:none;overflow-wrap:normal;text-wrap:balance;max-width:13ch;margin-bottom:1.5rem;font-size:clamp(2.5rem,8vw,4.25rem);line-height:.94}.hero__title-group,.hero__copy h1 em{display:inline-block}.hero__copy h1 em{font-weight:var(--font-weight-regular)}.hero__lede{max-width:40rem;color:var(--color-ink-soft);font-size:var(--font-size-md)}.hero__prompt{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);margin-bottom:1.2rem}.profile-grid{gap:.9rem;display:grid}.profile-card{--role-accent:var(--color-accent);border:1px solid var(--color-line);border-radius:var(--radius-large);background:var(--color-surface);box-shadow:var(--shadow-card);color:var(--color-ink);grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;padding:1.15rem;text-decoration:none;transition:border-color .16s,transform .16s,box-shadow .16s;display:grid}.profile-card:hover{border-color:var(--role-accent);box-shadow:var(--shadow-float);transform:translateY(-2px)}.profile-card--student{--role-accent:var(--color-student)}.profile-card--parent{--role-accent:var(--color-parent)}.profile-card--teacher{--role-accent:var(--color-teacher)}.profile-card__icon{background:var(--color-surface-muted);width:3.2rem;height:3.2rem;color:var(--role-accent);border-radius:50%;place-items:center;display:grid}.profile-card__icon svg{width:1.65rem}.profile-card__content,.profile-card__content strong,.profile-card__content span{display:block}.profile-card__content strong{font-family:var(--font-title);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);margin-bottom:.15rem}.profile-card__content span{color:var(--color-ink-soft);font-size:var(--font-size-sm);line-height:var(--line-height-body)}.profile-card__arrow{width:1.4rem;color:var(--role-accent)}.home__login-mobile{display:none}.home__footer{color:var(--color-ink-soft);font-size:var(--font-size-xs)}.home__footer span:last-child{gap:1rem;display:flex}.auth-page{min-height:100dvh;display:grid}.auth-page__aside{background:var(--color-background-deep);flex-direction:column;justify-content:space-between;padding:3rem;display:none;position:relative;overflow:hidden}.auth-page__aside:after{border:1px solid var(--color-line);content:"";border-radius:50%;width:25rem;height:25rem;position:absolute;bottom:-8rem;right:-8rem}.auth-page__aside-copy{z-index:1;max-width:25rem;font-family:var(--font-title);font-size:var(--font-size-lg);position:relative}.auth-page__aside-copy .eyebrow{font-family:var(--font-body)}.auth-page__content{place-items:center;padding:1.25rem;display:grid}.auth-card{border:1px solid var(--color-line);border-radius:var(--radius-large);background:var(--color-surface);width:min(100%,39rem);box-shadow:var(--shadow-card);padding:clamp(1.4rem,5vw,3.2rem)}.form,.form__grid{gap:1.1rem;display:grid}.form__section{border:0;border-top:1px solid var(--color-line);gap:1.1rem;min-width:0;margin:.4rem 0;padding:1.6rem 0 0;display:grid}.form__section legend{font-family:var(--font-title);font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);padding-right:.8rem}.field{gap:.4rem;min-width:0;display:grid}.field label{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold)}.field input,.field select{border:1px solid var(--color-line);border-radius:var(--radius-small);background:var(--color-surface);width:100%;min-width:0;min-height:3rem;color:var(--color-ink);padding:.72rem .85rem}.field input:hover,.field select:hover{border-color:var(--color-ink-soft)}.field input[aria-invalid=true],.field select[aria-invalid=true]{border-color:var(--color-error)}.field__hint,.field__error{font-size:var(--font-size-xs);line-height:var(--line-height-body)}.field__hint{color:var(--color-ink-soft)}.field__error{color:var(--color-error);font-weight:var(--font-weight-semibold)}.checkbox-field{font-size:var(--font-size-sm);line-height:var(--line-height-body);grid-template-columns:auto 1fr;align-items:start;gap:.7rem;display:grid}.checkbox-field input{width:1.2rem;height:1.2rem;accent-color:var(--color-accent);margin-top:.2rem}.form__footer{color:var(--color-ink-soft);font-size:var(--font-size-sm);text-align:center;margin:0}.form__footer a,.checkbox-field a{color:var(--color-ink);font-weight:var(--font-weight-semibold)}.alert{border-left:3px solid var(--color-accent);border-radius:var(--radius-small);background:var(--color-surface-muted);font-size:var(--font-size-sm);line-height:var(--line-height-body);padding:.8rem 1rem}.alert--error{border-color:var(--color-error);background:var(--color-error-surface);color:var(--color-error)}.loading-screen,.not-found{text-align:center;place-content:center;justify-items:center;min-height:100dvh;padding:1.5rem;display:grid}.loading-screen__mark{background:var(--color-accent);width:4rem;height:4rem;color:var(--color-on-accent);font-family:var(--font-title);font-size:var(--font-size-lg);border-radius:50%;place-items:center;margin-bottom:1rem;display:grid}.dashboard{--role-accent:var(--color-accent);background:var(--color-background);min-height:100dvh}.dashboard.role-student{--role-accent:var(--color-student)}.dashboard.role-parent{--role-accent:var(--color-parent)}.dashboard.role-teacher{--role-accent:var(--color-teacher)}.dashboard__header{border-bottom:1px solid var(--color-line);background:var(--color-surface);justify-content:space-between;align-items:center;padding:1rem clamp(1rem,5vw,4rem);display:flex}.dashboard__actions{align-items:center;gap:.7rem;display:flex}.role-badge{border-radius:var(--radius-pill);background:var(--role-accent);color:var(--color-on-accent);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);letter-spacing:.06em;line-height:var(--line-height-body);text-transform:uppercase;padding:.35rem .75rem}.user-menu{flex:none;position:relative}.user-menu__trigger{border:1px solid var(--role-accent);background:var(--color-surface);cursor:pointer;width:2.8rem;height:2.8rem;color:var(--role-accent);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);border-radius:50%;place-items:center;display:grid}.user-menu__trigger:focus-visible{outline:3px solid color-mix(in srgb, var(--role-accent) 35%, transparent);outline-offset:2px}.user-menu__panel{z-index:50;border:1px solid var(--color-line);border-radius:var(--radius-medium);background:var(--color-surface);width:min(20rem,100vw - 2rem);max-width:calc(100vw - 2rem);box-shadow:var(--shadow-float);gap:.5rem;padding:1rem;display:grid;position:absolute;top:calc(100% + .7rem);right:0}.user-menu__identity{min-width:0}.user-menu__name,.user-menu__email{margin:0}.user-menu__name{font-weight:var(--font-weight-bold)}.user-menu__email{max-width:100%;color:var(--color-ink-soft);font-size:var(--font-size-xs);white-space:nowrap;text-overflow:ellipsis;margin-bottom:.5rem;overflow:hidden}.user-menu__panel a,.user-menu__panel button{border-radius:var(--radius-small);color:var(--color-ink);cursor:pointer;font-size:var(--font-size-sm);text-align:left;background:0 0;border:0;padding:.65rem;text-decoration:none}.user-menu__panel a:hover,.user-menu__panel button:hover{background:var(--color-surface-muted)}.dashboard__content{width:min(100% - 2rem,70rem);margin:0 auto;padding-block:clamp(3rem,9vw,7rem)}.dashboard__content h1{font-size:var(--font-size-display);margin-bottom:.3rem}.dashboard__date{color:var(--color-ink-soft);text-transform:capitalize;margin-bottom:3rem}.preparation-card{border:1px solid var(--color-line);border-top:4px solid var(--role-accent);border-radius:var(--radius-large);background:var(--color-surface);box-shadow:var(--shadow-card);align-items:center;gap:1.5rem;padding:clamp(1.4rem,5vw,3rem);display:grid}.preparation-card__ornament{border:1px solid var(--role-accent);width:5rem;height:5rem;color:var(--role-accent);font-family:var(--font-title);font-size:var(--font-size-xl);border-radius:50%;place-items:center;display:grid}.preparation-card p:last-child{max-width:42rem;color:var(--color-ink-soft);margin-bottom:0}.legal-page{width:min(100% - 2rem,58rem);min-height:100dvh;margin:0 auto;padding-block:1.5rem 4rem}.legal-card{border:1px solid var(--color-line);border-radius:var(--radius-large);background:var(--color-surface);box-shadow:var(--shadow-card);margin-top:3rem;padding:clamp(1.5rem,6vw,4rem)}.legal-card p{max-width:44rem;color:var(--color-ink-soft)}.provisional-label{border-radius:var(--radius-pill);background:var(--color-surface-muted);color:var(--color-ink);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);letter-spacing:.06em;line-height:var(--line-height-body);text-transform:uppercase;margin-bottom:1.5rem;padding:.35rem .7rem;display:inline-flex}.not-found{gap:.5rem}.not-found .brand{margin-bottom:2rem}@media (min-width:42rem){.home{padding:2rem 3rem}.form__grid{grid-template-columns:1fr 1fr}.form__grid--postal{grid-template-columns:minmax(8rem,.7fr) 1.3fr}.preparation-card{grid-template-columns:auto 1fr}}@media (min-width:62rem){.hero{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr)}.hero__copy h1{font-size:clamp(3.5rem,4.7vw,5rem)}.auth-page{grid-template-columns:minmax(21rem,.78fr) minmax(36rem,1.22fr)}.auth-page__aside{display:flex}.auth-page__content{padding:3rem}}@media (max-width:36rem){.home__header .brand__name,.home__header .brand__signature{display:none}.home__header .brand__logo{width:4rem;height:4rem}.home__login{display:none}.hero{gap:2rem;margin-block:2.4rem}.hero__lede{font-size:var(--font-size-base)}.home__login-mobile{font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);text-align:center;margin-top:1.4rem;display:block}.home__footer{align-items:flex-start;gap:.7rem}.home__footer span:last-child{text-align:right;flex-direction:column;gap:.1rem}.dashboard__header .brand__name,.dashboard__header .brand__signature{display:none}.role-badge{padding-inline:.55rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--color-ink-soft)}.space{--role-accent:var(--color-accent);background:var(--color-background);min-height:100dvh}.space.role-student{--role-accent:var(--color-student)}.space.role-parent{--role-accent:var(--color-parent)}.space.role-teacher{--role-accent:var(--color-teacher)}.space.role-admin{--role-accent:var(--color-admin)}.space__sidebar{z-index:20;border-right:1px solid var(--color-line);background:var(--color-surface);flex-direction:column;align-items:flex-start;gap:1.5rem;width:16.5rem;padding:1.5rem;display:none;position:fixed;inset:0 auto 0 0}.space__sidebar .role-badge{background:var(--role-accent)}.space-nav{gap:.35rem;width:100%;display:grid}.space-nav a,.bottom-nav a{border-radius:var(--radius-medium);color:var(--color-ink-soft);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);align-items:center;gap:.75rem;padding:.7rem .85rem;text-decoration:none;display:flex}.space-nav a:hover,.space-nav a.is-active,.bottom-nav a.is-active{background:var(--color-surface-muted);color:var(--role-accent)}.space-nav a span{text-align:center;width:1.3rem;font-size:1.15rem}.space__aside-note{color:var(--color-ink-soft);font-size:var(--font-size-xs);margin-top:auto}.space__main{min-width:0}.space__topbar{z-index:40;border-bottom:1px solid var(--color-line);background:color-mix(in srgb, var(--color-surface) 94%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:space-between;align-items:center;gap:.75rem;min-height:4.75rem;padding:.7rem 1rem;display:flex;position:sticky;top:0}.space__mobile-brand .brand__name,.space__mobile-brand .brand__signature{display:none}.space__mobile-brand .brand__logo{width:2.75rem;height:2.75rem}.space__mobile-badge{background:var(--role-accent);margin-left:auto}.space__topbar>.user-menu{margin-left:auto}.child-switcher{flex:1;gap:.1rem;margin-left:auto;display:grid}.child-switcher label{color:var(--color-ink-soft);font-size:.65rem;font-weight:var(--font-weight-bold);letter-spacing:.05em;text-transform:uppercase}.child-switcher select,.toolbar select,.toolbar input{border:1px solid var(--color-line);border-radius:var(--radius-small);background:var(--color-surface);min-height:2.7rem;color:var(--color-ink);padding:.45rem .7rem}.space__content{width:min(100% - 2rem,76rem);margin-inline:auto;padding-block:clamp(2rem,6vw,4.5rem) 7rem}.bottom-nav{z-index:30;border-top:1px solid var(--color-line);min-height:4.5rem;padding:.35rem max(.25rem, env(safe-area-inset-right)) max(.35rem, env(safe-area-inset-bottom)) max(.25rem, env(safe-area-inset-left));background:var(--color-surface);box-shadow:0 -.5rem 2rem var(--color-shadow);justify-content:space-around;align-items:stretch;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav a{text-align:center;flex-direction:column;flex:1;gap:.05rem;min-width:0;padding:.35rem .15rem;font-size:.62rem}.bottom-nav a span{font-size:1.15rem;line-height:1.2}.page-heading{justify-content:space-between;align-items:flex-end;gap:1.5rem;margin-bottom:2rem;display:flex}.page-heading h1{margin-bottom:.4rem;font-size:clamp(2.35rem,7vw,4.2rem)}.page-heading p:last-child{max-width:42rem;color:var(--color-ink-soft);margin-bottom:0}.section-block{margin-top:2.5rem}.section-title{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.section-title h2{margin:0}.section-title a{color:var(--role-accent);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold)}.state-card,.detail-card,.form-card,.secret-card,.info-card{border:1px solid var(--color-line);border-radius:var(--radius-large);background:var(--color-surface);box-shadow:var(--shadow-card);padding:clamp(1.25rem,4vw,2.2rem)}.state-card{text-align:center;place-content:center;justify-items:center;min-height:12rem;display:grid}.state-card p{max-width:32rem;color:var(--color-ink-soft);margin-bottom:1rem}.state-card--error{border-color:var(--color-error)}.state-card__mark{border:1px solid var(--role-accent);width:3.5rem;height:3.5rem;color:var(--role-accent);font-family:var(--font-title);border-radius:50%;place-items:center;margin-bottom:1rem;font-size:1.7rem;display:grid}.spinner{border:3px solid var(--color-surface-muted);border-top-color:var(--role-accent);border-radius:50%;width:2rem;height:2rem;margin-bottom:.8rem;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.quick-grid,.stat-grid,.child-grid,.person-grid,.progress-grid{gap:1rem;display:grid}.quick-grid{margin-top:2rem}.quick-grid a{border:1px solid var(--color-line);border-radius:var(--radius-large);background:var(--color-surface);grid-template-columns:auto 1fr;gap:0 .9rem;padding:1.25rem;text-decoration:none;display:grid}.quick-grid a>span{color:var(--role-accent);grid-row:1/3;font-size:1.6rem}.quick-grid a small{color:var(--color-ink-soft)}.stat-grid{grid-template-columns:repeat(3,1fr);margin-bottom:2.5rem}.stat-grid article{border-top:3px solid var(--role-accent);border-radius:var(--radius-medium);background:var(--color-surface);box-shadow:var(--shadow-card);padding:1.2rem;display:grid}.stat-grid strong{font-family:var(--font-title);font-size:2.4rem;line-height:1}.stat-grid span{color:var(--color-ink-soft);font-size:var(--font-size-sm)}.child-card,.person-card{border:1px solid var(--color-line);border-radius:var(--radius-large);background:var(--color-surface);color:var(--color-ink);grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;padding:1.2rem;text-decoration:none;display:grid}.child-card:hover,.person-card--link:hover{border-color:var(--role-accent);box-shadow:var(--shadow-float)}.child-card__avatar,.person-card>span{background:var(--color-surface-muted);width:3.4rem;height:3.4rem;color:var(--role-accent);font-weight:var(--font-weight-bold);border-radius:50%;place-items:center;display:grid}.child-card h2,.person-card h2,.person-card p{margin:0}.child-card p:last-child,.person-card p{color:var(--color-ink-soft);font-size:var(--font-size-sm)}.lesson-list{gap:.8rem;display:grid}.lesson-card{border:1px solid var(--color-line);border-left:4px solid var(--role-accent);border-radius:var(--radius-medium);background:var(--color-surface);grid-template-columns:minmax(10rem,.75fr) 1.25fr auto;align-items:center;gap:1.3rem;padding:1.15rem;display:grid}.lesson-card__date{display:grid}.lesson-card__date strong{font-family:var(--font-title);font-size:1.8rem}.lesson-card__date span,.lesson-card p{color:var(--color-ink-soft);font-size:var(--font-size-sm);margin:0}.lesson-card h2{margin:.3rem 0 .15rem}.tabs{gap:.4rem;margin-bottom:1.5rem;padding-bottom:.2rem;display:flex;overflow-x:auto}.tabs button{border:1px solid var(--color-line);border-radius:var(--radius-pill);background:var(--color-surface);cursor:pointer;white-space:nowrap;min-height:2.7rem;padding:.55rem 1rem}.tabs button.is-active{border-color:var(--role-accent);background:var(--role-accent);color:var(--color-on-accent)}.status{border-radius:var(--radius-pill);background:var(--color-surface-muted);color:var(--color-ink);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);padding:.2rem .6rem;display:inline-flex}.status--confirmed,.status--active{color:#28543a;background:#e0eee6}.status--cancelled,.status--revoked{background:var(--color-error-surface);color:var(--color-error)}.status--completed,.status--claimed{color:#414b74;background:#e5e8f3}.back-link{color:var(--role-accent);font-weight:var(--font-weight-bold);margin-bottom:1.5rem;display:inline-block}.detail-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:0;margin:0 0 1.5rem;display:grid}.detail-list div{border-bottom:1px solid var(--color-line);gap:.15rem;padding:.9rem;display:grid}.detail-list dt{color:var(--color-ink-soft);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);text-transform:uppercase}.detail-list dd{overflow-wrap:anywhere;min-width:0;margin:0}.toolbar{align-items:center;gap:.7rem;margin-bottom:1.5rem;display:flex}.toolbar label{font-size:var(--font-size-sm);font-weight:var(--font-weight-bold)}.toolbar--search input{width:min(100%,24rem)}.progress-card{border:1px solid var(--color-line);border-radius:var(--radius-large);background:var(--color-surface);box-shadow:var(--shadow-card);padding:1.4rem}.progress-card header{justify-content:space-between;gap:1.2rem;display:flex}.progress-card header h2{font-size:2.5rem}.progress-card header>p{max-width:25rem;color:var(--color-ink-soft)}.competency-list{gap:1rem;margin-block:1.2rem;display:grid}.competency-list>div>div:first-child{font-size:var(--font-size-sm);justify-content:space-between;gap:1rem;display:flex}.progress-bar{border-radius:var(--radius-pill);background:var(--color-surface-muted);height:.65rem;overflow:hidden}.progress-bar span{border-radius:inherit;background:var(--role-accent);height:100%;display:block}.progress-card details{border-top:1px solid var(--color-line);padding-top:1rem}.progress-card summary{cursor:pointer;font-weight:var(--font-weight-bold)}.history-list{gap:.65rem;margin-top:1rem;display:grid}.history-list>div{border-left:2px solid var(--role-accent);padding-left:.8rem}.history-list span{color:var(--color-ink-soft);font-size:var(--font-size-xs);display:block}.history-list p{margin-bottom:0}.field textarea{resize:vertical;border:1px solid var(--color-line);border-radius:var(--radius-small);background:var(--color-surface);width:100%;min-height:6.5rem;color:var(--color-ink);font:inherit;padding:.72rem .85rem}.field textarea[aria-invalid=true]{border-color:var(--color-error)}.form-card{max-width:50rem;margin-bottom:2rem}.form-actions{justify-content:flex-end;align-items:center;gap:.7rem;display:flex}.inline-form{grid-template-columns:1fr auto;align-items:end;gap:.8rem;display:grid}.info-card{border-left:4px solid var(--role-accent);margin-bottom:2rem}.secret-card{gap:1rem;max-width:48rem;display:grid}.secret-card--plain{box-shadow:none;border:0;padding:0}.secret-row{border:1px solid var(--color-line);border-radius:var(--radius-medium);background:var(--color-background);justify-content:space-between;align-items:center;gap:1rem;padding:1rem;display:flex}.secret-row div{min-width:0;display:grid}.secret-row span{color:var(--color-ink-soft);font-size:var(--font-size-xs)}.secret-row strong{overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.05rem}.button--danger{border-color:var(--color-error);background:var(--color-error);color:#fff}.button--danger:hover:not(:disabled){background:#6f202d}.danger-zone{border-top:1px solid var(--color-line);gap:1rem;padding-top:1.5rem;display:grid}.danger-zone>div{border-left:3px solid var(--color-line);padding-left:1rem}.danger-zone>div:last-child{border-color:var(--color-error)}.modal-backdrop{z-index:100;background:#14141485;place-items:center;padding:1rem;display:grid;position:fixed;inset:0;overflow-y:auto}.modal{border-radius:var(--radius-large);background:var(--color-surface);width:min(100%,46rem);max-height:calc(100dvh - 2rem);box-shadow:var(--shadow-float);padding:clamp(1.25rem,4vw,2rem);overflow-y:auto}.modal__header{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.icon-button{border:1px solid var(--color-line);cursor:pointer;background:0 0;border-radius:50%;width:2.6rem;height:2.6rem;font-size:1.5rem}.modal-actions-secondary{border-top:1px solid var(--color-line);justify-content:space-between;gap:.7rem;margin-top:1rem;padding-top:1rem;display:flex}.week-controls{justify-content:center;gap:.6rem;margin-bottom:1.2rem;display:flex}.week-grid{grid-template-columns:repeat(7,minmax(9rem,1fr));gap:.5rem;padding-bottom:.7rem;display:grid;overflow-x:auto}.week-grid>section{border:1px solid var(--color-line);border-radius:var(--radius-medium);background:var(--color-surface);min-height:15rem;padding:.65rem}.week-grid>section.is-today{border-top:4px solid var(--role-accent)}.week-grid h2{font-family:var(--font-body);font-size:var(--font-size-sm);text-transform:capitalize}.week-grid__empty{color:var(--color-ink-soft);font-size:var(--font-size-xs)}.week-lesson{border:0;border-left:3px solid var(--role-accent);border-radius:var(--radius-small);background:var(--color-surface-muted);width:100%;color:var(--color-ink);cursor:pointer;text-align:left;gap:.1rem;margin-bottom:.5rem;padding:.6rem;display:grid}.week-lesson span,.week-lesson small{color:var(--color-ink-soft);font-size:.7rem}.status-border--cancelled{border-color:var(--color-error);opacity:.72}.status-border--completed{border-color:var(--color-parent)}.table-wrap{border:1px solid var(--color-line);border-radius:var(--radius-medium);overflow-x:auto}table{border-collapse:collapse;background:var(--color-surface);width:100%;font-size:var(--font-size-sm)}th,td{border-bottom:1px solid var(--color-line);text-align:left;padding:.75rem}th{color:var(--color-ink-soft);font-size:var(--font-size-xs);text-transform:uppercase}@media (min-width:48rem){.quick-grid{grid-template-columns:repeat(3,1fr)}.child-grid,.person-grid,.progress-grid,.danger-zone{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:64rem){.space__sidebar{display:flex}.space__main{margin-left:16.5rem}.space__topbar{padding-inline:clamp(1.5rem,4vw,3rem)}.space__mobile-brand,.space__mobile-badge,.bottom-nav{display:none}.child-switcher{flex:initial;width:18rem;margin-left:0}.space__content{padding-bottom:4rem}}@media (max-width:42rem){.page-heading{flex-direction:column;align-items:stretch}.page-heading .button{align-self:flex-start}.stat-grid,.lesson-card{grid-template-columns:1fr}.lesson-card .button{justify-self:start}.detail-list{grid-template-columns:1fr}.progress-card header{flex-direction:column}.inline-form{grid-template-columns:1fr}.inline-form .button{justify-self:start}.secret-row{flex-direction:column;align-items:stretch}.secret-row .button{align-self:start}.form-actions,.modal-actions-secondary{flex-direction:column-reverse;align-items:stretch}.week-controls{justify-content:space-between}.week-controls .button{min-height:2.6rem;padding-inline:.7rem;font-size:.72rem}}.space-nav a{position:relative}.space-nav .nav-label{flex:1}.nav-count,.tab-count{border-radius:var(--radius-pill);background:var(--color-error);color:#fff;min-width:1.35rem;min-height:1.35rem;font-family:var(--font-body);font-size:.67rem;font-weight:var(--font-weight-bold);place-items:center;padding-inline:.3rem;line-height:1;display:inline-grid}.tabs .tab-count{background:var(--color-surface-muted);color:var(--color-ink);margin-left:.25rem}.tabs button.is-active .tab-count{color:#fff;background:#ffffff40}.resource-grid,.homework-list,.compact-list{gap:1rem;display:grid}.resource-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,19rem),1fr))}.content-card{border:1px solid var(--color-line);border-radius:var(--radius-large);background:var(--color-surface);min-width:0;box-shadow:var(--shadow-card);padding:clamp(1rem,3vw,1.5rem)}.content-card h2,.content-card h3{overflow-wrap:anywhere;margin-block:.25rem .65rem}.content-card__header{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.content-card__header .eyebrow{margin-bottom:.25rem}.file-download{justify-items:start;gap:.25rem;margin-block:.8rem;display:grid}.file-download small{max-width:100%;color:var(--color-ink-soft);overflow-wrap:anywhere}.file-download .field__error{max-width:30rem}.file-uploader{gap:.8rem;min-width:0;display:grid}.drop-zone{border:2px dashed var(--color-line);border-radius:var(--radius-medium);background:var(--color-background);padding:1rem;transition:border-color .15s,background-color .15s}.drop-zone.is-dragging{border-color:var(--role-accent);background:var(--color-surface-muted)}.drop-zone label{cursor:pointer;text-align:center;display:grid}.drop-zone label span,.drop-zone label small{color:var(--color-ink-soft)}.drop-zone input{width:100%;margin-top:.75rem}.selected-file{align-items:center;gap:.7rem;margin:0;display:flex}.selected-file>span:first-child{border-radius:var(--radius-small);background:var(--color-surface-muted);min-width:2.8rem;height:2.8rem;font-size:var(--font-size-xs);place-items:center;font-weight:700;display:grid}.selected-file>span:last-child{min-width:0;display:grid}.selected-file strong{overflow-wrap:anywhere}.selected-file small{color:var(--color-ink-soft)}.upload-progress{grid-template-columns:1fr auto;align-items:center;gap:.7rem;display:grid}.upload-progress progress{width:100%;accent-color:var(--role-accent)}.file-uploader__actions{justify-content:flex-start;display:flex}.content-card__toggle{width:100%;color:var(--color-ink);cursor:pointer;text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:1rem;padding:0;display:flex}.content-card__toggle>span:first-child{gap:.35rem;display:grid}.content-card__toggle strong{font-family:var(--font-title);font-size:var(--font-size-lg)}.content-card__toggle small{color:var(--color-ink-soft)}.homework-card__body{border-top:1px solid var(--color-line);gap:.8rem;margin-top:1rem;padding-top:1rem;display:grid}.message-copy{white-space:pre-wrap;overflow-wrap:anywhere}.submission-box,.correction-box{border-left:3px solid var(--role-accent);border-radius:var(--radius-small);background:var(--color-background);padding:1rem}.submission-box h3{margin-top:0}.status--todo{color:#674d00;background:#fff1cc}.status--submitted{color:#713c13;background:#f5dfca}.status--corrected{color:#28543a;background:#e0eee6}.correction-form{border-top:1px solid var(--color-line);margin-top:1rem;padding-top:1rem}.student-content{scroll-margin-top:6rem}.student-content>h2{font-size:clamp(1.8rem,4vw,2.6rem)}.messaging-layout{gap:1rem;display:grid}.conversation-list{align-content:start;gap:.45rem;display:grid}.conversation-list>button{border:1px solid var(--color-line);border-radius:var(--radius-medium);background:var(--color-surface);color:var(--color-ink);cursor:pointer;text-align:left;gap:.2rem;padding:.9rem;display:grid}.conversation-list>button.is-active{border-color:var(--role-accent);box-shadow:inset 3px 0 var(--role-accent)}.conversation-list__top{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.conversation-list__preview{color:var(--color-ink-soft);font-size:var(--font-size-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.conversation-list time,.conversation-list small{color:var(--color-ink-soft);font-size:var(--font-size-xs)}.message-thread{border:1px solid var(--color-line);border-radius:var(--radius-large);background:var(--color-surface);min-width:0;box-shadow:var(--shadow-card);overflow:hidden}.message-thread>header{border-bottom:1px solid var(--color-line);padding:1rem}.message-thread h2{font-size:var(--font-size-md);margin:0}.message-history{flex-direction:column;gap:.65rem;min-height:20rem;max-height:34rem;padding:1rem;display:flex;overflow-y:auto}.message-bubble{background:var(--color-surface-muted);border-radius:1rem 1rem 1rem .25rem;align-self:flex-start;max-width:min(85%,34rem);padding:.65rem .85rem}.message-bubble.is-sent{background:color-mix(in srgb, var(--role-accent) 16%, var(--color-surface));border-radius:1rem 1rem .25rem;align-self:flex-end}.message-bubble p{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.message-bubble time{color:var(--color-ink-soft);font-size:var(--font-size-xs);text-align:right;margin-top:.2rem;display:block}.message-composer{border-top:1px solid var(--color-line);gap:.7rem;padding:1rem;display:grid}.message-composer textarea{min-height:5rem}.message-composer .button{justify-self:end}.compact-list a{border-bottom:1px solid var(--color-line);justify-content:space-between;gap:1rem;padding:.65rem;text-decoration:none;display:flex}.compact-list span{color:var(--color-ink-soft);font-size:var(--font-size-sm)}.unread-callout{border-radius:var(--radius-pill);background:var(--color-surface);align-items:center;gap:.6rem;margin-top:1rem;padding:.5rem 1rem;text-decoration:none;display:inline-flex}.unread-callout strong{color:var(--role-accent);font-family:var(--font-title);font-size:1.5rem}@media (min-width:54rem){.messaging-layout{grid-template-columns:minmax(15rem,.72fr) minmax(0,1.5fr)}}@media (max-width:63.99rem){.bottom-nav{justify-content:flex-start;overflow-x:auto}.bottom-nav a{min-width:4.7rem}.bottom-nav .nav-count{position:absolute;top:.15rem;left:calc(50% + .35rem)}.bottom-nav a{position:relative}}@media (max-width:30rem){.content-card__header,.compact-list a{flex-direction:column;align-items:flex-start}.messaging-layout{width:100%}.message-bubble{max-width:92%}}.home__header-actions{font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);align-items:center;gap:1.2rem;display:flex}.home-search{border:1px solid var(--color-line);border-radius:var(--radius-large);background:color-mix(in srgb, var(--color-surface) 90%, transparent);width:100%;box-shadow:var(--shadow-card);gap:.75rem;margin-bottom:1.5rem;padding:1rem;display:grid}.home-search .button{align-self:end;width:100%}.hero__prompt--profiles{margin-top:1.8rem}.marketplace-page{background:var(--color-background);min-height:100dvh}.marketplace-header{z-index:20;border-bottom:1px solid var(--color-line);background:color-mix(in srgb, var(--color-surface) 96%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:space-between;align-items:center;gap:1rem;padding:.8rem clamp(1rem,4vw,3.5rem);display:flex;position:sticky;top:0}.marketplace-header nav{font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);align-items:center;gap:1rem;display:flex}.marketplace-main{width:min(100% - 2rem,78rem);margin-inline:auto;padding-block:clamp(2rem,5vw,4rem)}.marketplace-title{max-width:52rem;margin-bottom:2rem}.marketplace-title h1{font-size:clamp(2.6rem,6vw,5rem)}.marketplace-title>p:last-child{max-width:42rem;color:var(--color-ink-soft)}.marketplace-filters{border:1px solid var(--color-line);border-radius:var(--radius-large);background:var(--color-surface);box-shadow:var(--shadow-card);gap:1rem;margin-bottom:1.5rem;padding:clamp(1rem,3vw,1.6rem);display:grid}.marketplace-filters__actions{align-items:flex-end;gap:.4rem;display:flex}.result-summary{color:var(--color-ink-soft);margin-block:1.8rem 1rem}.teacher-grid{gap:1rem;display:grid}.teacher-card{border:1px solid var(--color-line);border-radius:var(--radius-large);background:var(--color-surface);color:var(--color-ink);box-shadow:var(--shadow-card);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:1rem;padding:clamp(1rem,3vw,1.4rem);text-decoration:none;transition:border-color .16s,transform .16s;display:grid}.teacher-card:hover{border-color:var(--color-accent);transform:translateY(-2px)}.teacher-card__avatar{background:var(--color-background-deep);width:4rem;height:4rem;color:var(--color-accent);font-family:var(--font-title);font-size:1.5rem;font-weight:var(--font-weight-semibold);border-radius:50%;place-items:center;display:grid}.teacher-card h2{margin-bottom:.25rem}.teacher-card p{color:var(--color-ink-soft);font-size:var(--font-size-sm);margin:0}.teacher-card__subjects{font-weight:var(--font-weight-bold);color:var(--color-ink)!important}.teacher-card__meta{font-size:var(--font-size-sm);flex-wrap:wrap;gap:.25rem 1rem;margin-top:.65rem;display:flex}.teacher-card__meta span{color:var(--color-ink-soft)}.pagination{justify-content:center;align-items:center;gap:1rem;margin-top:2rem;display:flex}.pagination button{border:1px solid var(--color-line);border-radius:var(--radius-pill);background:var(--color-surface);cursor:pointer;min-height:2.75rem;padding:.5rem 1rem}.pagination button:disabled{cursor:not-allowed;opacity:.5}.teacher-detail-page{max-width:76rem}.teacher-hero{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:1.3rem;margin-bottom:2.5rem;display:grid}.teacher-hero__avatar{width:6rem;height:6rem;font-size:2.1rem}.teacher-hero h1,.teacher-hero p{margin-bottom:.3rem}.teacher-hero__cta{grid-column:1/-1}.teacher-detail-grid{gap:1.2rem;display:grid}.teacher-detail-grid>aside{align-content:start;gap:1rem;display:grid}.teacher-detail-grid .detail-card{margin-bottom:1rem}.detail-card h3{font-family:var(--font-body);font-size:var(--font-size-base);margin-top:1.5rem}.user-copy{white-space:pre-wrap;overflow-wrap:anywhere}.subject-list,.review-list{gap:1rem;display:grid}.subject-list .content-card p,.review-list .content-card p{margin-bottom:.4rem}.stars{color:#765600;letter-spacing:.08em;font-size:1.25rem}.offering-list{display:grid}.offering-list>div{border-bottom:1px solid var(--color-line);justify-content:space-between;align-items:center;gap:1rem;padding-block:.8rem;display:flex}.offering-list span,.offering-list small{display:block}.offering-list small{color:var(--color-ink-soft)}.availability-public{gap:.6rem;margin:0;padding:0;list-style:none;display:grid}.availability-public li{border-bottom:1px solid var(--color-line);grid-template-columns:1fr auto;padding-block:.6rem;display:grid}.availability-public small{color:var(--color-ink-soft);grid-column:1/-1}.contact-panel{border:1px solid var(--color-line);border-radius:var(--radius-large);background:var(--color-surface);max-width:52rem;box-shadow:var(--shadow-card);padding:clamp(1.2rem,4vw,2rem)}.review-notice{max-width:52rem;margin-top:2rem}.review-form .button{justify-self:start}.stars-field{border:0;margin:0;padding:0}.stars-field legend{font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);margin-bottom:.4rem}.stars-field div{display:flex}.stars-field button{color:#765600;cursor:pointer;background:0 0;border:0;width:2.7rem;height:2.7rem;font-size:1.8rem}.request-list{gap:1rem;display:grid}.request-card{border:1px solid var(--color-line);border-left:4px solid var(--role-accent);border-radius:var(--radius-large);background:var(--color-surface);box-shadow:var(--shadow-card);padding:clamp(1rem,3vw,1.5rem)}.request-card header,.request-card footer{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.request-card header h2{margin:0}.request-card footer{border-top:1px solid var(--color-line);align-items:center;padding-top:1rem}.request-card footer a{color:var(--role-accent);font-weight:var(--font-weight-bold)}.status--pending{color:#674d00;background:#fff1cc}.status--accepted{color:#28543a;background:#e0eee6}.status--rejected{background:var(--color-error-surface);color:var(--color-error)}.visibility-card{border:1px solid var(--color-line);border-left:4px solid var(--role-accent);border-radius:var(--radius-large);background:var(--color-surface);box-shadow:var(--shadow-card);gap:1.2rem;margin-bottom:2rem;padding:clamp(1.2rem,4vw,2rem);display:grid}.visibility-card h2{margin-bottom:.4rem}.switch-field{cursor:pointer;grid-template-columns:auto 1fr;align-items:center;gap:.7rem;display:grid}.switch-field input{opacity:0;pointer-events:none;position:absolute}.switch-field>span{border:1px solid var(--color-line);border-radius:var(--radius-pill);background:var(--color-surface-muted);width:3.2rem;height:1.8rem;transition:background-color .16s;position:relative}.switch-field>span:after{background:var(--color-ink-soft);content:"";border-radius:50%;width:1.3rem;height:1.3rem;transition:transform .16s;position:absolute;top:.2rem;left:.2rem}.switch-field input:checked+span{background:var(--role-accent)}.switch-field input:checked+span:after{background:#fff;transform:translate(1.35rem)}.switch-field input:focus-visible+span{outline:3px solid var(--color-focus);outline-offset:3px}.switch-field input:disabled+span{opacity:.5}.teacher-profile-form{gap:1rem;display:grid}.teacher-profile-form .form-card{width:100%;max-width:none;margin:0}.subject-editor{gap:.8rem;display:grid}.subject-editor>div{border-bottom:1px solid var(--color-line);padding:.7rem}.subject-editor .field{margin-top:.6rem}.level-checks{border:0;flex-wrap:wrap;gap:.4rem .8rem;margin:.7rem 0 0;padding:0;display:flex}.level-checks legend{color:var(--color-ink-soft);font-size:var(--font-size-xs)}.offering-editor,.availability-editor{gap:.8rem;display:grid}.offering-row,.availability-row,.availability-new{border:1px solid var(--color-line);border-radius:var(--radius-medium);background:var(--color-background);align-items:end;gap:.8rem;padding:1rem;display:grid}.offering-row .button,.availability-row .button{min-height:2.6rem}.availability-new{max-width:none}.format-checks{border:0;flex-wrap:wrap;gap:.4rem .8rem;margin:0;padding:0;display:flex}.format-checks legend{font-size:var(--font-size-sm);font-weight:var(--font-weight-bold)}.format-checks .checkbox-field{align-items:center}.sticky-actions{z-index:5;pointer-events:none;justify-content:flex-end;display:flex;position:sticky;bottom:1rem}.sticky-actions .button{box-shadow:var(--shadow-float);pointer-events:auto}.linked-teacher-list{gap:1rem;display:grid}.linked-teacher-card{align-items:start}.linked-teacher-card details{border-top:1px solid var(--color-line);grid-column:1/-1;width:100%;padding-top:.7rem}.linked-teacher-card summary{cursor:pointer;font-weight:var(--font-weight-bold)}.linked-teacher-card .review-form{margin-top:1rem}@media (min-width:40rem){.home-search{grid-template-columns:repeat(2,minmax(13rem,1fr))}.home-search .button{grid-column:1/-1}}@media (min-width:48rem){.home-search{grid-template-columns:repeat(2,minmax(13rem,1fr)) auto}.home-search .button{grid-column:auto;width:auto}}@media (min-width:42rem){.teacher-hero{grid-template-columns:auto minmax(0,1fr) auto}.teacher-hero__cta{grid-column:auto}.marketplace-filters{grid-template-columns:repeat(2,minmax(13rem,1fr))}.teacher-detail-grid{grid-template-columns:minmax(0,1.45fr) minmax(18rem,.75fr)}.request-list{grid-template-columns:repeat(2,minmax(0,1fr))}.offering-row{grid-template-columns:1.2fr 1fr .7fr auto}.availability-new,.availability-row{grid-template-columns:.8fr .6fr .6fr 1.5fr auto}.subject-editor{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:68rem){.marketplace-filters{grid-template-columns:repeat(4,minmax(13rem,1fr))}.teacher-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:41.99rem){.home__header-actions>a:first-child,.marketplace-header .brand__signature,.marketplace-header nav>a:first-child{display:none}.marketplace-header .brand__logo{width:2.75rem;height:2.75rem}.marketplace-header .button{min-height:2.6rem;padding-inline:.9rem}.teacher-card{align-items:start}.teacher-card__avatar{width:3.3rem;height:3.3rem}.teacher-card__meta{display:grid}.teacher-hero__avatar{width:4.5rem;height:4.5rem}.pagination{font-size:var(--font-size-xs);justify-content:space-between;gap:.35rem}.pagination button{padding-inline:.7rem}.request-card header,.request-card footer{flex-direction:column;align-items:stretch}.linked-teacher-card{grid-template-columns:auto 1fr}.linked-teacher-card>small{grid-column:1/-1}}.admin-stat-grid{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr))}.admin-role-grid{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.8rem;display:grid}.admin-role-grid article{border:1px solid var(--color-line);border-radius:var(--radius-medium);background:var(--color-surface);padding:1rem;display:grid}.admin-role-grid strong{color:var(--role-accent);font-family:var(--font-title);font-size:2rem}.admin-role-grid span{color:var(--color-ink-soft)}.admin-shortcut{justify-content:space-between;align-items:center;gap:1.5rem;margin-top:2rem;display:flex}.admin-shortcut h2,.admin-shortcut p:last-child{margin-bottom:0}.admin-card-list{gap:1rem;display:grid}.admin-card{border:1px solid var(--color-line);border-left:4px solid var(--role-accent);border-radius:var(--radius-large);background:var(--color-surface);box-shadow:var(--shadow-card);gap:1.2rem;padding:clamp(1rem,3vw,1.5rem);display:grid}.admin-card>header,.admin-card>footer{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.admin-card>header h2{margin:.35rem 0 .2rem}.admin-card>header p,.admin-card>footer{color:var(--color-ink-soft);font-size:var(--font-size-sm);margin-bottom:0}.admin-card>footer{border-top:1px solid var(--color-line);align-items:center;padding-top:1rem}.admin-card>footer>a{color:var(--role-accent);font-weight:var(--font-weight-bold)}.admin-details{grid-template-columns:repeat(2,minmax(0,1fr));margin:0;display:grid}.admin-details>div{border-bottom:1px solid var(--color-line);padding:.75rem}.admin-details dt{color:var(--color-ink-soft);font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);text-transform:uppercase}.admin-details dd{overflow-wrap:anywhere;margin:0}.admin-actions{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;display:flex}.admin-filters{border:1px solid var(--color-line);border-radius:var(--radius-large);background:var(--color-surface);box-shadow:var(--shadow-card);align-items:end;gap:.8rem;margin-bottom:1.5rem;padding:1rem;display:grid}.admin-filters .field{margin:0}.admin-filters input,.admin-filters select{border:1px solid var(--color-line);border-radius:var(--radius-small);background:var(--color-surface);width:100%;min-height:2.8rem;color:var(--color-ink);padding:.55rem .7rem}.admin-subline{overflow-wrap:anywhere;max-width:18rem;color:var(--color-ink-soft);display:block}.button--small{min-height:2.5rem;font-size:var(--font-size-sm);padding:.45rem .75rem}.admin-review .user-copy{margin:0}.admin-modal-form{gap:1rem;display:grid}.admin-modal-form>p,.admin-modal-form .field small{color:var(--color-ink-soft)}.admin-timeline{gap:.8rem;display:grid}.admin-timeline article{border-left:4px solid var(--role-accent);border-radius:0 var(--radius-medium) var(--radius-medium) 0;background:var(--color-surface);box-shadow:var(--shadow-card);padding:1rem 1.2rem}.admin-timeline header{justify-content:space-between;gap:1rem;display:flex}.admin-timeline time,.admin-timeline p{color:var(--color-ink-soft);font-size:var(--font-size-sm)}.admin-timeline p:last-child{margin-bottom:0}.admin-timeline code{overflow-wrap:anywhere}.status--approved{color:#28543a;background:#e0eee6}.status--suspended{background:var(--color-error-surface);color:var(--color-error)}@media (min-width:48rem){.admin-filters{grid-template-columns:minmax(14rem,2fr) 1fr 1fr auto}}@media (max-width:41.99rem){.admin-shortcut,.admin-card>header,.admin-card>footer{flex-direction:column;align-items:stretch}.admin-details{grid-template-columns:1fr}.admin-actions{justify-content:stretch}.admin-actions .button{flex:1}.admin-timeline header{flex-direction:column;gap:.2rem}}
