:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--ink:#333;--muted:#666;--paper:#fff;--cream:#faf8f4;--blush:#dcc3c3;--gold:#c8a977;--gold-dark:#9a835c;--line:#d1cfc5;font-family:Montserrat,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;color:var(--ink);background:radial-gradient(circle at 12% 8%, #dcc3c385, transparent 28rem), radial-gradient(circle at 88% 92%, #c8a9772e, transparent 24rem), var(--cream);margin:0}button,input,textarea{font:inherit}.shell{place-items:center;min-height:100svh;padding:1.25rem;display:grid}.signin-card{border:1px solid var(--line);background:#fffffffa;border-radius:1.25rem;width:min(100%,31rem);padding:clamp(1.5rem,5vw,3rem);position:relative;overflow:hidden;box-shadow:0 1.5rem 4rem #3333331a}.signin-card:before{content:"";background:linear-gradient(90deg, var(--blush), var(--gold), var(--blush));height:.32rem;position:absolute;inset:0 0 auto}.brand-mark{width:4.25rem;height:4.25rem;color:var(--ink);background:var(--blush);letter-spacing:.08em;border:2px solid #ffffffdb;border-radius:50%;place-items:center;font-weight:700;display:grid;box-shadow:0 0 0 .3rem #dcc3c33d}.eyebrow{color:var(--gold-dark);letter-spacing:.08em;text-transform:uppercase;margin:1.5rem 0 .5rem;font:700 .85rem/1.3 ui-sans-serif,system-ui,sans-serif}h1{color:var(--ink);letter-spacing:-.035em;margin:0;font-size:clamp(2.2rem,10vw,4rem);font-weight:600;line-height:1.05}.lede{color:var(--muted);margin:1.25rem 0 2rem;font-size:1.08rem;line-height:1.55}.signin-form{gap:.75rem;display:grid}.signin-form label{font:700 .95rem/1.4 ui-sans-serif,system-ui,sans-serif}.signin-form input{width:100%;min-height:3rem;color:var(--ink);background:#fff;border:1px solid #cbbfaa;border-radius:.65rem;padding:.75rem .9rem}.signin-form input:focus{border-color:var(--gold-dark);outline:3px solid #c9aa7057}.primary-action{min-height:3rem;color:var(--ink);background:var(--gold);cursor:pointer;border:0;border-radius:.7rem;justify-content:center;align-items:center;padding:.78rem 1rem;font:700 1rem/1.2 ui-sans-serif,system-ui,sans-serif;text-decoration:none;display:inline-flex}.primary-action:hover{background:var(--gold-dark)}.primary-action:focus-visible{outline-offset:3px;outline:3px solid #a7813f61}.signin-form .primary-action{margin-top:.5rem}.privacy-note{color:var(--muted);margin:1.25rem 0 0;font:.9rem/1.5 ui-sans-serif,system-ui,sans-serif}.notice{border-left:4px solid var(--gold);background:#f5eeeb;border-radius:.35rem;margin:0 0 1.25rem;padding:.9rem 1rem;font:.95rem/1.5 ui-sans-serif,system-ui,sans-serif}.secondary-action{color:var(--ink);text-underline-offset:.18rem;font:700 .95rem/1.4 ui-sans-serif,system-ui,sans-serif}.preview-access{border:1px solid var(--line);background:var(--cream);color:var(--muted);border-radius:.9rem;margin-top:1.5rem;padding:1rem;font-size:.9rem;line-height:1.5}.preview-access p{margin:0 0 .55rem}.secondary-button{border:1px solid var(--gold);min-height:2.75rem;color:var(--ink);cursor:pointer;background:#fff;border-radius:.75rem;padding:.65rem 1rem;font-weight:700}.secondary-button:hover{background:#f5eeeb}.portal-shell{width:min(100%,72rem);min-height:100svh;margin:0 auto;padding:clamp(1.25rem,4vw,3rem)}.portal-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:1.5rem;padding-bottom:1.5rem;display:flex}.eyebrow.compact{margin-top:0}.portal-intro{color:var(--muted);margin:.75rem 0 0}.schedule-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));gap:1rem;margin-top:1.5rem;display:grid}.schedule-card{border:1px solid var(--line);background:#fff;border-radius:1rem;padding:1.35rem;box-shadow:0 .8rem 2.4rem #33333312}.schedule-card h2{margin:1.1rem 0 .5rem;font-size:1.35rem}.schedule-meta{color:var(--gold-dark);text-transform:uppercase;letter-spacing:.05em;justify-content:space-between;gap:1rem;font-size:.8rem;font-weight:700;display:flex}.schedule-time{margin:0;font-size:1.75rem;font-weight:700}.schedule-location{color:var(--muted);margin:.55rem 0 1rem}.status-pill{background:#f5eeeb;border-radius:999px;padding:.35rem .65rem;font-size:.78rem;font-weight:700;display:inline-flex}.preview-banner{border-left:4px solid var(--blush);color:var(--muted);background:#ffffffb8;margin-top:1.5rem;padding:.9rem 1rem;font-size:.9rem}.portal-nav{flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem;display:flex}.portal-nav a{color:var(--muted);border-radius:999px;padding:.65rem .9rem;font-size:.9rem;font-weight:700;text-decoration:none}.portal-nav a:hover,.portal-nav a.active{background:var(--blush);color:var(--ink)}.class-list,.roster-list{gap:.9rem;margin-top:1.5rem;display:grid}.class-link-card{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:1rem;justify-content:space-between;align-items:center;gap:1rem;padding:1.2rem 1.3rem;text-decoration:none;display:flex}.class-link-card:hover{border-color:var(--gold);box-shadow:0 .6rem 2rem #33333312}.class-link-card strong,.class-link-card small{display:block}.class-link-card small{color:var(--muted);margin-top:.35rem}.roster-header{border-bottom:1px solid var(--line);padding-bottom:1.5rem}.back-link{color:var(--ink);text-underline-offset:.2rem;font-size:.9rem;font-weight:700}.pupil-card{border:1px solid var(--line);background:#fff;border-radius:1rem;padding:1.25rem}.pupil-heading{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.pupil-heading h2{margin:0;font-size:1.3rem}.fee-pill{border-radius:999px;flex:none;padding:.35rem .6rem;font-size:.76rem;font-weight:700}.fee-paid{color:#295b34;background:#e5f2e7}.fee-unpaid{color:#813d36;background:#f8e4e1}.fee-review{color:#6e582e;background:#f4eddc}.pupil-details{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin:1.2rem 0;display:grid}.pupil-details div{background:var(--cream);border-radius:.75rem;padding:.9rem}.pupil-details dt{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:.4rem;font-size:.76rem;font-weight:700}.pupil-details dd{margin:0;line-height:1.5}.attendance-control{border:0;gap:.55rem;margin:0;padding:0;display:grid}.attendance-control legend{margin-bottom:.55rem;font-weight:700}.attendance-actions{gap:.55rem;display:flex}.attendance-control button{border:1px solid var(--line);min-width:6.5rem;color:var(--ink);cursor:pointer;background:#fff;border-radius:.6rem;padding:.65rem .9rem}.attendance-control button:hover{border-color:var(--gold)}.attendance-control button.selected{border-color:var(--gold-dark);background:var(--gold);font-weight:700}.attendance-control:disabled button{cursor:wait;opacity:.7}.save-status{color:var(--muted);font-size:.82rem;line-height:1.45}.hours-layout{grid-template-columns:minmax(0,1.15fr) minmax(18rem,.85fr);align-items:start;gap:1.5rem;margin-top:1.5rem;display:grid}.hours-list{gap:.85rem;display:grid}.hours-list>h2,.hours-list>p{margin:0}.hours-card,.hours-form,.cover-panel{border:1px solid var(--line);background:#fff;border-radius:1rem;padding:1.25rem}.hours-card h3{margin:.35rem 0;font-size:1.1rem}.hours-card p{color:var(--muted);margin:.3rem 0}.hours-card .hours-date{color:var(--gold-dark);font-size:.82rem;font-weight:700}.text-button{color:var(--ink);text-underline-offset:.2rem;cursor:pointer;background:0 0;border:0;padding:0;font-weight:700;text-decoration:underline}.hours-form{gap:.85rem;display:grid;position:sticky;top:1rem}.hours-form h2{margin:0}.hours-form label{gap:.35rem;font-size:.9rem;font-weight:700;display:grid}.hours-form input,.hours-form textarea{width:100%;color:var(--ink);background:#fff;border:1px solid #cbbfaa;border-radius:.65rem;padding:.72rem .8rem}.hours-form textarea{resize:vertical;min-height:6rem}.hours-form input:focus,.hours-form textarea:focus{border-color:var(--gold-dark);outline:3px solid #c9aa7057}.form-actions{flex-wrap:wrap;gap:.6rem;display:flex}.cover-panel{background:#dcc3c359;justify-content:space-between;align-items:center;gap:1.5rem;margin-top:1.5rem;display:flex}.cover-panel h2,.cover-panel p{margin:0}.cover-panel p{max-width:40rem;color:var(--muted);line-height:1.5}.unavailable-panel{border:1px solid var(--line);border-left:4px solid var(--gold);background:#fff;border-radius:.8rem;margin-top:1.5rem;padding:1.5rem}.unavailable-panel h2{margin:.3rem 0 .5rem}.unavailable-panel p:last-child{color:var(--muted);margin:0;line-height:1.5}.calendar-panel{border:1px solid var(--line);background:#fff;border-radius:1rem;grid-template-columns:minmax(0,.8fr) minmax(18rem,1.2fr);gap:1.5rem;margin-top:1.5rem;padding:1.35rem;display:grid}.calendar-panel h2,.calendar-panel p{margin-top:0}.calendar-panel>div:first-child>p:last-child,.calendar-help{color:var(--muted);line-height:1.5}.calendar-actions{gap:.8rem;display:grid}.calendar-link-label{gap:.4rem;font-size:.85rem;font-weight:700;display:grid}.calendar-link-label input{background:var(--cream);width:100%;color:var(--ink);border:1px solid #cbbfaa;border-radius:.65rem;padding:.72rem .8rem}.calendar-help{margin-bottom:0;font-size:.86rem}@media (max-width:40rem){.portal-header{flex-direction:column;align-items:stretch}.portal-header .secondary-button{width:100%}.pupil-heading{flex-direction:column;align-items:stretch}.pupil-details{grid-template-columns:1fr}.attendance-actions{grid-template-columns:1fr 1fr;display:grid}.attendance-control button{min-width:0}.hours-layout{grid-template-columns:1fr}.hours-form{position:static}.cover-panel{flex-direction:column;align-items:flex-start}.calendar-panel{grid-template-columns:1fr}}
