:root{--brand:#31584c;--ink:#24392f;--muted:#626e67;--bg:#f5f6f3;--line:#dce2da;--paper:#fff;--yellow:#f6d36f;--red:#a23632;font-family:'Segoe UI',system-ui,-apple-system,BlinkMacSystemFont,sans-serif;color:var(--ink);background:var(--bg);font-size:16px;font-synthesis:none;color-scheme:light}
*{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;overscroll-behavior:none}body{margin:0}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer;user-select:none;-webkit-user-select:none}button:disabled{cursor:wait;opacity:.55}a{color:var(--brand);text-underline-offset:3px}button:active{filter:brightness(.92)}:focus-visible{outline:3px solid #9f6a17;outline-offset:3px}input,select,textarea{font-size:1rem;width:100%;min-height:48px;border:1px solid #aeb9b0;border-radius:10px;padding:12px;background:#fff;color:var(--ink)}input[type=checkbox]{width:22px;min-height:22px;accent-color:var(--brand)}input[type=color]{padding:5px;width:70px}textarea{resize:vertical;line-height:1.6;min-height:130px}label{font-weight:600;font-size:.9rem;display:grid;gap:8px}small{font-size:.82rem;color:var(--muted);line-height:1.5}h1,h2,h3,p{margin:0}h1{font-size:2rem;letter-spacing:-.055em;line-height:1.12}h2{font-size:1.3rem;letter-spacing:-.025em}h3{font-size:1.08rem;line-height:1.4}p{line-height:1.65}svg{width:22px;height:22px;flex-shrink:0;vertical-align:middle}.skip{position:fixed;top:-100px;left:16px;background:white;padding:12px;z-index:100}.skip:focus{top:12px}.boot{min-height:100dvh;display:grid;place-content:center;justify-items:center;gap:20px}.brand-mark{display:grid;place-items:center;width:48px;height:48px;border-radius:15px;background:var(--brand);color:#fff;font-weight:750;font-size:2.4rem;line-height:1;flex-shrink:0;padding-bottom:5px}.brand-mark.big{width:72px;height:72px;font-size:3.6rem;border-radius:21px}.brand{display:flex;align-items:center;gap:12px}.brand strong{font-size:1.8rem;letter-spacing:-.07em}.brand small{display:block}.brand img{width:48px;height:48px;object-fit:contain;border-radius:12px}
.btn{border:1px solid var(--line);min-height:46px;border-radius:10px;padding:11px 17px;background:white;color:var(--ink);font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:9px;text-decoration:none}.btn.primary{background:var(--brand);border-color:var(--brand);color:white}.btn.danger{color:var(--red)}.btn.soft{background:#eef2ed;border-color:transparent}.btn.icon{width:46px;padding:10px;flex-shrink:0}.link-btn{border:0;background:transparent;color:var(--brand);font-weight:650;min-height:44px;padding:8px 0;display:inline-flex;align-items:center;gap:6px}.btn.wide{width:100%}.row{display:flex;align-items:center;gap:12px;min-width:0}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.stack{display:grid;gap:18px}.grow{flex:1;min-width:0}.muted{color:var(--muted)}.notice{background:#fff7db;border:1px solid #efdda1;border-radius:10px;padding:14px 16px;font-size:.9rem;line-height:1.55}.error{color:#922c28;background:#fff0ef;padding:12px 14px;border-radius:9px;line-height:1.5}.error:empty{display:none}.hint{font-size:.88rem;color:var(--muted);line-height:1.6}.badge{display:inline-flex;gap:5px;align-items:center;background:#edf1ed;color:#3d5848;font-size:.8rem;font-weight:600;padding:5px 9px;border-radius:5px;max-width:100%;overflow-wrap:anywhere}.badge.yellow{background:#fff1c5;color:#755311}.avatar{width:42px;height:42px;border-radius:50%;background:#e7ede7;display:grid;place-items:center;font-size:.82rem;font-weight:700;flex-shrink:0}.avatar.teacher{background:#f5e3cf;color:#725335}.dot{width:9px;height:9px;border-radius:50%;background:var(--brand)}
.login{min-height:100dvh;display:grid;grid-template-columns:1fr 1fr;background:white}.login-side{background:#eaf0e8;display:flex;flex-direction:column;justify-content:space-between;padding:60px max(40px,9vw);gap:60px}.login-side h1{font-size:3.9rem;line-height:1.05;letter-spacing:-.06em;max-width:420px}.login-side p{margin-top:25px;font-size:1.15rem;max-width:360px}.login-caption{border-top:1px solid #cad6c7;padding-top:24px}.login-main{display:flex;align-items:center;justify-content:center;padding:40px}.login-box{width:100%;max-width:380px}.login-box h2{font-size:1.8rem}.login-box .intro{margin:12px 0 28px;color:var(--muted)}.login-box form{display:grid;gap:20px}.login-box .foot{margin-top:26px;font-size:.87rem;color:var(--muted)}.password{position:relative}.password input{padding-right:55px}.password button{position:absolute;right:2px;top:2px;border:0;background:none;width:44px;height:44px;color:var(--muted)}
.shell{display:grid;grid-template-columns:258px 1fr;min-height:100dvh}.sidebar{background:white;border-right:1px solid var(--line);padding:30px 22px;position:fixed;inset:0 auto 0 0;width:258px;display:flex;flex-direction:column;z-index:5;overflow:auto}.sidebar .brand{margin-bottom:35px}.center-label{font-size:.79rem;color:var(--muted);margin-bottom:7px}.center-picker{margin-bottom:28px}.center-picker select{font-size:.92rem;border-color:var(--line);font-weight:600;min-height:48px;padding:10px 7px}.nav{display:grid;gap:6px}.nav button{border:0;background:none;color:var(--muted);text-align:left;font-weight:600;border-radius:10px;display:flex;align-items:center;gap:13px;min-height:50px;padding:12px}.nav button.active{background:#eaf0e8;color:var(--brand)}.nav .count{margin-left:auto;font-size:.78rem;background:var(--yellow);color:#543f15;border-radius:5px;padding:2px 6px}.sidebar-foot{margin-top:auto;padding-top:30px}.sidebar-foot .prototype{font-size:.8rem;display:block;margin-bottom:18px;color:var(--muted)}.person{border-top:1px solid var(--line);padding-top:18px;font-size:.91rem}.person strong{display:block;overflow-wrap:anywhere}.content-shell{grid-column:2;min-width:0}.topbar{height:84px;padding:0 42px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:16px}.topbar .crumb{font-size:.92rem}.topbar .right{display:flex;gap:12px;align-items:center}.mobile-brand{display:none}.connection{font-size:.81rem;color:var(--muted)}.page{max-width:1070px;margin:auto;padding:38px 42px 60px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:27px}.page-heading p{color:var(--muted);margin-top:9px;font-size:.95rem}.welcome{display:flex;gap:18px;align-items:center;border-left:4px solid var(--yellow);padding:17px 21px;background:#fffaf0;margin-bottom:26px}.welcome p{font-size:.91rem;color:#645b42}.welcome strong{display:block;margin-bottom:4px}.filters{display:flex;gap:8px;overflow:auto;padding-bottom:10px;margin:0 0 18px;scrollbar-width:thin}.filter{flex-shrink:0;border:1px solid var(--line);min-height:43px;padding:9px 15px;border-radius:24px;background:white;display:flex;align-items:center;gap:8px;font-size:.89rem;font-weight:600;color:var(--muted)}.filter.active{background:var(--brand);border-color:var(--brand);color:#fff}.filter .class-dot{width:9px;height:9px;border-radius:50%}.search{position:relative;margin-bottom:22px}.search svg{position:absolute;left:14px;top:13px;color:var(--muted)}.search input{padding-left:46px;border-color:var(--line);background:transparent}.feed{display:grid;gap:22px}.post{background:white;border:1px solid var(--line);border-radius:15px;overflow:hidden}.post.pinned{border-top:3px solid #e8be53}.post-inner{padding:23px 25px}.post-top{display:flex;justify-content:space-between;align-items:start;gap:12px}.post-author{font-size:.91rem;font-weight:650}.post-date{font-size:.8rem;color:var(--muted);margin-top:3px}.post-labels{display:flex;gap:7px;flex-wrap:wrap;margin:20px 0 12px}.post h2{font-size:1.26rem;margin-bottom:12px;line-height:1.4}.post-body{font-size:1rem;line-height:1.75;white-space:pre-wrap;overflow-wrap:anywhere}.post-bottom{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:22px;padding-top:17px;border-top:1px solid #edf0eb;flex-wrap:wrap}.reactions{display:flex;gap:6px}.reaction{background:#f6f7f4;border:1px solid transparent;border-radius:18px;padding:7px 12px;min-height:40px;font-size:.9rem;color:var(--muted)}.reaction.selected{border-color:#b7cbbd;background:#e8f1e9;color:var(--brand)}.read{font-size:.86rem;display:flex;align-items:center;gap:7px}.read.done{color:var(--brand);min-height:44px}.post-files{display:grid;gap:10px;margin-top:18px}.photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.photo-grid.single{grid-template-columns:1fr}.photo-btn{border:0;background:#f1f3ef;padding:0;overflow:hidden;border-radius:8px;line-height:0}.photo-btn img{width:100%;height:230px;object-fit:cover}.photo-grid.single img{max-height:380px;height:auto;display:block}.attachment{border:1px solid var(--line);border-radius:9px;padding:13px;display:flex;align-items:center;gap:12px;text-decoration:none;min-width:0;font-size:.9rem}.attachment span{overflow-wrap:anywhere}.attachment small{display:block}.post video{width:100%;max-height:420px;border-radius:8px;background:#15241e}.empty{padding:45px 25px;text-align:center;border:1px dashed #bac7bc;border-radius:12px;background:#fff}.empty svg{width:32px;height:32px;color:var(--brand);margin-bottom:14px}.empty p{margin-top:10px;color:var(--muted)}.empty .btn{margin-top:20px}.bottom-nav{display:none}.offline-bar{background:#fff2ce;border-bottom:1px solid #e8d28f;padding:9px 20px;text-align:center;font-size:.9rem}.load-more{margin:22px auto 0;display:flex}
.class-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.class-card{background:white;border:1px solid var(--line);border-radius:14px;padding:23px;display:flex;flex-direction:column;gap:15px}.class-initial{width:52px;height:52px;border-radius:15px;display:grid;place-items:center;font-size:1.6rem;font-weight:650;color:#253b31}.class-card p{font-size:.93rem;color:var(--muted)}.class-card .btn{margin-top:auto}.section{background:white;border:1px solid var(--line);border-radius:14px;padding:25px;margin-bottom:22px}.section h2{margin-bottom:20px}.section-title{margin-bottom:20px;display:flex;align-items:center;justify-content:space-between;gap:12px}.section-title h2{margin:0}.people-list{display:grid}.people-row{padding:18px 0;display:flex;align-items:center;gap:13px;border-top:1px solid var(--line)}.people-row:first-child{border-top:0;padding-top:0}.people-row .info{flex:1;min-width:0;overflow-wrap:anywhere}.people-row strong{font-size:.95rem}.people-row small{display:block;margin-top:3px}.people-actions{display:flex;gap:4px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.settings-grid .full{grid-column:1/-1}.logo-preview{width:76px;height:76px;object-fit:contain;border-radius:12px;border:1px solid var(--line)}.account-line{display:grid;gap:4px;margin-bottom:20px;overflow-wrap:anywhere}.account-line span{color:var(--muted);font-size:.88rem}.account-line strong{font-size:1rem}.checkline{display:flex;align-items:center;gap:11px;font-size:.94rem;min-height:44px}.class-checks{display:grid;gap:5px;padding:8px 0}.checkbox-field{border:1px solid var(--line);border-radius:9px;padding:10px 15px;margin:0}.checkbox-field legend{font-size:.9rem;font-weight:600;padding:0 6px}.preview-files{display:grid;gap:7px}.preview-file{font-size:.87rem;background:#f1f4ee;padding:7px 12px;display:flex;align-items:center;gap:10px;border-radius:8px;overflow-wrap:anywhere}.file-picker{border:1px dashed #aab9ad;position:relative;padding:18px;border-radius:10px;cursor:pointer;display:flex;align-items:center;gap:12px;background:#f7f9f5;font-weight:500}.file-picker input{position:absolute;inset:0;opacity:0;cursor:pointer}.file-picker:focus-within{outline:3px solid #9f6a17;outline-offset:3px}.upload-hint{margin-top:7px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:8px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.invite-link{word-break:break-all;font-size:.87rem;background:#eef2ed;border-radius:8px;padding:12px;user-select:all}.receipt{padding:12px 0;display:flex;justify-content:space-between;gap:15px;border-top:1px solid var(--line);font-size:.9rem}.receipt:first-child{border-top:0}.danger-zone{border-top:1px solid var(--line);margin-top:28px;padding-top:18px}.install-steps{padding-left:21px;line-height:1.7}.install-steps li{margin-bottom:9px}
dialog{border:0;border-radius:18px;padding:0;width:min(610px,calc(100% - 32px));max-height:90dvh;color:var(--ink);box-shadow:0 20px 80px #10291f33}dialog::backdrop{background:#10291f66}.modal-head{padding:22px 25px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);position:sticky;top:0;background:white;z-index:2}.modal-head h2{font-size:1.3rem}.modal-body{padding:24px 25px;overscroll-behavior:contain}.modal-body form{display:grid;gap:19px}.lightbox{max-width:100%;max-height:65dvh;display:block;margin:auto;object-fit:contain}#toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);max-width:calc(100% - 32px);background:#24392f;color:#fff;padding:13px 20px;border-radius:10px;box-shadow:0 5px 20px #0002;z-index:100;display:none;font-size:.94rem}#toast.show{display:block}
@media(hover:hover) and (pointer:fine){.btn:hover{filter:brightness(.96)}.nav button:hover{background:#f2f5ef}.reaction:hover{border-color:#bbcabe}.filter:hover{border-color:#87998b}.photo-btn:hover img{opacity:.92}}
@media(min-width:1350px){.page{padding-top:45px}.post-inner{padding:27px 30px}}
@media(max-width:1050px){.shell{grid-template-columns:220px 1fr}.sidebar{width:220px;padding:24px 16px}.page{padding:30px 26px 50px}.topbar{padding:0 26px}.class-list{grid-template-columns:1fr}.login-side{padding:50px 35px}.login-side h1{font-size:3rem}}
@media(max-width:760px){.shell{display:block}.sidebar{display:none}.content-shell{display:block}.topbar{height:auto;min-height:74px;padding:calc(13px + env(safe-area-inset-top)) 20px 13px;position:sticky;top:0;z-index:5}.topbar .crumb,.topbar .date-label,.topbar .connection{display:none}.mobile-brand{display:flex;align-items:center;gap:10px;min-width:0}.mobile-brand .brand-mark{width:39px;height:39px;font-size:2rem;border-radius:12px}.mobile-brand img{width:39px;height:39px;object-fit:contain;border-radius:8px}.mobile-brand strong{font-size:.97rem;display:block;line-height:1.2;overflow-wrap:anywhere}.mobile-brand small{font-size:.74rem}.topbar .right{gap:0}.topbar .right .btn span{display:none}.topbar .right .btn{width:44px;padding:10px;background:white;color:var(--brand);border-color:var(--line)}.page{padding:25px 18px calc(100px + env(safe-area-inset-bottom));max-width:630px}.page-heading{margin-bottom:22px;gap:12px;align-items:start}.page-heading h1{font-size:1.8rem}.page-heading p{font-size:.89rem;margin-top:8px}.page-heading>.btn{font-size:.85rem;padding:10px 12px;min-height:44px}.welcome{padding:14px 15px;margin-bottom:20px;gap:10px}.welcome p{font-size:.84rem}.welcome strong{font-size:.91rem}.filters{margin:0 -18px 10px;padding:0 18px 11px}.filter{font-size:.86rem;padding:9px 13px}.feed{gap:16px}.post{border-radius:13px}.post-inner{padding:19px 17px}.post h2{font-size:1.19rem}.post-body{font-size:.97rem;line-height:1.7}.post-author{font-size:.86rem}.post-date{font-size:.76rem}.avatar{width:37px;height:37px}.post-labels{margin-top:17px}.post-bottom{margin-top:18px;padding-top:14px;gap:7px}.reaction{min-height:44px;padding:8px 10px}.read{font-size:.8rem}.photo-btn img{height:170px}.bottom-nav{display:flex;position:fixed;bottom:0;left:0;right:0;padding:7px max(5px,env(safe-area-inset-left)) calc(7px + env(safe-area-inset-bottom));background:white;border-top:1px solid var(--line);z-index:8;justify-content:space-around}.bottom-nav button{border:0;background:none;color:#66736b;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:.69rem;min-width:55px;min-height:51px;padding:3px}.bottom-nav button.active{color:var(--brand);font-weight:700}.bottom-nav button.active svg{background:#eaf0e8;border-radius:7px;box-shadow:0 0 0 5px #eaf0e8}.bottom-nav svg{width:22px;height:22px}.section{padding:20px 17px}.section-title{flex-wrap:wrap}.settings-grid{grid-template-columns:1fr}.settings-grid .full{grid-column:auto}.class-list{gap:13px}.class-card{padding:20px}.people-row{flex-wrap:wrap}.people-actions{margin-left:auto}.people-row .info{min-width:160px}.connection-mobile{font-size:.77rem;color:#956825;margin-bottom:12px}.login{display:block}.login-side{padding:28px 25px;gap:0;background:#eaf0e8}.login-side .brand{margin:0}.login-side h1,.login-side p,.login-caption{display:none}.login-main{padding:38px 25px}.login-box{max-width:430px}.login-box h2{font-size:1.7rem}.form-row{grid-template-columns:1fr}.modal-head{padding:17px 18px}.modal-body{padding:20px 18px calc(22px + env(safe-area-inset-bottom))}dialog{width:calc(100% - 20px);max-height:90dvh;border-radius:16px}.modal-head h2{font-size:1.16rem}#toast{bottom:calc(87px + env(safe-area-inset-bottom));width:max-content}.post-files{gap:9px}.search{margin-bottom:18px}.search input{min-height:46px}.topbar .btn.icon{height:44px;min-height:44px}.mobile-center-select{display:block}}
.filters{scrollbar-width:none}.filters::-webkit-scrollbar{display:none}.badge svg{width:15px;height:15px}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Carcajadas: the school's original artwork, kept intact. */
.registration{--brand:#654381}
.registration .login-side{background:#f2ecf7}
.registration .login-caption{border-color:#dcd0e6}
.registration-heading{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.registration-heading>svg{width:34px;height:34px;color:var(--brand)}
.registration-heading h2{margin:0}
.registration-note{display:grid;gap:4px;padding:14px 16px;margin:0 0 22px;background:#f2ecf7;border-radius:10px;color:#513668;font-size:.92rem;line-height:1.55}
.registration input[readonly]{background:#f5f4f6;color:#505651}
.registration form>small{margin-top:-10px}
.login-box{min-width:0;overflow-wrap:anywhere}
.access-switch{display:flex;justify-content:center;align-items:center;min-height:44px;margin-top:14px;font-size:.9rem;font-weight:600;text-align:center}
.access-help{font-size:.87rem;color:var(--muted);margin:16px 0;line-height:1.6}
.access-prototype{margin-top:24px;font-size:.78rem;color:var(--muted)}
@media(max-width:760px){.registration .login-side{background:#f2ecf7}.registration .login-main{padding:25px 22px}.registration .login-side{padding-top:18px;padding-bottom:18px}.registration-heading{gap:10px}.registration-heading>svg{width:28px;height:28px}}
[hidden]{display:none!important}
:root{--brand:#008534;--ink:#263e32;--bg:#f6f8f6}
.brand{gap:7px}.brand strong{font-size:1.4rem;letter-spacing:-.045em}.brand small{font-size:.72rem;letter-spacing:.02em}
.school-logo{display:block;width:200px;height:90px;flex-shrink:1;min-width:0}
.school-logo img{display:block;width:100%;height:100%;object-fit:contain;border-radius:0}
.custom-logo{width:54px;height:54px;object-fit:contain;flex-shrink:0}
.login-side{background:#f0f7ef;padding:46px clamp(28px,5vw,90px);gap:32px}
.login-side .brand strong{font-size:1.85rem}.login-side .brand small{font-size:.85rem}
.login-side .school-logo{width:210px;height:94px}.login-side h1{font-size:clamp(2.8rem,4.5vw,4.5rem);letter-spacing:-.055em}
.login-mascots{display:flex;align-items:end;justify-content:space-between;gap:8px}
.login-mascots img{width:30%;height:auto;max-height:170px;object-fit:contain;aspect-ratio:1}
.login-caption{font-size:.88rem;border-color:#d7e5d6}
.welcome{background:#edf6ef;border-color:var(--brand)}.welcome p{color:#46604c}
.welcome-mascot{width:60px;height:68px;object-fit:contain;flex-shrink:0}
.class-list{grid-template-columns:repeat(3,minmax(0,1fr))}
.mascot-card{text-align:center;padding:22px 18px;gap:17px;position:relative}
.mascot-stage{position:relative;display:flex;align-items:center;justify-content:center;min-height:175px;padding:12px}
.class-mascot{height:155px;width:100%;max-width:185px;object-fit:contain}
.class-edit{position:absolute;top:-9px;right:-7px;background:#ffffffeb}
.mascot-card h2{font-size:1.65rem;letter-spacing:-.04em;margin-bottom:6px}
.mascot-card .class-age{font-weight:600;font-size:.86rem}.mascot-card>.btn{font-size:.88rem;padding:10px 8px}
.classroom-header{display:grid;gap:20px}.classroom-header h2{margin:0 0 5px;font-size:1.8rem}
.classroom-header p{color:var(--muted)}.aula-mascot{width:94px;height:102px;object-fit:contain;flex-shrink:0}
.classroom-header>.row:first-child{gap:22px}.classroom-header>.row.wrap{padding-top:18px;border-top:1px solid var(--line)}
.entry-welcome{padding:4px 0 32px;max-width:640px}.entry-greeting{color:var(--brand);font-weight:650;margin-bottom:12px}.entry-welcome h1{font-size:2.4rem;line-height:1.13;letter-spacing:-.045em;margin-bottom:12px}.entry-welcome>p:last-child{color:var(--muted)}
.stage-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.stage-card{display:flex;flex-direction:column;align-items:center;text-align:center;border:1px solid var(--line);border-top:4px solid var(--stage-color);border-radius:16px;background:white;padding:24px 18px;color:var(--ink);min-width:0;gap:16px}.stage-card:disabled{cursor:default;opacity:.55}.stage-mascot{width:150px;height:150px;object-fit:contain;flex-shrink:0}.stage-copy{display:grid;gap:7px;width:100%}.stage-copy>strong{font-size:1.6rem;letter-spacing:-.035em}.stage-copy>span:not(.stage-cta){font-size:.94rem;color:var(--muted)}.stage-copy small{font-size:.9rem}.stage-cta{display:flex;justify-content:center;align-items:center;gap:7px;color:var(--brand);font-size:.9rem;font-weight:650;margin-top:9px}.stage-cta svg{width:17px}
.school-notices{width:100%;border:0;border-top:1px solid var(--line);background:transparent;display:flex;gap:16px;align-items:center;text-align:left;color:var(--ink);padding:24px 4px;margin-top:25px}.school-notices>span{flex:1;min-width:0}.school-notices strong,.school-notices small{display:block}.school-notices small{margin-top:5px}.school-notices>svg{color:var(--brand)}
.entry-back{margin-bottom:18px;font-size:.92rem}.stage-heading{display:flex;align-items:center;gap:23px;margin-bottom:28px}.stage-heading p{color:var(--muted);margin-top:10px}.stage-heading h1{font-size:2rem}.teacher-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.teacher-card{border:1px solid var(--line);border-radius:14px;padding:0;overflow:hidden;background:white;color:var(--ink);text-align:left;display:flex;flex-direction:column}.teacher-portrait{display:block;width:100%;height:200px;object-fit:cover;object-position:50% 30%;background:#eaf0eb}.portrait-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}.portrait-placeholder>span{display:grid;place-content:center;border:2px solid #fff;width:86px;height:86px;border-radius:50%;color:#52735f;font-size:1.8rem;font-weight:600}.portrait-placeholder small{color:#516557}.teacher-card-body{display:flex;flex-direction:column;gap:9px;padding:22px;flex:1}.teacher-card-body>strong{font-size:1.5rem;letter-spacing:-.03em}.teacher-card-body>span:not(.teacher-enter){font-size:.88rem;color:var(--muted)}.teacher-enter{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--line);padding-top:17px;margin-top:auto;font-size:.92rem;font-weight:650;color:var(--brand);line-height:1.55}.class-feed-heading{display:flex;gap:18px;align-items:center;margin-bottom:25px}.class-feed-heading h1{font-size:1.9rem}.class-feed-heading p{margin:7px 0 2px;color:var(--muted)}
.admin-people{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.admin-person{border:1px solid var(--line);border-radius:11px;overflow:hidden;min-width:0}.admin-person>.avatar{margin:18px 18px 0}.admin-person .teacher-portrait{height:155px}.admin-person-info{padding:18px}.admin-person-info p{font-size:.9rem;overflow-wrap:anywhere}.admin-person-info>.row{margin-top:18px;gap:8px}.admin-person-info .btn{padding:9px 12px;font-size:.86rem}.assignment-list{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}.assignment-list span{background:#f2f5f0;padding:5px 8px;font-size:.81rem;border-radius:5px}.admin-class-list{display:grid;gap:18px}.admin-class{display:flex;justify-content:space-between;align-items:center;gap:16px;border-top:1px solid var(--line);padding-top:18px}.admin-class:first-child{border-top:0;padding-top:0}.admin-class p{font-size:.86rem;color:var(--muted)}
@media(hover:hover) and (pointer:fine){.stage-card:not(:disabled):hover,button.teacher-card:hover{border-color:var(--brand)}.school-notices:hover{background:#eef4ee}}
.admin-person{display:flex;align-items:stretch}.admin-person .teacher-portrait{width:105px;height:auto;min-height:215px;flex-shrink:0}.admin-person .portrait-placeholder>span{width:58px;height:58px;font-size:1.2rem}.admin-person .portrait-placeholder small{font-size:.69rem}.admin-person-info{flex:1;min-width:0}.admin-person>.avatar{flex-shrink:0;margin-right:0}
@media(max-width:1050px){.teacher-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stage-mascot{width:110px;height:120px}.stage-card{padding:20px 10px}.admin-people:not(.admin-team){grid-template-columns:1fr}.admin-team .admin-person{flex-direction:column}.admin-team .admin-person .teacher-portrait{width:100%;height:150px;min-height:0}.admin-team .admin-person>.avatar{margin:15px 15px 0}.admin-team .admin-person-info{padding:14px}.admin-team .admin-person-info>.row .btn{flex:1 1 100%}}
@media(max-width:760px){.entry-welcome{padding:0 0 24px}.entry-welcome h1{font-size:1.95rem}.entry-welcome>p:last-child{font-size:.92rem}.entry-greeting{font-size:.94rem;margin-bottom:8px}.stage-grid{grid-template-columns:1fr;gap:13px}.stage-card{flex-direction:row;text-align:left;padding:14px 18px;border-top:1px solid var(--line);border-left:4px solid var(--stage-color);gap:20px;min-height:142px}.stage-mascot{width:94px;height:105px}.stage-copy{gap:3px}.stage-copy>strong{font-size:1.4rem}.stage-copy>span:not(.stage-cta){font-size:.86rem}.stage-copy small{font-size:.82rem}.stage-cta{justify-content:flex-start;margin-top:5px;font-size:.84rem}.school-notices{margin-top:19px;padding:18px 0}.school-notices strong{font-size:.94rem}.school-notices small{font-size:.8rem}.stage-heading{gap:15px;margin-bottom:23px}.stage-heading h1{font-size:1.7rem}.stage-heading p{font-size:.88rem}.teacher-grid{grid-template-columns:1fr}.teacher-portrait{height:220px}.teacher-card-body{padding:21px}.class-feed-heading h1{font-size:1.6rem}.class-feed-heading{gap:12px;align-items:flex-start}.admin-class{align-items:start;flex-wrap:wrap}.admin-class>.btn{margin-left:auto}.admin-person-info>.row .btn{flex:1}.admin-tabs{margin-bottom:16px}.entry-back{margin-bottom:15px}}
@media(min-width:761px) and (max-width:1100px){.class-list{grid-template-columns:repeat(2,minmax(0,1fr))}.brand strong{font-size:1.2rem}.school-logo{width:180px;height:80px}}
@media(max-width:760px){
 .mobile-brand .school-logo{width:90px;height:40px}.mobile-brand{gap:5px}.mobile-brand strong{font-size:1.04rem}.mobile-brand small{font-size:.7rem}
 .topbar{padding-left:14px;padding-right:14px;gap:7px}.topbar .right{gap:4px}.topbar .right .btn.primary{background:var(--brand);color:white;border-color:var(--brand)}
 .login-side{padding:22px 25px}.login-side .school-logo{width:175px;height:78px}.login-side .brand strong{font-size:1.65rem}.login-side .brand small{font-size:.77rem}.login-mascots{display:none}
 .welcome{padding:14px 12px}.welcome-mascot{width:49px;height:61px}
 .class-list{grid-template-columns:1fr}.mascot-card{padding:22px;gap:13px}.mascot-stage{min-height:164px}.class-mascot{height:155px}.mascot-card>.btn{font-size:.95rem}
 .classroom-header>.row:first-child{gap:16px}.aula-mascot{width:76px;height:88px}.classroom-header h2{font-size:1.65rem}
 .classroom-header>.row.wrap{display:grid;grid-template-columns:1fr;width:100%}.section-title small{display:block;margin-top:7px}
}
@media(max-width:760px){
 .teacher-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
 .teacher-card{min-width:0}
 .teacher-portrait{height:170px}
 .teacher-card-body{padding:13px;gap:6px}
 .teacher-card-body>strong{font-size:1.15rem}
 .teacher-card-body>span:not(.teacher-enter),.teacher-card-body>small{font-size:.78rem;overflow-wrap:anywhere}
 .teacher-enter{font-size:.8rem;line-height:1.35;padding-top:11px;gap:4px}
 .teacher-enter svg{flex-shrink:0;width:16px}
}
.class-feed-heading .portrait-placeholder{font-size:.7rem}
.class-feed-heading .portrait-placeholder small{display:none}
.class-feed-heading{display:grid;grid-template-columns:112px minmax(0,1fr) 90px;gap:20px;align-items:center}
.class-heading-mascot{width:90px;height:100px;object-fit:contain}
.class-heading-teacher{justify-self:start}
.class-heading-unassigned{display:grid;place-items:center;width:112px;height:112px;border-radius:16px;background:#eaf0eb;color:var(--muted);font-size:.76rem;text-align:center;padding:10px}
.class-feed-heading .teacher-portrait{width:112px;height:112px;border-radius:16px;object-fit:cover}
.class-feed-heading .portrait-placeholder>span{width:56px;height:56px;font-size:1.2rem}
.class-heading-copy{min-width:0}
.restricted-entry{background:#fff9e9;border:1px solid #ecd9a6;border-left:4px solid #e8ba57;border-radius:12px;padding:25px;max-width:640px}
.restricted-entry h2{font-size:1.28rem;margin-bottom:9px}
.restricted-entry p{color:#625b48;line-height:1.6}
.restricted-entry .btn{margin-top:18px}
@media(max-width:760px){
 .class-feed-heading{grid-template-columns:84px minmax(0,1fr) 56px;gap:10px;align-items:center}
 .class-heading-mascot{width:56px;height:70px}
 .class-feed-heading .teacher-portrait{width:84px;height:88px;border-radius:12px}
 .class-heading-unassigned{width:84px;height:88px;border-radius:12px;font-size:.67rem}
 .class-feed-heading .portrait-placeholder>span{width:40px;height:40px;font-size:.95rem}
 .class-feed-heading h1{font-size:1.28rem;line-height:1.2}
 .class-feed-heading p{font-size:.8rem;line-height:1.3;margin:6px 0 3px}
 .class-heading-copy>small{font-size:.74rem;line-height:1.35;display:block}
 .restricted-entry{padding:21px}
}
/* School services share the same calm, mobile-first family navigation. */
.home-welcome{padding-bottom:18px}.home-welcome h1{font-size:2.1rem}
.home-section{margin-bottom:28px}.home-section .section-title{margin-bottom:12px}.home-section h2{font-size:1.2rem}
.staff-shortcut{margin-bottom:24px}.home-class-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.home-class{display:flex;align-items:center;gap:12px;min-width:0;text-align:left;border:1px solid var(--line);border-radius:12px;background:white;padding:14px;color:var(--ink)}
.home-class .teacher-portrait{width:48px;height:54px;border-radius:8px;flex-shrink:0}.home-class .portrait-placeholder>span{font-size:.8rem;width:32px;height:32px}.home-class .portrait-placeholder small{display:none}
.home-class strong,.home-class small{display:block}.home-class small{font-size:.8rem;color:var(--muted);margin-top:4px}.home-class>svg{width:17px;flex-shrink:0;color:var(--brand)}
.home-services{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:28px}
.home-service{display:flex;align-items:center;gap:13px;text-align:left;padding:20px 17px;background:white;border:1px solid var(--line);border-radius:12px;color:var(--ink);min-width:0}
.home-service.menu-preview{background:#fff9e9;border-color:#eadcb2}.home-service strong,.home-service span>span,.home-service small{display:block}.home-service strong{margin-bottom:5px}.home-service span>span{font-size:.9rem}.home-service small{font-size:.8rem;color:var(--muted);margin-top:5px}
.home-service>svg{flex-shrink:0;width:17px}.service-icon{color:var(--brand);flex-shrink:0}.service-icon svg{width:26px;height:26px}
.home-notice{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;text-align:left;border:0;border-top:1px solid var(--line);padding:18px 0;background:transparent;color:var(--ink)}
.home-notice small{display:block;color:var(--muted);margin-top:5px;font-size:.8rem}.home-notice>svg{width:18px;flex-shrink:0}
.quiet-empty{color:var(--muted);padding:19px 0;line-height:1.6}.service-prose{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65}
.meal-days{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:22px 0 18px;max-width:660px}
.meal-day{border:1px solid var(--line);background:white;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px 4px;border-radius:10px;min-height:76px}.meal-day strong{font-size:1.35rem;color:var(--ink)}.meal-day small{font-size:.75rem}.meal-day.active{background:var(--brand);border-color:var(--brand);color:white}.meal-day.active strong{color:white}
.meal-sheet{background:#fffdf6;border:1px solid #e8dfc3;border-top:4px solid #e6c14b;padding:28px;border-radius:12px;margin-bottom:14px;max-width:660px}.meal-sheet h2{font-size:1.55rem}.meal-sheet>.row>svg{width:27px;height:27px;color:#776129}
.meal-sheet dl{margin:15px 0 0}.meal-sheet dl>div{padding:16px 0;border-bottom:1px solid #eee4c8}.meal-sheet dt{font-size:.83rem;color:#696146;margin-bottom:5px}.meal-sheet dd{margin:0;font-size:1.16rem;font-weight:600;overflow-wrap:anywhere}.meal-notes{font-size:.85rem;line-height:1.6;margin-top:20px;color:#696146;white-space:pre-wrap}
.week-overview{margin-top:24px;max-width:660px;border-top:1px solid var(--line)}.week-overview summary{cursor:pointer;font-weight:650;padding:16px 0;min-height:48px}.week-overview>div{padding:16px 0;border-top:1px solid var(--line)}.week-overview p{color:var(--muted);font-size:.9rem;margin-top:6px}
.office-actions{display:flex;gap:12px;flex-wrap:wrap;margin:0 0 26px}.office-info{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin-bottom:30px}.office-info h2,.office-requests h2{font-size:1.22rem;margin-bottom:12px}.office-info p{font-size:.93rem;margin-top:10px;color:var(--muted)}
.office-person{display:flex;align-items:center;gap:15px;width:max-content;max-width:100%;padding:11px 18px 11px 11px;margin:-5px 0 22px;border:1px solid var(--line);border-radius:12px;background:#fff}.office-person img,.office-person-initial{width:72px;height:72px;flex:none;border-radius:9px;object-fit:cover;object-position:center 30%;background:#eaf1e7}.office-person-initial{display:grid;place-items:center;color:var(--brand);font-size:1.8rem;font-weight:700}.office-person div{display:grid;gap:3px}.office-person span:not(.office-person-initial){font-size:.78rem;color:var(--muted)}.office-person strong{font-size:1.16rem;color:var(--ink)}
.document-link{display:flex;align-items:center;gap:10px;text-align:left;min-height:58px;padding:13px 0;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);font-weight:550}.document-link span{flex:1}.document-link svg{width:19px;flex-shrink:0;color:var(--brand)}
.request-list{display:grid;gap:16px;margin-top:18px}.request-item{background:white;border:1px solid var(--line);padding:20px;border-radius:12px}.request-item>small{display:block;color:var(--muted);margin-top:9px;font-size:.8rem}.request-item>p{margin-top:12px}.office-reply{border-left:3px solid var(--brand);padding:10px 14px;margin-top:18px;background:#f0f6ee}.office-reply strong{font-size:.83rem}.office-reply p{margin-top:6px}
.event-list{margin-top:14px}.event-row{display:flex;align-items:flex-start;gap:17px;padding:19px 0;border-bottom:1px solid var(--line)}.event-date{display:flex;flex-direction:column;align-items:center;min-width:52px;padding:9px 6px;border-radius:9px;background:#eaf1e7;color:var(--brand)}.event-date strong{font-size:1.35rem;line-height:1.2}.event-date span{font-size:.8rem}.event-row h3{font-size:1rem;margin-bottom:5px}.event-row p{font-size:.9rem;color:var(--muted);margin:7px 0;white-space:pre-wrap}.event-row small{font-size:.8rem;color:var(--muted)}
.service-fieldset{display:grid;gap:16px;padding:18px;border:1px solid var(--line);border-radius:10px;min-width:0}.service-fieldset legend{font-weight:650;padding:0 8px}.class-content-tabs{margin-bottom:18px}
@media(hover:hover) and (pointer:fine){.home-class:hover,.home-service:hover{border-color:var(--brand)}.home-notice:hover,.document-link:hover{color:var(--brand)}}
@media(max-width:1050px){.home-class-list{grid-template-columns:1fr}.home-services{grid-template-columns:1fr}.office-info{grid-template-columns:1fr}}
@media(max-width:760px){
 .bottom-nav button{flex:1;min-width:0;font-size:.68rem}.bottom-nav{gap:0}
 .home-welcome h1{font-size:1.85rem}.home-section{margin-bottom:23px}.home-class-list{gap:9px}.home-class{padding:12px 14px}.home-services{gap:12px}.home-service{padding:17px 14px}
 .home-section .section-title{gap:8px}.home-section .section-title .link-btn{font-size:.85rem}
 .meal-sheet{padding:22px 20px}.meal-sheet dd{font-size:1.08rem}.meal-day{min-height:76px}.office-actions{display:grid;grid-template-columns:1fr;gap:10px}.office-info{gap:25px}.request-item{padding:17px}.event-row{gap:12px}
}

.post-author-photo{display:block;width:100%;height:100%;object-fit:cover;object-position:center 30%;border-radius:inherit}
.post-top .avatar{position:relative;overflow:hidden}.post-author-photo{position:absolute;inset:0}

/* A persistent identity bar keeps the active account visible on every page. */
.topbar{position:sticky;top:0;z-index:5;background:var(--session-surface,#edf6ee);color:var(--session-ink,#254d35)}
.session-family{--session-surface:#edf6ee;--session-ink:#254d35}
.session-teacher{--session-surface:#eaf4fc;--session-ink:#234b6b}
.session-director{--session-surface:#f2ecfa;--session-ink:#513575}
.session-secretary{--session-surface:#fff4dd;--session-ink:#675014}
.session-admin{--session-surface:#fff0e6;--session-ink:#773c1e}
.session-user{display:flex;align-items:center;gap:10px;min-width:0;max-width:260px;min-height:48px;padding:4px 8px;border:0;border-radius:9px;background:transparent;color:var(--session-ink);text-align:left;flex-shrink:1}
.session-photo{display:block;width:40px;height:40px;object-fit:cover;object-position:center 25%;border-radius:50%;flex-shrink:0}
.session-user:hover{background:rgba(255,255,255,.55)}
.session-copy{display:grid;min-width:0;gap:2px}
.session-copy strong{font-size:.88rem;font-weight:700;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.session-copy small{font-size:.74rem;line-height:1.3;color:var(--session-ink)}
.session-family .session-copy small{overflow-wrap:anywhere}
.family-assignments{display:grid;gap:12px}
.family-assignment-list{display:grid;gap:18px}
.family-assignment{display:grid;gap:12px;min-width:0}
.family-new-child{display:grid;gap:12px}
.student-photo.student-photo-empty{display:grid;place-items:center;background-image:none;background-color:#edf3ee;color:var(--brand);font-size:2rem;font-weight:700}
.family-assignment+.family-assignment{padding-top:16px;border-top:1px solid var(--line)}
.family-assignment select{width:100%;min-width:0;text-overflow:ellipsis}
.family-assignments .link-btn{justify-self:start;min-height:44px;white-space:normal;text-align:left}
.family-assignment-list:has(>.family-assignment:only-child) .family-assignment-remove{display:none}
.topbar .connection{flex-shrink:0}
@media(max-width:760px){
  .topbar{padding-left:14px;padding-right:14px;gap:8px}
  .topbar .mobile-brand{flex-shrink:0}
  .topbar .mobile-brand>div{display:none}
  .topbar .mobile-brand .school-logo{width:90px;height:40px;overflow:visible}
  .topbar .mobile-brand .school-logo img{width:100%;height:100%;object-fit:contain}
  .topbar .right{flex:1;min-width:0;justify-content:flex-end;gap:4px}
  .topbar .session-user{max-width:240px;padding:4px;gap:8px;flex:1}
  .session-photo{width:34px;height:34px}
  .session-copy strong{font-size:.86rem}
  .topbar .right>.btn{flex-shrink:0}
}
@media(max-width:360px){.topbar{padding-left:10px;padding-right:10px}.session-copy strong{font-size:.81rem}}

.gallery-attachments{margin-top:32px}.gallery-attachments>h2{margin-bottom:18px}.attachment-source{margin-top:16px}.gallery-feed .photo-grid.single img{max-height:none}

.student-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}
.student-card{min-width:0;border:1px solid var(--line);border-radius:12px;padding:8px;background:#fff;text-align:center}
.student-photo{width:100%;aspect-ratio:1;background-color:#eee7dc;background-image:var(--photo-image);background-repeat:no-repeat;background-size:500% var(--photo-height);background-position:var(--photo-x) var(--photo-y);border-radius:8px}
.student-card h3{margin:10px 0 5px;font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:760px){.student-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.student-section{padding:18px 14px}.student-card h3{font-size:.95rem}}
.classroom-tabs.filters{flex-wrap:wrap;overflow:visible;max-width:100%;margin-bottom:18px;padding-bottom:0}.classroom-tabs .filter{flex-shrink:1;min-width:0;max-width:100%;white-space:normal;overflow-wrap:anywhere;text-align:center}.classroom-select{display:none}
@media(max-width:760px){.classroom-tabs.filters{display:none}.classroom-select{display:grid;gap:7px;margin-bottom:18px;font-size:.88rem;font-weight:650;color:var(--ink)}.classroom-select select{width:100%;min-width:0;min-height:48px;padding:10px 13px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font:inherit}}
@media(max-width:760px){.admin-people.admin-team{gap:10px}.admin-team .admin-person .teacher-portrait{height:128px}.admin-team .admin-person-info{padding:9px}.admin-team .admin-person-info h3{font-size:.96rem}.admin-team .admin-person-info p,.admin-team .admin-person-info small{font-size:.75rem}.admin-team .assignment-list span{font-size:.72rem;padding:4px 5px;overflow-wrap:anywhere}.admin-team .admin-person-info>.row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;margin-top:12px}.admin-team .admin-person-info>.row .btn{width:100%;min-width:0;padding:8px 3px;font-size:.75rem;gap:4px}.admin-team .admin-person-info>.row .btn:last-child:nth-child(odd){grid-column:1/-1}.admin-team .admin-person-info>.row .btn svg{width:15px;height:15px}}
@media(max-width:360px){.admin-team .admin-person-info>.row .btn[data-act="edit-person"],.admin-team .admin-person-info>.row .btn[data-act="teacher-photo"]{font-size:0}.admin-team .admin-person-info>.row .btn svg{width:17px;height:17px}}
