@font-face{font-family:Montserrat Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/montserrat-cyrillic-ext-wght-normal-CO5hGrJv.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Montserrat Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/montserrat-cyrillic-wght-normal-EAA9jha_.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Montserrat Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/montserrat-vietnamese-wght-normal-k7S-YeeD.woff2)format("woff2-variations");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:Montserrat Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/montserrat-latin-ext-wght-normal-BsZE-iaG.woff2)format("woff2-variations");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:Montserrat Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/montserrat-latin-wght-normal-l_AIctKy.woff2)format("woff2-variations");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:Roca Two;src:url(/fonts/roca-two-bold.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Roca Two;src:url(/fonts/roca-two-regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{--color-bg:#eff9ff;--color-surface:#fff;--color-sky-100:#e2f2fd;--color-sky-200:#cdeafd;--color-sky-300:#a9d8f7;--color-sky-500:#2c8bd6;--color-sky-600:#1f74b8;--color-sky-700:#175d95;--color-accent:#ffc94a;--color-ink:#12374f;--color-ink-soft:#4a687f;--color-border:#d4e7f5;--color-primary:var(--color-sky-600);--color-primary-hover:var(--color-sky-700);--color-primary-contrast:#fff;--color-success-bg:#e6f6ec;--color-success-text:#1d6b3a;--color-warning-bg:#fff6dc;--color-warning-text:#7a5600;--color-danger-bg:#fdecec;--color-danger-border:#f3b9b9;--color-danger-text:#a23131;--font-heading:"Roca Two", "Montserrat Variable", system-ui, sans-serif;--font-body:"Montserrat Variable", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--radius:16px;--radius-sm:10px;--shadow-sm:0 1px 2px #12374f0f;--shadow-md:0 10px 30px #1f74b81f}*,:before,:after{box-sizing:border-box}html{scrollbar-gutter:stable;-webkit-text-size-adjust:100%}body{min-height:100vh;font-family:var(--font-body);color:var(--color-ink);background:var(--color-bg);-webkit-font-smoothing:antialiased;flex-direction:column;margin:0;font-size:1rem;line-height:1.55;display:flex}h1,h2,h3{font-family:var(--font-heading);margin:0 0 .6em;font-weight:700;line-height:1.2}h1{font-size:clamp(1.7rem,3.5vw,2.4rem)}h2{font-size:1.35rem}h3{font-size:1.1rem}p{margin:0 0 1em}a{color:var(--color-primary)}.muted{color:var(--color-ink-soft)}.small{font-size:.875rem}.container{width:100%;max-width:72rem;margin:0 auto;padding:0 1.25rem}.site-header{z-index:20;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--color-border);background:#ffffffeb;position:sticky;top:0}.site-header__inner{align-items:center;gap:1.5rem;min-height:4.25rem;display:flex}.wordmark{font-family:var(--font-heading);color:var(--color-ink);white-space:nowrap;font-size:1.45rem;font-weight:700;text-decoration:none}.site-nav{flex:1;align-items:center;gap:.25rem;display:flex}body>main,body>.shell{flex:1 0 auto}.site-nav a,.account-nav a:not(.btn){color:var(--color-ink);white-space:nowrap;border-radius:999px;padding:.45rem .8rem;font-weight:500;text-decoration:none}.site-nav a:hover,.account-nav a:not(.btn):hover{background:var(--color-sky-100)}.site-nav a.active,.account-nav a.active{background:var(--color-sky-200)}.account-nav{align-items:center;gap:.25rem;display:flex}.site-header .menu-toggle{margin-left:auto;display:none}@media (width<=860px){.site-header .menu-toggle{display:inline-flex}.site-header__inner{flex-wrap:wrap;gap:.5rem;padding-top:.6rem;padding-bottom:.6rem}.site-nav,.account-nav{flex-direction:column;flex-basis:100%;align-items:stretch;display:none}.site-header.open .site-nav,.site-header.open .account-nav{display:flex}.site-nav a,.account-nav a,.account-nav button{border-radius:var(--radius-sm);text-align:left}}.shell{grid-template-columns:15rem 1fr;gap:2rem;padding-top:2rem;padding-bottom:4rem;display:grid}.sidebar{align-self:start;position:sticky;top:6rem}.sidebar__title{text-transform:uppercase;letter-spacing:.08em;color:var(--color-ink-soft);margin:0 0 .5rem .8rem;font-size:.75rem;font-weight:600}.sidebar nav{flex-direction:column;gap:.15rem;display:flex}.sidebar nav a{border-radius:var(--radius-sm);color:var(--color-ink);padding:.5rem .8rem;font-weight:500;text-decoration:none}.sidebar nav a:hover{background:var(--color-sky-100)}.sidebar nav a.active{background:var(--color-surface);box-shadow:var(--shadow-sm);color:var(--color-primary)}.shell__main{min-width:0}@media (width>=106rem){.shell--wide{grid-template-columns:15rem minmax(0,1fr) 15rem;max-width:106rem}}@media (width<=860px){.shell{grid-template-columns:minmax(0,1fr);gap:1rem;padding-top:1rem}.sidebar{min-width:0;position:static}.sidebar__title{display:none}.sidebar nav{flex-direction:row;padding-bottom:.25rem;overflow-x:auto}.sidebar nav a{white-space:nowrap}}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.25rem;display:flex}.page-header h1{margin:0}.back-link{margin-bottom:.75rem;font-size:.9rem;text-decoration:none;display:inline-block}.site-footer{background:var(--color-surface);border-top:1px solid var(--color-border);color:var(--color-ink-soft);flex-shrink:0;margin-top:4rem;padding:2.5rem 0;font-size:.9rem}.site-footer__inner{flex-wrap:wrap;justify-content:space-between;gap:1rem;display:flex}.btn{min-height:2.75rem;font:inherit;white-space:nowrap;cursor:pointer;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:.4rem;padding:0 1.15rem;font-weight:600;text-decoration:none;transition:background .15s,border-color .15s;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:var(--color-primary-contrast)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);border-color:var(--color-border);color:var(--color-ink)}.btn-secondary:hover:not(:disabled){border-color:var(--color-sky-300);background:var(--color-sky-100)}.btn-danger{background:var(--color-surface);border-color:var(--color-danger-border);color:var(--color-danger-text)}.btn-danger:hover:not(:disabled){background:var(--color-danger-bg)}.btn-ghost{color:var(--color-ink);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--color-sky-100)}.btn-sm{min-height:2.1rem;padding:0 .8rem;font-size:.875rem}.btn-swish{border-color:var(--color-border);color:var(--color-ink);background:#fff}.actions{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;display:flex}.form{flex-direction:column;gap:1rem;display:flex}.form-row{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:1rem;display:grid}.field{flex-direction:column;gap:.3rem;display:flex}.field>span:first-child,.field legend{font-size:.9rem;font-weight:600}.field .hint{color:var(--color-ink-soft);font-size:.8rem}.input{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:100%;height:2.8rem;color:var(--color-ink);font:inherit;padding:0 .85rem}textarea.input{resize:vertical;height:auto;min-height:6rem;padding:.6rem .85rem}.input:focus{outline:2px solid var(--color-sky-300);outline-offset:0;border-color:var(--color-sky-500)}.checkbox{cursor:pointer;align-items:flex-start;gap:.55rem;display:flex}.checkbox input{width:1.05rem;height:1.05rem;accent-color:var(--color-primary);margin-top:.3rem}fieldset{border:0;margin:0;padding:0}.choice-list{grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));gap:.5rem;display:grid}.choice{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);cursor:pointer;align-items:center;gap:.6rem;padding:.7rem .9rem;display:flex}.choice:has(input:checked){border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary)}.choice input{accent-color:var(--color-primary)}.choice small{color:var(--color-ink-soft);display:block}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.4rem}.card+.card,.card+.section,.section+.section{margin-top:1.25rem}.card h2{margin-bottom:.8rem}.card-header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.8rem;display:flex}.card-header h2{margin:0}.grid-cards{grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:1rem;display:grid}.grid-cards>.card{margin-top:0}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:.95rem}.table th,.table td{text-align:left;border-bottom:1px solid var(--color-border);vertical-align:middle;padding:.65rem .75rem}.table th{text-transform:uppercase;letter-spacing:.05em;color:var(--color-ink-soft);font-size:.8rem;font-weight:600}.table tr:last-child td{border-bottom:0}.table .num{text-align:right;white-space:nowrap}.list{margin:0;padding:0;list-style:none}.list li{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:1rem;padding:.7rem 0;display:flex}.list li:last-child{border-bottom:0}.badge{background:var(--color-sky-100);color:var(--color-sky-700);white-space:nowrap;border-radius:999px;padding:.15rem .6rem;font-size:.78rem;font-weight:600;display:inline-block}.badge-success{background:var(--color-success-bg);color:var(--color-success-text)}.badge-warning{background:var(--color-warning-bg);color:var(--color-warning-text)}.badge-danger{background:var(--color-danger-bg);color:var(--color-danger-text)}.badge-muted{color:var(--color-ink-soft);background:#eef2f5}.alert{border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-sky-100);padding:.8rem 1rem}.alert-error{background:var(--color-danger-bg);border-color:var(--color-danger-border);color:var(--color-danger-text)}.alert-success{background:var(--color-success-bg);color:var(--color-success-text);border-color:#b7e2c6}.alert-warning{background:var(--color-warning-bg);color:var(--color-warning-text);border-color:#f1dc9c}.empty{text-align:center;color:var(--color-ink-soft);padding:2rem 1rem}.loading{text-align:center;color:var(--color-ink-soft);padding:3rem 1rem}.spinner{vertical-align:-.2rem;border:2px solid;border-right-color:#0000;border-radius:50%;width:1.1rem;height:1.1rem;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}dl.details{grid-template-columns:max-content 1fr;gap:.45rem 1.25rem;margin:0;display:grid}dl.details dt{color:var(--color-ink-soft)}dl.details dd{margin:0}.modal-backdrop{z-index:50;background:#12374f59;justify-content:center;align-items:flex-start;padding:6vh 1rem 1rem;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--color-surface);border-radius:var(--radius);width:100%;max-width:34rem;box-shadow:var(--shadow-md);padding:1.5rem}.modal h2{margin-bottom:1rem}.hero{background:linear-gradient(180deg, var(--color-sky-200) 0%, var(--color-bg) 100%);padding:4.5rem 0 3.5rem}.hero h1{max-width:18ch;font-size:clamp(2.2rem,5vw,3.6rem)}.hero p{max-width:38rem;color:var(--color-ink-soft);font-size:1.15rem}.hero .actions{justify-content:flex-start;margin-top:1.5rem}.section{padding:3rem 0}.notice-banner{background:var(--color-accent);color:var(--color-ink);text-align:center;padding:.6rem 1rem;font-weight:600}.auth-card{max-width:30rem;margin:3rem auto}.signup-card{max-width:44rem;margin:2.5rem auto}.error-page{text-align:center;max-width:36rem;margin:6rem auto;padding:0 1.25rem}.payment-status{border-radius:var(--radius-sm);background:var(--color-sky-100);align-items:center;gap:.75rem;padding:1rem;display:flex}.mock-banner{font-size:.85rem}.input[aria-invalid=true]{border-color:var(--color-danger-text);outline-color:var(--color-danger-border)}.multiselect{position:relative}.multiselect summary{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;align-items:center;list-style:none;display:flex;overflow:hidden}.multiselect summary::-webkit-details-marker{display:none}.multiselect summary:after{content:"▾";color:var(--color-ink-soft);margin-left:auto;padding-left:.5rem}.multiselect__menu{z-index:30;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);min-width:100%;max-height:18rem;box-shadow:var(--shadow-md);flex-direction:column;gap:.4rem;padding:.75rem;display:flex;position:absolute;top:calc(100% + 4px);left:0;overflow-y:auto}.segmented{background:var(--color-sky-100);border-radius:999px;gap:2px;padding:3px;display:inline-flex}.segmented button{font:inherit;color:var(--color-ink-soft);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:.4rem .9rem;font-size:.9rem;font-weight:600}.segmented button.active{background:var(--color-surface);color:var(--color-ink);box-shadow:var(--shadow-sm)}.toolbar{flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:1rem;display:flex}.toolbar .input{width:auto}.toolbar .spacer{flex:1}.timegrid-wrap,.monthgrid-wrap{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);overflow-x:auto}.timegrid{min-width:min-content;display:grid}.timegrid__corner,.timegrid__head{z-index:2;background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:.5rem;position:sticky;top:0}.timegrid__head{text-align:center;border-left:1px solid var(--color-border);flex-direction:column;font-size:.9rem;display:flex}.timegrid__head.is-today{background:var(--color-sky-100)}.timegrid__axis{position:relative}.timegrid__axis span{color:var(--color-ink-soft);font-size:.72rem;position:absolute;right:.4rem;transform:translateY(-50%)}.timegrid__col{border-left:1px solid var(--color-border);position:relative}.timegrid__col.is-shaded{background:repeating-linear-gradient(45deg,#f6f8fa,#f6f8fa 8px,#eef2f5 8px 16px)}.timegrid__shade-label{color:var(--color-ink-soft);text-align:center;font-size:.75rem;font-weight:600;position:absolute;top:.4rem;left:.4rem;right:.4rem}.timegrid__line{border-top:1px dashed #e3edf5;position:absolute;left:0;right:0}.timegrid__band{color:var(--color-danger-text);background:repeating-linear-gradient(45deg,#a231310f,#a231310f 8px,#a231311f 8px 16px);padding:.2rem .3rem;font-size:.72rem;position:absolute;left:0;right:0;overflow:hidden}.timegrid__event{background:var(--color-sky-200);color:var(--color-ink);font:inherit;text-align:left;cursor:pointer;z-index:1;border:1px solid #12374f26;border-radius:6px;flex-direction:column;align-items:flex-start;gap:0;padding:.15rem .35rem;font-size:.75rem;line-height:1.2;display:flex;position:absolute;overflow:hidden}.timegrid__event:hover{z-index:3;box-shadow:var(--shadow-md)}.timegrid__event.has-conflict{border:2px solid var(--color-danger-text)}.timegrid__event.is-cancelled{opacity:.55;text-decoration:line-through;background:repeating-linear-gradient(45deg,#fff,#fff 6px,#f1f4f7 6px 12px)!important}.timegrid__time{font-weight:700}.timegrid__title{font-weight:600}.timegrid__sub{color:var(--color-ink-soft)}.monthgrid{grid-template-columns:2.2rem repeat(7,minmax(7rem,1fr));min-width:min-content;display:grid}.monthgrid__dayname{text-align:center;border-bottom:1px solid var(--color-border);text-transform:capitalize;padding:.5rem;font-size:.85rem;font-weight:600}.monthgrid__week{border-bottom:1px solid var(--color-border);justify-content:center;align-items:flex-start;padding-top:.5rem;display:flex}.monthgrid__cell{border-left:1px solid var(--color-border);border-bottom:1px solid var(--color-border);flex-direction:column;gap:2px;min-height:7rem;padding:.3rem;display:flex}.monthgrid__cell.is-outside{background:#fafcfd}.monthgrid__cell.is-outside .monthgrid__date{color:#a3b4c2}.monthgrid__cell.is-today .monthgrid__date{background:var(--color-primary);color:#fff}.monthgrid__cell.is-shaded{background:repeating-linear-gradient(45deg,#f6f8fa,#f6f8fa 8px,#eef2f5 8px 16px)}.monthgrid__date{font:inherit;cursor:pointer;color:var(--color-ink);background:0 0;border:0;border-radius:999px;align-self:flex-start;padding:.1rem .4rem;font-size:.85rem;font-weight:700}.monthgrid__shade{color:var(--color-ink-soft);font-size:.72rem;font-weight:600}.monthgrid__event,.monthgrid__more{border:0;border-left:3px solid var(--color-sky-500);background:var(--color-sky-100);font:inherit;text-align:left;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;color:var(--color-ink);border-radius:4px;padding:.1rem .3rem;font-size:.72rem;overflow:hidden}.monthgrid__event.has-conflict{background:var(--color-danger-bg)}.monthgrid__event.is-cancelled{opacity:.6;text-decoration:line-through}.monthgrid__more{color:var(--color-primary);background:0 0;border-left-color:#0000;font-weight:600}.legend{color:var(--color-ink-soft);flex-wrap:wrap;gap:1rem;margin-top:.75rem;font-size:.8rem;display:flex}.legend span:before{content:"";vertical-align:-.1rem;background:var(--swatch,var(--color-sky-200));border:var(--swatch-border,1px solid #12374f26);border-radius:3px;width:.8rem;height:.8rem;margin-right:.35rem;display:inline-block}.swatch{background:var(--color-sky-200);vertical-align:0;border:1px solid #12374f26;border-radius:3px;width:.7rem;height:.7rem;margin-right:.45rem;display:inline-block}.batchbar{z-index:5;border-radius:var(--radius-sm);background:var(--color-sky-100);border:1px solid var(--color-sky-300);flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem;padding:.6rem .8rem;display:flex;position:sticky;top:4.5rem}.table tr.is-past td{color:var(--color-ink-soft)}.linklike{font:inherit;color:var(--color-primary);cursor:pointer;text-align:left;background:0 0;border:0;padding:0;text-decoration:underline}.inline-picker{align-items:center;gap:.25rem;display:inline-flex}.inline-picker .input{width:9rem;height:2.1rem}.pattern{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fbfdff;flex-direction:column;gap:.75rem;padding:1rem;display:flex}.pattern__head{justify-content:space-between;align-items:center;display:flex}.ledger+.ledger{border-top:1px solid var(--color-border);margin-top:1.25rem;padding-top:1.25rem}.ledger__head{flex-wrap:wrap;justify-content:space-between;gap:1rem;margin-bottom:.4rem;display:flex}span.cap,strong.cap{display:inline-block}.cap:first-letter{text-transform:uppercase}.agefinder{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-md);padding:1.75rem}.agefinder__result{flex-direction:column;gap:1rem;margin-top:1rem;display:flex}.agefinder__period p{margin-bottom:.5rem}.chips{flex-wrap:wrap;gap:.5rem;display:flex}.chip{background:var(--color-sky-100);border:1px solid var(--color-sky-300);color:var(--color-ink);border-radius:999px;padding:.45rem .9rem;font-weight:600;text-decoration:none;display:inline-block}.chip:hover{background:var(--color-sky-200)}.prose{max-width:46rem}.prose p,.prose li{font-size:1.05rem}.prose h2{margin-top:2rem}.lead{color:var(--color-ink-soft);max-width:44rem;font-size:1.2rem}.page-hero{background:linear-gradient(180deg, var(--color-sky-200) 0%, var(--color-bg) 100%);padding:3rem 0 2rem}.page-hero h1{max-width:22ch}.breadcrumbs{color:var(--color-ink-soft);margin-bottom:.75rem;font-size:.85rem}.breadcrumbs a{color:var(--color-ink-soft)}.facts{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:.75rem;margin:1.5rem 0;display:grid}.fact{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.9rem 1rem}.fact span{color:var(--color-ink-soft);font-size:.8rem;display:block}.fact strong{font-size:1.1rem}.checklist{margin:0 0 1rem;padding:0;list-style:none}.checklist li{margin-bottom:.45rem;padding-left:1.8rem;position:relative}.checklist li:before{content:"✓";color:var(--color-primary);font-weight:700;position:absolute;top:0;left:0}.two-col{grid-template-columns:minmax(0,2fr) minmax(0,1fr);align-items:start;gap:2rem;display:grid}@media (width<=860px){.two-col{grid-template-columns:minmax(0,1fr)}}.review{margin:0}.review blockquote{margin:0 0 .5rem;font-size:1rem}.review figcaption{color:var(--color-ink-soft);font-weight:600}.level-card{color:inherit;flex-direction:column;text-decoration:none;transition:transform .15s,box-shadow .15s;display:flex}.level-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.level-card .meta{color:var(--color-ink-soft);margin-top:auto;padding-top:.75rem;font-size:.85rem}.faq details{border-bottom:1px solid var(--color-border);padding:.9rem 0}.faq summary{cursor:pointer;font-size:1.05rem;font-weight:600}.faq details p{margin:.6rem 0 0}.site-footer__cols{grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:1.5rem;margin-bottom:1.5rem;display:grid}.site-footer h3{color:var(--color-ink);margin-bottom:.5rem;font-size:.95rem}.site-footer ul{flex-direction:column;gap:.3rem;margin:0;padding:0;list-style:none;display:flex}.site-footer a{color:var(--color-ink-soft)}.term-status{border-radius:var(--radius-sm);background:#ffffffb3;padding:.6rem 1rem;display:inline-block;color:var(--color-ink)!important;font-size:1rem!important}.hero__text .prose p{color:var(--color-ink-soft);max-width:38rem;font-size:1.15rem}.list li.is-unbooked strong{color:var(--color-ink-soft);text-decoration:line-through}.person-card+.person-card{margin-top:1.25rem}.person-card__head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.person-card__head h2{margin:0}.stat-row{flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem;display:flex}.door-code{letter-spacing:.1em;font-family:ui-monospace,monospace;font-size:1.3rem;font-weight:700}.card-attention{background:#fffcf2;border-color:#f1dc9c}.tabs{flex-wrap:wrap;gap:.4rem;margin-bottom:1.25rem;display:flex}.tabs a,.tabs button{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-ink);font:inherit;cursor:pointer;border-radius:999px;padding:.45rem .9rem;font-weight:600;text-decoration:none}.tabs .active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.course-option{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 0;display:flex}.course-option:last-child{border-bottom:0}button.chip{font:inherit;cursor:pointer;font-weight:600}.chip-active,.chip-active:hover{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.dot{vertical-align:.05rem;border-radius:50%;width:.65rem;height:.65rem;display:inline-block}.dot-green{background:#2f9e5b}.dot-red{background:#d64545}.attendance-grid td,.attendance-grid th{text-align:center;white-space:nowrap}.attendance-grid td:first-child,.attendance-grid th:first-child{text-align:left}.attendance-grid .cell-present{color:var(--color-success-text);font-weight:700}.attendance-grid .cell-absent{color:var(--color-danger-text);font-weight:700}.attendance-grid .cell-unbooked{color:var(--color-warning-text)}.attendance-grid th.is-cancelled{opacity:.6;text-decoration:line-through}.datetime-input{grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:.4rem;display:grid}.unbook-rule{flex-direction:column;gap:.4rem;display:flex}.unbook-rule .inline-picker .input{height:2.8rem}details.more{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fbfdff;padding:.75rem 1rem}details.more summary{cursor:pointer;font-weight:600}details.more[open] summary{margin-bottom:.75rem}.occupancy{border-collapse:collapse;min-width:100%;font-size:.8rem}.occupancy th,.occupancy td{border:1px solid var(--color-border);vertical-align:top;padding:2px}.occupancy thead th{background:var(--color-surface);padding:.5rem;position:sticky;top:0}.occupancy tbody th{white-space:nowrap;color:var(--color-ink-soft);padding:.3rem .5rem;font-weight:600}.occ-cell{color:var(--color-ink);background:var(--color-sky-100);border-radius:4px;min-width:10rem;margin:1px 0;padding:.25rem .4rem;text-decoration:none;display:block}.occ-cell.is-full strong:after{content:" ●";color:var(--color-ink)}.occ-queue{background:var(--color-danger-text);color:#fff;border-radius:3px;margin-left:.3rem;padding:0 .3rem;font-size:.7rem;font-weight:700}.occ-staff{float:right;color:var(--color-ink-soft)}.big-number{color:var(--color-primary);font-size:2rem}.hbar{grid-template-columns:8rem 1fr 3rem;align-items:center;gap:.75rem;margin-bottom:.4rem;display:grid}.hbar__track{background:var(--color-sky-100);border-radius:999px;height:.9rem;overflow:hidden}.hbar__fill{background:var(--color-primary);border-radius:999px;height:100%;display:block}.bar{background:linear-gradient(90deg, var(--color-primary) var(--w), var(--color-sky-100) var(--w));vertical-align:.05rem;border-radius:999px;width:4rem;height:.5rem;margin-right:.5rem;display:inline-block}.mail-preview{white-space:pre-wrap;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fbfdff;max-height:26rem;margin:0;padding:1rem;font-family:inherit;font-size:.9rem;overflow:auto}.audience{grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:1.5rem;display:grid}.criterion{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fbfdff;flex-direction:column;gap:.5rem;margin-bottom:.6rem;padding:.75rem;display:flex}.criterion__head{justify-content:space-between;align-items:center;display:flex}.save-bar{background:linear-gradient(180deg, #eff9ff00, var(--color-bg) 40%);padding:.75rem 0;position:sticky;bottom:0}.mfa-qr{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.mfa-qr img{border:1px solid var(--color-border);background:#fff;border-radius:8px}.mfa-secret{letter-spacing:.05em;word-break:break-all;font-size:.95rem}.recovery-codes{columns:2;background:var(--color-sky-100);border-radius:8px;padding:.75rem 1rem;font-size:1rem;line-height:1.8}ol.steps{margin:0;padding-left:1.25rem}.impersonation-bar{background:var(--color-warning-bg);border-bottom:1px solid var(--color-border);color:var(--color-warning-text);font-size:.9rem}.impersonation-bar__inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-top:.45rem;padding-bottom:.45rem;display:flex}.impersonation-bar__button{background:var(--color-ink);border-color:var(--color-ink);color:#fff}
