@import "https://fonts.googleapis.com/css2?family=Zen+Kaku+Gothic+New:wght@400;500;700&display=swap";:root{--font-sans:"Zen Kaku Gothic New", -apple-system, "Hiragino Kaku Gothic ProN", sans-serif;font-family:var(--font-sans);color:#26221c;font-synthesis:none;text-rendering:optimizelegibility;background:#f6f1e6}*{box-sizing:border-box}html,body,#root{width:100%;min-width:320px;min-height:100%;margin:0}body{min-height:100vh;overflow:hidden}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline-offset:2px;outline:3px solid #a8842c59}:root{--ivory:#f6f1e6;--key:#fffdf6;--ink:#26221c;--ink-soft:#6f6759;--ink-faint:#a39a89;--line:#e6ddcc;--line-soft:#efe8d8;--brass:#a8842c;--brass-deep:#8a6b1f;--brass-soft:#f3e8cf;--pine:#3e6b4f;--pine-soft:#e4ecdf;--rose:#b4543e;--rose-soft:#f6e3dc;--shadow:0 2px 10px #3c301412;--radius:12px;--fs-9:9px;--fs-10:10px;--fs-11:11px;--fs-12:12px}@media (width>=881px){:root{--fs-9:11px;--fs-10:12px;--fs-11:13px;--fs-12:13px}}*{scrollbar-color:var(--line) transparent}h1,h2,h3,h4,p,dl,dd{margin:0}h1{font-family:var(--font-sans)}.brand-logo{object-fit:contain;display:block}.brand-lockup{flex-shrink:0;align-items:center;gap:9px;display:inline-flex}.brand-emblem{width:auto;height:26px;display:block}.brand-name{color:var(--ink);font-family:var(--font-sans);letter-spacing:.03em;white-space:nowrap;font-size:18px;font-weight:700;line-height:1}.brand-logo.entry{border:1px solid var(--line-soft);background:#fff;width:124px;height:124px}.eyebrow,.section-eyebrow{color:var(--brass-deep);font-size:var(--fs-11);letter-spacing:.14em;text-transform:uppercase;font-weight:700}.button{background:var(--ink);min-height:42px;color:var(--ivory);cursor:pointer;border:0;border-radius:9px;justify-content:center;align-items:center;padding:9px 18px;font-weight:700;text-decoration:none;display:inline-flex}.button:hover{background:var(--brass-deep)}.button.ghost{border:1px solid var(--line);background:var(--key);color:var(--ink-soft)}.button.small{min-height:34px;font-size:var(--fs-12);padding:6px 12px}.button:disabled{cursor:not-allowed;opacity:.48}.card,.guardian-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--key);box-shadow:var(--shadow)}.chip-row,.tag-row{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--line);background:var(--key);color:var(--ink-soft);font-size:var(--fs-11);cursor:pointer;border-radius:999px;padding:4px 10px}.chip.active{border-color:var(--ink);background:var(--ink);color:var(--ivory)}.status-badge{width:fit-content;font-size:var(--fs-10);border-radius:5px;padding:2px 8px;font-weight:700;display:inline-flex}.status-badge.todo,.status-badge.new{color:var(--rose);background:var(--rose-soft)}.status-badge.in_progress{color:var(--brass-deep);background:var(--brass-soft)}.status-badge.done,.status-badge.confirmed{color:var(--pine);background:var(--pine-soft)}.status-badge.declined,.status-badge.muted{color:var(--ink-faint);background:var(--line-soft)}.error-banner{background:var(--rose-soft);color:var(--rose);font-size:var(--fs-12);border-radius:8px;margin:10px 14px 0;padding:8px 12px;font-weight:700}.teacher-error{z-index:30;max-width:420px;position:absolute;right:18px}.entry-shell{-webkit-overflow-scrolling:touch;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:14px;width:min(560px,100% - 32px);height:100dvh;margin:0 auto;padding:48px 0;display:flex;overflow-y:auto}.entry-shell>:first-child{margin-top:auto}.entry-shell>:last-child{margin-bottom:auto}.entry-shell:before{content:"";z-index:-1;background:radial-gradient(circle at 72% 16%,#a8842c1a,#0000 30%),linear-gradient(135deg,#0000 0 74%,#26221c06 74%);position:fixed;inset:0}.brand-mark{background:var(--ink);width:62px;height:62px;color:var(--brass-soft);font:700 28px var(--font-sans);border-radius:50%;place-items:center;display:grid;box-shadow:0 8px 30px #26221c2e}.entry-shell h1{letter-spacing:.03em;max-width:500px;font-size:clamp(26px,6vw,40px);line-height:1.45}.entry-copy{max-width:520px;color:var(--ink-soft);line-height:1.9}.entry-note{color:var(--ink-faint);font-size:var(--fs-12)}.entry-teacher-link{color:var(--ink-faint);font-size:var(--fs-12);text-underline-offset:3px}.loading-line{background:var(--line);width:180px;height:2px;overflow:hidden}.loading-line:after{content:"";background:var(--brass);width:45%;height:100%;animation:1.2s ease-in-out infinite loading;display:block}@keyframes loading{0%{transform:translate(-100%)}to{transform:translate(320%)}}.turnstile-root{min-height:68px}.ios-install-guide{border:1px solid var(--brass);background:var(--key);border-radius:16px;width:100%;margin-top:10px;padding:20px;box-shadow:0 16px 48px #3c30141f}.ios-install-guide h2{font:700 21px var(--font-sans);margin:4px 0 6px}.ios-install-guide>p:not(.eyebrow):not(.install-caution){color:var(--ink-soft);font-size:var(--fs-12)}.ios-install-guide ol{gap:9px;margin:16px 0;padding:0;list-style:none;display:grid}.ios-install-guide li{border-top:1px solid var(--line-soft);align-items:center;gap:11px;padding-top:9px;display:flex}.guide-symbol{border:1px solid var(--brass);width:32px;height:32px;color:var(--brass-deep);font:700 14px var(--font-sans);border-radius:50%;flex-shrink:0;place-items:center;display:grid}.ios-install-guide li div{flex-direction:column;display:flex}.ios-install-guide li small{color:var(--ink-faint)}.install-caution{border-left:3px solid var(--rose);background:var(--rose-soft);color:var(--rose);font-size:var(--fs-10);margin-bottom:14px;padding:7px 10px;line-height:1.6}.push-control{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.push-control.compact{justify-content:flex-end}.push-control.compact .status-badge{text-overflow:ellipsis;white-space:nowrap;vertical-align:middle;max-width:200px;line-height:1.6;display:inline-block;overflow:hidden}.invite-guidance{gap:12px;margin-bottom:0;display:grid}.invite-guidance>h2{margin-bottom:0}.invite-guidance>p{color:var(--ink-soft);font-size:var(--fs-12);line-height:1.75}.invite-guidance textarea{resize:vertical;field-sizing:content;border:1px solid var(--line);background:var(--ivory);width:100%;min-width:0;color:var(--ink);font:inherit;overflow-wrap:anywhere;border-radius:9px;padding:10px}.invite-guidance>.button{width:100%;min-height:44px}.help-copy{color:var(--ink-faint);font-size:var(--fs-11);flex-basis:100%;line-height:1.7}.thread-view{background:var(--ivory);flex-direction:column;height:100%;min-height:0;display:flex}.share-note{border:1px dashed var(--line);background:var(--key);color:var(--ink-soft);font-size:var(--fs-11);border-radius:8px;align-self:center;margin:8px 12px 0;padding:5px 12px}.thread-scroll{flex-direction:column;flex:1;min-height:0;padding:20px 24px;display:flex;overflow-y:auto}.day-separator{border:1px solid var(--line-soft);background:var(--key);width:fit-content;color:var(--ink-faint);font-size:var(--fs-11);border-radius:999px;margin:14px auto 9px;padding:2px 12px}.message-block{flex-direction:column;display:flex}.message{flex-direction:column;width:fit-content;max-width:68%;margin:3px 0 7px;display:flex}.message.in{align-self:flex-start}.message.out{align-self:flex-end;align-items:flex-end}.bubble{border:1px solid var(--line-soft);background:var(--key);box-shadow:var(--shadow);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:14px 14px 14px 4px;padding:9px 14px;font-size:13.5px}.message.out .bubble{background:var(--brass-soft);border-color:#e8d9b4;border-radius:14px 14px 4px}.stamp{color:var(--ink-faint);font-size:var(--fs-10);padding:2px 4px 0}.stamp b{color:var(--pine)}.empty-thread{color:var(--ink-faint);font-size:var(--fs-12);margin:auto}.composer-shell{border-top:1px solid var(--line);background:var(--key);flex-shrink:0}.composer{align-items:flex-end;gap:8px;padding:10px 16px 14px;display:flex}.composer textarea{resize:none;border:1px solid var(--line);background:var(--ivory);height:44px;color:var(--ink);border-radius:10px;flex:1;padding:9px 12px}.send-button{background:var(--ink);width:54px;height:44px;color:var(--ivory);font-size:var(--fs-12);cursor:pointer;border:0;border-radius:10px;font-weight:700}.send-button:disabled{opacity:.4}.file-input{display:none}.attach-button{border:1px solid var(--line);background:var(--key);width:44px;height:44px;color:var(--ink-soft);font-size:var(--fs-11);cursor:pointer;border-radius:10px;font-weight:700}.composer-chips{scrollbar-width:thin;gap:6px;padding:8px 16px 0;display:flex;overflow-x:auto}.composer-chips button{border:1px solid var(--line);background:var(--ivory);max-width:220px;color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-10);cursor:pointer;border-radius:999px;flex:none;padding:5px 10px;overflow:hidden}.composer-error{color:var(--rose);font-size:var(--fs-10);padding:6px 16px 0;font-weight:700}.request-card{border:1.5px solid var(--brass);background:var(--key);min-width:min(360px,75vw);box-shadow:var(--shadow);border-radius:14px 14px 14px 4px;overflow:hidden}.request-card.redacted{border-color:var(--line)}.request-card header{background:var(--brass-soft);color:var(--brass-deep);font-size:var(--fs-12);justify-content:space-between;align-items:center;gap:12px;padding:7px 14px;font-weight:700;display:flex}.request-card.redacted header{background:var(--line-soft);color:var(--ink-soft)}.request-card dl{padding:9px 14px}.request-card dl div,.detail-list div{font-size:var(--fs-12);gap:8px;padding:2px 0;display:flex}.request-card dt,.detail-list dt{width:72px;color:var(--ink-faint);flex-shrink:0}.request-card dd,.detail-list dd{overflow-wrap:anywhere;font-weight:500}.request-actions{gap:7px;padding:0 14px 12px;display:flex}.request-resolution{border-top:1px solid var(--line-soft);padding-top:10px}.request-resolution label{color:var(--ink-faint);font-size:var(--fs-11);grid-template-columns:68px 1fr;align-items:center;gap:8px;padding:0 14px 10px;font-weight:700;display:grid}.request-resolution input{border:1px solid var(--line);background:var(--ivory);min-width:0;color:var(--ink);border-radius:7px;padding:6px 8px}.file-card{border:1px solid var(--line-soft);background:var(--key);box-shadow:var(--shadow);border-radius:12px;align-items:center;gap:10px;padding:10px 14px;display:flex}.file-card>span:nth-child(2){flex:1;min-width:0}.file-card b{overflow-wrap:anywhere}.file-actions{flex-direction:column;align-items:end;gap:5px;display:flex}.file-actions a,.file-actions button{border:0;border-bottom:1px solid var(--brass);color:var(--brass-deep);font:700 var(--fs-10) var(--font-sans);cursor:pointer;background:0 0;padding:0;text-decoration:none}.file-expired{color:var(--ink-faint);font-size:var(--fs-10)}.file-icon{background:var(--rose-soft);width:38px;height:38px;color:var(--rose);font-size:var(--fs-10);border-radius:8px;place-items:center;font-weight:700;display:grid}.file-card small,.youtube-card small{color:var(--ink-faint);font-size:var(--fs-10);display:block}.youtube-card{border:1px solid var(--line);background:var(--key);color:var(--ink);border-radius:12px;grid-template-columns:44px 1fr;padding:10px;text-decoration:none;display:grid}.youtube-card>span{color:var(--rose);grid-row:1/3;place-items:center;font-size:22px;display:grid}.guardian-app{background:var(--ivory);flex-direction:column;width:min(430px,100%);height:100dvh;margin:auto;display:flex;overflow:hidden;box-shadow:0 0 50px #26221c1f}.guardian-header{border-bottom:1px solid var(--line);background:var(--key);align-items:center;gap:12px;min-height:58px;padding:10px 16px;display:flex}.guardian-header>span{color:var(--ink-faint);font-size:var(--fs-11);margin-left:auto}.guardian-body{flex:1;min-height:0;overflow-y:auto}.guardian-page{padding:16px 14px 24px}.home-hint{border:1.5px dashed var(--brass);background:var(--brass-soft);font-size:var(--fs-12);border-radius:12px;margin-bottom:16px;padding:12px 14px;line-height:1.8}.home-hint b{color:var(--brass-deep)}.section-eyebrow{color:var(--ink-faint);margin:16px 2px 8px}.guardian-card{text-align:left;width:100%;margin-bottom:12px;padding:14px 16px}button.guardian-card{border:1px solid var(--line);color:var(--ink);cursor:pointer}.talk-link{align-items:center;gap:12px;display:flex}.talk-link>span:last-child{flex-direction:column;min-width:0;display:flex}.talk-link small{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.round-icon{background:var(--brass-soft);width:34px;height:34px;color:var(--brass-deep);border-radius:8px;flex-shrink:0;place-items:center;display:grid}.guardian-tabs{min-height:calc(62px + env(safe-area-inset-bottom));border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);background:var(--key);display:flex}.guardian-tabs button{color:var(--ink-faint);font-size:var(--fs-10);cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;align-items:center;gap:2px;padding:7px 0;font-weight:700;display:flex}.guardian-tabs button svg{width:23px;height:23px}.guardian-tabs button.active{color:var(--ink)}.guardian-body>.thread-view{height:100%}.guardian-request-actions{border-bottom:1px solid var(--line);background:var(--key);grid-template-columns:1fr 1fr;gap:8px;padding:9px 12px;display:grid}.guardian-request-actions button{border:1px solid var(--brass);background:var(--brass-soft);color:var(--brass-deep);font-size:var(--fs-11);cursor:pointer;border-radius:9px;padding:8px 10px;font-weight:700}.request-modal{border:1px solid var(--line);background:var(--key);border-radius:16px;width:min(420px,100%);max-height:calc(100dvh - 32px);padding:20px;overflow-y:auto;box-shadow:0 24px 80px #14100847}.request-modal>header{justify-content:space-between;align-items:flex-start;margin-bottom:16px;display:flex}.request-modal>header h2{margin-top:3px;font-size:19px}.request-modal>header>button{color:var(--ink-faint);cursor:pointer;background:0 0;border:0;font-size:24px}.request-modal>label{color:var(--ink-soft);font-size:var(--fs-11);flex-direction:column;gap:6px;margin-top:13px;font-weight:700;display:flex}.request-modal input,.request-modal select,.request-modal textarea{border:1px solid var(--line);background:var(--ivory);width:100%;color:var(--ink);border-radius:9px;padding:9px 10px}.request-modal textarea{resize:vertical;min-height:82px}.request-modal .request-toggle{border:1px solid var(--line-soft);background:var(--brass-soft);border-radius:9px;flex-direction:row;align-items:center;padding:10px}.request-modal .request-toggle input{width:auto;accent-color:var(--brass-deep)}.desired-slots{border:1px solid var(--line);border-radius:10px;margin:14px 0 0;padding:10px}.desired-slots legend{color:var(--ink-soft);font-size:var(--fs-11);padding:0 5px;font-weight:700}.desired-slots>div{gap:6px;margin-bottom:7px;display:flex}.desired-slots>div button,.add-slot{color:var(--rose);font-size:var(--fs-10);cursor:pointer;background:0 0;border:0;font-weight:700}.desired-slots .add-slot{color:var(--brass-deep)}.request-modal footer{justify-content:flex-end;gap:8px;margin-top:18px;display:flex}.request-modal-error{background:var(--rose-soft);color:var(--rose);font-size:var(--fs-11);border-radius:8px;margin-top:12px;padding:8px 10px;font-weight:700}.notice-card{position:relative}.notice-card h2,.guardian-card h2{margin-bottom:8px;font-size:14px}.notice-card p{color:var(--ink-soft);font-size:var(--fs-12);margin-top:8px}.notice-list{color:var(--ink-soft);font-size:var(--fs-12);flex-direction:column;gap:10px;display:flex}.menu-links{color:var(--ink-soft);font-size:var(--fs-12);flex-direction:column;gap:8px;display:flex}.guardian-editor-group{border:1px solid var(--line);border-radius:10px;margin:12px 0;padding:10px}.guardian-editor-group legend{color:var(--brass-deep);font-size:var(--fs-11);padding:0 5px;font-weight:700}.guardian-editor-group label{color:var(--ink-soft);font-size:var(--fs-10);flex-direction:column;gap:4px;margin-top:8px;font-weight:700;display:flex}.readonly-family-fields{border-left:3px solid var(--line);background:var(--ivory);font-size:var(--fs-11);flex-direction:column;gap:4px;padding:9px 11px;display:flex}.readonly-family-fields small{color:var(--ink-faint);line-height:1.6}.page-loading{height:100%;color:var(--ink-faint);place-items:center;display:grid}.teacher-app{background:var(--ivory);flex-direction:column;height:100dvh;display:flex;overflow:hidden}.teacher-topbar{z-index:20;border-bottom:1px solid var(--line);background:var(--key);align-items:center;gap:22px;min-height:54px;padding:8px 20px;display:flex}.teacher-topbar nav{align-self:stretch;display:flex}.teacher-topbar nav button{color:var(--ink-soft);font-size:var(--fs-12);cursor:pointer;background:0 0;border:0;padding:0 16px;font-weight:700;position:relative}.teacher-topbar nav button.active:after{content:"";background:var(--brass);height:2px;position:absolute;bottom:-8px;left:14px;right:14px}.teacher-identity{color:var(--ink-faint);font-size:var(--fs-11);align-items:center;gap:10px;margin-left:auto;display:flex}.teacher-content{flex:1;min-height:0;overflow:hidden}.teacher-mobile-tabs{display:none}.today-page{height:100%;padding:26px 32px 48px;overflow-y:auto}.today-page>h1{font-size:22px}.today-date{color:var(--ink-faint);font-size:var(--fs-12);letter-spacing:.08em}.lead{color:var(--ink-soft);font-size:var(--fs-12);margin-top:2px}.stats{flex-wrap:wrap;gap:10px;margin:16px 0 20px;display:flex}.stat{border:1px solid var(--line);border-left:4px solid var(--brass);background:var(--key);min-width:155px;box-shadow:var(--shadow);border-radius:10px;flex-direction:column;padding:10px 16px;display:flex}.stat.warn{border-left-color:var(--rose)}.stat.placeholder{border-left-color:var(--line)}.stat b{font:700 22px var(--font-sans)}.stat span{color:var(--ink-soft);font-size:var(--fs-11)}.stat-link{cursor:pointer;text-align:left;font:inherit;color:inherit}.stat-link small{color:var(--brass-deep);font-size:var(--fs-10);margin-top:3px}.notify-chip{border-style:dashed}.today-board{grid-template-columns:repeat(3,1fr);align-items:start;gap:14px;max-width:1100px;display:grid}.board-column>header{border-bottom:2px solid var(--line);color:var(--ink-soft);font-size:var(--fs-12);letter-spacing:.1em;align-items:center;gap:8px;padding:0 4px 8px;font-weight:700;display:flex}.board-column>header b{color:var(--ink);font:700 15px var(--font-sans);margin-left:auto}.dot{border-radius:50%;width:9px;height:9px}.dot.new{background:var(--rose)}.dot.in_progress{background:var(--brass)}.dot.done{background:var(--pine)}.work-card{border:1px solid var(--line);border-left:4px solid var(--rose);background:var(--key);box-shadow:var(--shadow);border-radius:10px;margin-top:10px;padding:12px 14px}.work-card.in_progress{border-left-color:var(--brass)}.work-card.done{border-left-color:var(--pine);opacity:.82}.work-kind{color:var(--ink-soft);font-size:var(--fs-11);font-weight:700}.work-card h2{margin:4px 0 2px;font-family:inherit;font-size:13px}.work-card>p:not(.work-kind){color:var(--ink-soft);font-size:var(--fs-12)}.work-actions{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.work-card>small{color:var(--ink-faint);font-size:var(--fs-10);margin-top:6px;display:block}.empty-column{border:1.5px dashed var(--line);color:var(--ink-faint);text-align:center;font-size:var(--fs-12);border-radius:10px;margin-top:10px;padding:14px}.inbox-layout{min-width:0;height:100%;display:flex}.inbox-list{border-right:1px solid var(--line);background:var(--key);flex-direction:column;flex-shrink:0;width:292px;display:flex}.inbox-search{border-bottom:1px solid var(--line-soft);padding:13px 14px 10px}.inbox-search h1{margin-bottom:8px;font-size:18px}.inbox-search input{border:1px solid var(--line);background:var(--ivory);width:100%;color:var(--ink);border-radius:8px;padding:8px 10px}.inbox-search .chip-row{margin-top:9px}.tag-filters{padding-top:3px}.family-list{flex:1;overflow-y:auto}.family-row{border:0;border-bottom:1px solid var(--line-soft);width:100%;color:var(--ink);text-align:left;cursor:pointer;background:0 0;align-items:center;gap:10px;padding:11px 14px;display:flex}.family-row:hover{background:var(--ivory)}.family-row.selected{background:var(--brass-soft)}.avatar{background:var(--ink);width:34px;height:34px;color:var(--ivory);border-radius:50%;flex-shrink:0;place-items:center;font-size:13px;font-weight:700;display:grid}.family-row-body{flex-direction:column;flex:1;min-width:0;display:flex}.family-row-body b{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.family-row-body b small{color:var(--ink-faint);font-weight:400}.family-row-body>span{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-12);overflow:hidden}.status-dot{background:var(--pine);border-radius:50%;width:8px;height:8px}.row-request-flag{background:var(--brass-soft);color:var(--brass-deep);font-size:var(--fs-10);border-radius:5px;flex-shrink:0;padding:2px 6px;font-weight:700}.status-dot.new{background:var(--rose)}.status-dot.in_progress{background:var(--brass)}.status-dot.none{background:var(--line)}.list-empty{color:var(--ink-faint);text-align:center;font-size:var(--fs-12);padding:20px}.inbox-thread{flex-direction:column;flex:1;min-width:280px;display:flex}.thread-header{border-bottom:1px solid var(--line);background:var(--key);align-items:center;gap:12px;min-height:62px;padding:10px 16px;display:flex}.thread-header>div{flex:1;min-width:0}.thread-header h2{font-size:14px}.thread-header p{color:var(--ink-faint);text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-11);overflow:hidden}.thread-header select{border:1px solid var(--line);background:var(--key);color:var(--ink-soft);font-size:var(--fs-11);border-radius:8px;padding:5px 8px;font-weight:700}.back-button{color:var(--ink-soft);background:0 0;border:0;font-size:20px;display:none}.inbox-thread>.thread-view{flex:1;min-height:0}.thread-placeholder{color:var(--ink-faint);text-align:center;margin:auto}.thread-placeholder span{color:var(--line);font-size:40px}.family-chart{border-left:1px solid var(--line);background:var(--key);flex-shrink:0;width:312px;padding:18px 16px 40px;display:none;overflow-y:auto}.family-chart.open{display:block}.chart-head{align-items:center;gap:10px;display:flex}.chart-head>div:nth-child(2){flex:1}.chart-head h2{font-size:15px}.chart-head p{color:var(--ink-faint);font-size:var(--fs-11)}.chart-head button{color:var(--ink-soft);cursor:pointer;background:0 0;border:0;font-size:22px;display:none}.chart-note{background:var(--ivory);color:var(--ink-faint);font-size:var(--fs-11);border-radius:8px;margin:8px 0 14px;padding:6px 10px}.family-chart section{margin-bottom:16px}.family-chart section>h3{border-bottom:1px solid var(--line-soft);color:var(--ink-faint);font-size:var(--fs-11);letter-spacing:.12em;margin-bottom:8px;padding-bottom:4px}.student-card{border:1px solid var(--line-soft);background:var(--ivory);border-radius:10px;margin-bottom:8px;padding:10px 12px}.student-card.locked{background:var(--line-soft);opacity:.78}.student-card h4{margin-bottom:4px;font-size:13px}.student-card p{color:var(--ink-faint);font-size:var(--fs-11)}.readonly-note{border:1px solid var(--line);background:var(--ivory);min-height:60px;font-size:var(--fs-12);white-space:pre-wrap;border-radius:8px;padding:8px 10px}.chart-note-editor{resize:vertical;border:1px solid var(--line);background:var(--ivory);width:100%;min-height:96px;color:var(--ink);font-size:var(--fs-12);border-radius:8px;padding:8px 10px;line-height:1.7}.chart-note-editor+.button{margin-top:7px}.chart-message{color:var(--pine);font-size:var(--fs-10);margin-top:6px}.chart-tags{border:1px solid var(--line-soft);border-radius:8px;flex-direction:column;gap:5px;margin-top:9px;padding:8px;display:flex}.chart-tags legend{color:var(--ink-faint);font-size:var(--fs-9);padding:0 4px}.chart-tags label{color:var(--ink-soft);font-size:var(--fs-10);align-items:center;gap:6px;display:flex}.chart-tags input{accent-color:var(--pine)}.chart-scrim{display:none}.settings-page{height:100%;padding:28px 32px;overflow-y:auto}.settings-page .card{max-width:680px;margin:10px 0 16px;padding:20px}.settings-page h1{margin-bottom:12px;font-size:20px}.static-skeleton p{color:var(--ink-soft);line-height:1.8}.roster-page{background:linear-gradient(90deg, #a8842c09 1px, transparent 1px), var(--ivory);background-size:34px 34px;height:100%;padding:26px 30px 56px;overflow-y:auto}.roster-heading{justify-content:space-between;align-items:end;gap:24px;max-width:1500px;margin:0 auto 16px;display:flex}.roster-heading h1{margin:3px 0;font-size:26px}.roster-heading>div:first-child>p:last-child{color:var(--ink-soft);font-size:var(--fs-12)}.roster-heading-actions{gap:8px;display:flex}.roster-toolbar{border:1px solid var(--line);background:var(--key);border-radius:11px 11px 0 0;flex-wrap:wrap;align-items:center;gap:10px;max-width:1500px;margin:auto;padding:10px 12px;display:flex}.roster-toolbar input{border:1px solid var(--line);background:var(--ivory);border-radius:8px;width:min(360px,100%);padding:8px 10px}.roster-toolbar>span{color:var(--ink-faint);font-size:var(--fs-10);margin-left:auto}.roster-table-wrap{border:1px solid var(--line);background:var(--key);border-top:0;max-width:1500px;margin:auto;overflow-x:auto;box-shadow:0 14px 44px #3c301414}.roster-table{min-width:1240px}.roster-table-head,.roster-table-row{grid-template-columns:105px 170px 115px 170px 100px 165px 90px minmax(190px,1fr);align-items:center;gap:10px;display:grid}.roster-table-head{z-index:2;border-bottom:2px solid var(--ink);background:var(--ink);color:var(--ivory);font-size:var(--fs-9);letter-spacing:.08em;padding:8px 12px;font-weight:700;position:sticky;top:0}.roster-table-row{border-bottom:1px solid var(--line-soft);min-height:70px;font-size:var(--fs-11);padding:9px 12px}.roster-table-row:nth-child(odd){background:#f6f1e66b}.roster-table-row>span{flex-direction:column;gap:4px;min-width:0;display:flex}.roster-table-row small{color:var(--ink-faint);line-height:1.45}.roster-table-row select{border:1px solid var(--line);background:var(--key);min-width:0;color:var(--ink-soft);font-size:var(--fs-10);border-radius:6px;padding:4px 5px}.roster-student-link,.roster-family-link{min-width:0;color:var(--ink);text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;padding:0;display:flex}.roster-student-link b{font:700 14px var(--font-sans)}.roster-family-link b{font-weight:700}.roster-family-link .ditto{color:var(--brass);font:700 20px var(--font-sans)}.onboarding-badge{background:var(--line-soft);width:fit-content;color:var(--ink-soft);font-size:var(--fs-9);white-space:nowrap;border-radius:999px;padding:3px 8px;font-weight:700;display:inline-flex}.onboarding-badge.invited{background:var(--brass-soft);color:var(--brass-deep)}.onboarding-badge.accepted{border:1px solid var(--pine);background:var(--key);color:var(--pine)}.onboarding-badge.subscribed{background:var(--pine);color:#fff}.onboarding-badge.attention{background:var(--rose-soft);color:var(--rose)}.roster-actions{flex-wrap:wrap;align-items:center;flex-direction:row!important}.roster-actions>button{border:0;border-bottom:1px solid var(--brass);color:var(--brass-deep);font-size:var(--fs-9);cursor:pointer;background:0 0;padding:2px 0;font-weight:700}.roster-actions>button:disabled{opacity:.45}.roster-actions select{max-width:82px}.roster-result{white-space:normal;overflow-wrap:anywhere;flex-basis:100%;min-width:0;max-width:100%;color:var(--pine)!important}.roster-empty{color:var(--ink-faint);text-align:center;padding:30px}.roster-modal{border:1px solid var(--line);background:var(--key);border-radius:15px;width:min(820px,100%);max-height:calc(100dvh - 48px);padding:22px;overflow-y:auto;box-shadow:0 24px 80px #14100847}.roster-modal>header{justify-content:space-between;align-items:start;display:flex}.roster-modal>header h2{margin-top:3px;font-size:19px}.roster-modal>header>button{color:var(--ink-faint);cursor:pointer;background:0 0;border:0;font-size:24px}.roster-modal footer{justify-content:flex-end;gap:8px;margin-top:17px;display:flex}.new-roster-grid{grid-template-columns:repeat(3,1fr);gap:11px;margin-top:16px;display:grid}.new-roster-grid label{color:var(--ink-soft);font-size:var(--fs-10);flex-direction:column;gap:4px;font-weight:700;display:flex}.new-roster-grid input,.new-roster-grid select{border:1px solid var(--line);background:var(--ivory);border-radius:7px;min-width:0;padding:8px}.modal-message{color:var(--pine);font-size:var(--fs-11);margin-top:12px;font-weight:700}.modal-message.bad{color:var(--rose)}.invite-qr-modal{border:1px solid var(--line);background:var(--key);width:min(620px,100%);max-height:calc(100dvh - 32px);padding:22px;overflow-y:auto;box-shadow:0 24px 80px #1410084d}.invite-qr-modal>header{justify-content:space-between;align-items:start;gap:16px;display:flex}.invite-qr-modal>header h2{margin-top:4px;font-size:20px}.invite-qr-modal>header>button{color:var(--ink-faint);cursor:pointer;background:0 0;border:0;font-size:26px}.invite-qr-modal>p{color:var(--ink-soft);font-size:var(--fs-11);margin-top:10px}.invite-qr-paper{color:#26221c;text-align:center;background:#fff;border:1px solid #d8d2c7;width:min(390px,100%);margin:18px auto 10px;padding:18px}.invite-qr-paper>p{font-size:var(--fs-11);letter-spacing:.08em;margin-bottom:8px;font-weight:700}.invite-qr-paper>b{margin-top:7px;font-size:16px;display:block}.invite-qr-svg{width:min(340px,100%);margin:auto}.invite-qr-svg svg{width:100%;height:auto;display:block}.invite-qr-loading{aspect-ratio:1;background:repeating-linear-gradient(45deg,#f4f1eb 0 8px,#fff 8px 16px);width:min(340px,80vw);margin:auto}.invite-qr-note{text-align:center}.invite-url{overflow-wrap:anywhere;border:1px solid var(--line);background:var(--ivory);color:var(--ink-faint);font-size:var(--fs-9);padding:8px;display:block}.invite-qr-modal footer{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:14px;display:flex}.import-modal{width:min(760px,100%)}.import-rule{border-left:3px solid var(--brass);background:var(--brass-soft);color:var(--brass-deep);font-size:var(--fs-11);margin:13px 0;padding:8px 11px}.csv-drop{border:1.5px dashed var(--brass);background:var(--ivory);color:var(--brass-deep);cursor:pointer;border-radius:10px;justify-content:center;padding:18px;font-weight:700;display:flex}.csv-drop input{display:none}.import-modal details{color:var(--ink-soft);font-size:var(--fs-10);margin-top:10px}.import-modal code{background:var(--line-soft);border-radius:6px;margin-top:5px;padding:7px;display:block;overflow-x:auto}.import-summary{grid-template-columns:auto 1fr auto 1fr;align-items:baseline;gap:5px 9px;margin:14px 0;display:grid}.import-summary b{font:700 24px var(--font-sans)}.import-summary b.bad{color:var(--rose)}.import-summary span{color:var(--ink-faint);font-size:var(--fs-10)}.csv-errors{border:1px solid var(--rose);background:var(--rose-soft);border-radius:8px;max-height:210px;padding:8px 10px;overflow-y:auto}.csv-errors p{color:var(--rose);font-size:var(--fs-10);border-top:1px solid #b4543e26;gap:9px;padding:5px 0;display:flex}.csv-errors p:first-child{border:0}.csv-errors b{min-width:105px}.csv-preview{border:1px solid var(--line);border-radius:8px;padding:7px 10px}.csv-preview>div{border-top:1px solid var(--line-soft);font-size:var(--fs-10);grid-template-columns:30px 100px 120px 1fr;gap:8px;padding:5px 0;display:grid}.csv-preview>div:first-child{border:0}.csv-preview span{color:var(--ink-faint)}.announcement-page{background:radial-gradient(circle at 88% 4%, #a8842c17, transparent 24%), var(--ivory);height:100%;padding:28px 32px 64px;overflow-y:auto}.announcement-heading{justify-content:space-between;align-items:end;max-width:1180px;margin:0 auto 18px;display:flex}.announcement-heading h1{margin:3px 0;font-size:26px}.announcement-heading p:last-child{color:var(--ink-soft);font-size:var(--fs-12)}.safety-mark{border:1px solid var(--brass);background:var(--key);width:76px;height:76px;color:var(--brass-deep);box-shadow:var(--shadow);border-radius:50%;align-content:center;place-items:center;display:grid}.safety-mark b{font:700 24px var(--font-sans);line-height:1}.safety-mark span{font-size:var(--fs-9);letter-spacing:.1em}.announcement-message{border-left:3px solid var(--brass);background:var(--brass-soft);max-width:1180px;color:var(--brass-deep);font-size:var(--fs-12);margin:0 auto 12px;padding:9px 13px}.mobile-read-note{display:none}.compose-card{border:1px solid var(--line);background:var(--key);border-radius:14px;grid-template-columns:72px 1fr;max-width:1180px;margin:auto;display:grid;overflow:hidden;box-shadow:0 12px 38px #3c301414}.compose-rail{background:var(--ink);color:var(--ivory);flex-direction:column;align-items:center;gap:7px;padding:24px 8px;display:flex}.compose-rail span{width:27px;height:27px;color:var(--brass-soft);font:700 var(--fs-10) var(--font-sans);border:1px solid #ffffff59;border-radius:50%;place-items:center;display:grid}.compose-rail b{font-size:var(--fs-10);letter-spacing:.12em;writing-mode:vertical-rl;margin-bottom:22px;font-weight:500}.compose-main{padding:4px 26px 24px}.compose-main fieldset{border:0;border-bottom:1px solid var(--line-soft);margin:0;padding:22px 0}.compose-main legend{color:var(--brass-deep);font:700 15px var(--font-sans);padding:0}.compose-main label{color:var(--ink-soft);font-size:var(--fs-11);flex-direction:column;gap:5px;font-weight:700;display:flex}.compose-main input,.compose-main select,.compose-main textarea{border:1px solid var(--line);background:var(--ivory);width:100%;color:var(--ink);font:inherit;border-radius:8px;padding:9px 10px;font-weight:400}.compose-main textarea{resize:vertical;line-height:1.8}.compose-main small{color:var(--ink-faint);font-size:var(--fs-10);font-weight:400}.form-grid{grid-template-columns:repeat(3,minmax(140px,1fr));gap:12px;margin-top:12px;display:grid}.weekday-row{gap:5px;margin:12px 0 7px;display:flex}.weekday-row button{border:1px solid var(--line);background:var(--key);width:31px;height:31px;color:var(--ink-soft);cursor:pointer;border-radius:50%}.weekday-row button.selected{border-color:var(--ink);background:var(--ink);color:var(--ivory)}.file-drop{border:1px dashed var(--brass);background:var(--brass-soft);cursor:pointer;border-radius:8px;width:fit-content;margin-top:12px;padding:8px 12px;color:var(--brass-deep)!important}.file-drop input{display:none}.upload-list{flex-wrap:wrap;gap:7px;margin-top:9px;display:flex}.upload-list>span{border:1px solid var(--line);background:var(--key);font-size:var(--fs-11);border-radius:7px;flex-direction:column;padding:6px 9px;display:flex}.upload-list .failed{border-color:var(--rose);color:var(--rose)}.toggle-line{align-items:center;margin:10px 0;color:var(--ink)!important;font-size:var(--fs-12)!important;flex-direction:row!important}.toggle-line input{width:auto;accent-color:var(--pine)}.toggle-line.muted{color:var(--ink-faint)!important}.option-panel{border-left:3px solid var(--brass);background:var(--brass-soft);grid-template-columns:1fr 1fr;gap:10px;margin:7px 0 14px 22px;padding:10px 12px;display:grid}.compose-actions{justify-content:flex-end;align-items:center;gap:14px;padding-top:18px;display:flex}.compose-actions span{color:var(--ink-faint);font-size:var(--fs-11)}.management-grid{grid-template-columns:1.2fr .8fr;gap:14px;max-width:1180px;margin:18px auto 0;display:grid}.management-card{border:1px solid var(--line);background:var(--key);min-width:0;box-shadow:var(--shadow);border-radius:12px;padding:18px}.management-card.wide{grid-column:1/-1}.management-card>header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.management-card h2{margin-top:2px;font-size:15px}.management-card>header>span{color:var(--ink-faint);font-size:var(--fs-11)}.management-table{overflow-x:auto}.table-head,.table-row{grid-template-columns:120px minmax(250px,1fr) 90px 80px 280px;align-items:center;gap:12px;min-width:880px;display:grid}.table-head{border-bottom:1px solid var(--line);color:var(--ink-faint);font-size:var(--fs-10);padding:7px 8px;font-weight:700}.table-row{border-bottom:1px solid var(--line-soft);font-size:var(--fs-11);padding:11px 8px}.table-row>span{flex-direction:column;gap:2px;display:flex}.table-row small{color:var(--ink-faint)}.alert-number{color:var(--rose);font-weight:700}.row-actions{flex-wrap:wrap;flex-direction:row!important}.row-actions button,.target-modal header button,.survey-modal header button,.preview-modal header button{border:0;border-bottom:1px solid var(--line);color:var(--brass-deep);font-size:var(--fs-10);cursor:pointer;background:0 0;padding:3px 0}.board-summary{position:relative;overflow:hidden}.pin-row{z-index:1;border-top:1px solid var(--line-soft);font-size:var(--fs-11);grid-template-columns:1fr auto;gap:3px 12px;padding:9px 0;display:grid;position:relative}.pin-row small{color:var(--rose);grid-column:1/-1}.dead-row{border-top:1px solid var(--line-soft);justify-content:space-between;align-items:center;gap:10px;padding:9px 0;display:flex}.dead-row span{font-size:var(--fs-11);flex-direction:column;display:flex}.dead-row small,.empty-management{color:var(--ink-faint);font-size:var(--fs-10)}.modal-backdrop{z-index:120;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#26221ca3;place-items:center;padding:24px;display:grid;position:fixed;inset:0;overflow-y:auto}.preview-modal,.confirm-modal,.target-modal,.survey-modal{border:1px solid var(--line);background:var(--key);border-radius:15px;width:min(680px,100%);max-height:calc(100dvh - 48px);padding:22px;overflow-y:auto;box-shadow:0 24px 80px #14100847}.preview-modal>header,.confirm-modal>header,.target-modal>header,.survey-modal>header{justify-content:space-between;align-items:start;display:flex}.preview-modal h2,.confirm-modal h2,.target-modal h2,.survey-modal h2{font-size:18px}.preview-modal footer,.confirm-modal footer{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.button.danger{background:var(--rose)}.four-checks{flex-wrap:wrap;gap:6px;margin:14px 0;display:flex}.four-checks span{background:var(--pine-soft);color:var(--pine);font-size:var(--fs-10);border-radius:999px;padding:5px 9px;font-weight:700}.history-title{color:var(--ink);font:700 var(--fs-11) var(--font-sans);text-align:left;text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:0}.history-preview{margin-top:14px}.history-file{justify-content:space-between;align-items:center;gap:10px;display:flex}.history-file b{overflow-wrap:anywhere;min-width:0}.history-file .file-actions{flex-direction:row;flex-shrink:0;gap:10px}.guardian-preview{border:1px solid var(--line);background:var(--ivory);border-radius:13px;width:min(390px,100%);margin:auto;padding:18px}.guardian-preview>small{color:var(--ink-faint)}.guardian-preview h3{font:700 18px var(--font-sans);margin:8px 0}.guardian-preview p{color:var(--ink-soft);white-space:pre-wrap;line-height:1.8}.preview-file{border:1px solid var(--line);background:var(--key);font-size:var(--fs-11);border-radius:8px;margin-top:12px;padding:8px 10px}.preview-file small{color:var(--rose);display:block}.snapshot-counts{gap:10px;margin:16px 0;display:flex}.snapshot-counts b{border-left:3px solid var(--brass);background:var(--brass-soft);min-width:100px;font:700 24px var(--font-sans);padding:8px 14px}.snapshot-counts small{font:500 var(--fs-10) var(--font-sans);margin-left:5px}.confirm-modal details,.survey-modal details{border:1px solid var(--line);border-radius:8px;padding:10px 12px}.snapshot-family{border-top:1px solid var(--line-soft);font-size:var(--fs-11);justify-content:space-between;gap:12px;padding:7px 2px;display:flex}.snapshot-family span{color:var(--ink-soft)}.confirm-facts{margin-top:12px}.confirm-facts>div{border-top:1px solid var(--line-soft);font-size:var(--fs-11);grid-template-columns:60px 1fr;padding:7px 0;display:grid}.confirm-facts dt{color:var(--ink-faint)}.target-modal{width:min(900px,100%)}.vocabulary-note{border-left:3px solid var(--pine);background:var(--pine-soft);color:var(--pine);font-size:var(--fs-10);margin:12px 0;padding:8px 11px}.target-status-row{border-top:1px solid var(--line-soft);font-size:var(--fs-10);grid-template-columns:minmax(160px,1fr) 120px 150px 70px;align-items:center;gap:10px;padding:9px 0;display:grid}.target-status-row>span:first-child{flex-direction:column;display:flex}.target-status-row small{color:var(--ink-faint)}.target-status-row .good{color:var(--pine)}.target-status-row .bad{color:var(--rose)}.target-status-row .muted{color:var(--ink-faint)}.survey-bar{font-size:var(--fs-11);grid-template-columns:90px 1fr 35px;align-items:center;gap:10px;margin:12px 0;display:grid}.survey-bar i{background:var(--line-soft);border-radius:999px;height:9px;overflow:hidden}.survey-bar i b{background:var(--pine);height:100%;display:block}.survey-bar.unanswered i b{background:var(--rose)}.survey-modal>.button{margin-top:14px}.inquiry-page{background:var(--ivory);height:100%;padding:28px 30px 72px;overflow-y:auto}.inquiry-page>*{max-width:880px;margin-left:auto;margin-right:auto}.inquiry-back{color:var(--brass-deep);font-size:var(--fs-11);cursor:pointer;background:0 0;border:0;margin-bottom:18px;padding:0;font-weight:700;display:block}.inquiry-heading{border-bottom:2px solid var(--ink);justify-content:space-between;align-items:end;gap:24px;margin-bottom:22px;padding-bottom:14px;display:flex}.inquiry-heading h1{margin:4px 0;font-size:28px}.inquiry-heading p:last-child{color:var(--ink-soft);font-size:var(--fs-11)}.inquiry-count{background:var(--rose-soft);color:var(--rose);font-size:var(--fs-11);white-space:nowrap;border-radius:999px;padding:7px 12px}.nav-count{background:var(--rose);color:#fff;min-width:17px;font-size:var(--fs-9);border-radius:999px;place-items:center;margin-left:6px;padding:2px 5px;display:inline-grid}.inquiry-form{border:1px solid var(--line);border-top:3px solid var(--ink);background:var(--key);margin-top:22px;padding:18px;box-shadow:0 12px 34px #3c301412}.new-inquiry-form{margin-bottom:30px}.inquiry-form>label{margin-bottom:8px;font-size:13px;font-weight:700;display:block}.inquiry-form textarea{resize:vertical;border:1px solid var(--line);background:var(--ivory);width:100%;color:var(--ink);border-radius:5px;padding:12px;line-height:1.8}.inquiry-form>div{justify-content:space-between;align-items:center;gap:14px;margin-top:10px;display:flex}.inquiry-form small{color:var(--ink-faint);font-size:var(--fs-9)}.inquiry-list{border-top:1px solid var(--ink)}.inquiry-list>button{border:0;border-bottom:1px solid var(--line);width:100%;color:var(--ink);text-align:left;cursor:pointer;background:0 0;grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:13px;padding:15px 4px;display:grid}.inquiry-list>button:hover{background:#ffffff9e}.inquiry-list>button>span:nth-child(2){flex-direction:column;gap:4px;min-width:0;display:flex}.inquiry-list>button>span:last-child{flex-direction:column;align-items:end;gap:4px;display:flex}.inquiry-list b{font-size:13px}.inquiry-list small{max-width:520px;color:var(--ink-faint);font-size:var(--fs-10);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.inquiry-list em{color:var(--ink-soft);font-size:var(--fs-9);font-style:normal;font-weight:700}.inquiry-status-dot{background:var(--line);border-radius:50%;width:7px;height:7px}.inquiry-status-dot.new{background:var(--rose)}.inquiry-status-dot.in_progress{background:var(--brass)}.inquiry-status-dot.done{background:var(--pine)}.inquiry-empty{border-bottom:1px solid var(--line);color:var(--ink-faint);font-size:var(--fs-11);padding:26px 4px}.inquiry-posts{gap:14px;display:grid}.inquiry-post{border:1px solid var(--line);background:var(--key);padding:18px}.inquiry-post.admin{border-left:4px solid var(--rose)}.inquiry-post header{border-bottom:1px solid var(--line-soft);align-items:center;gap:12px;padding-bottom:10px;display:flex}.inquiry-post header>span{color:var(--brass);font-size:var(--fs-10);letter-spacing:.1em;font-weight:700}.inquiry-post header>div{flex-direction:column;display:flex}.inquiry-post header b{font-size:var(--fs-11)}.inquiry-post header small{color:var(--ink-faint);font-size:var(--fs-9)}.inquiry-post>p{color:var(--ink-soft);white-space:pre-wrap;margin-top:14px;line-height:1.9}.inquiry-state-actions{justify-content:flex-end;margin-top:14px;display:flex}.representative-link{border-left:3px solid var(--rose)}.representative-link>p:not(.section-eyebrow){color:var(--ink-soft);font-size:var(--fs-11);margin:7px 0 14px;line-height:1.7}.response-waiting{background:var(--brass-soft);align-items:center;gap:12px;display:flex;border-color:var(--brass)!important}.response-waiting>span:last-child{flex-direction:column;display:flex}.response-waiting small{color:var(--ink-soft)}button.notice-card{position:relative;overflow:hidden}.notice-card.unread{border-left:4px solid var(--rose)}.notice-list button{border:0;border-bottom:1px solid var(--line-soft);color:var(--ink-soft);text-align:left;cursor:pointer;background:0 0;justify-content:space-between;gap:10px;padding:8px 0;display:flex}.notice-list button:last-child{border:0}.notice-list small{color:var(--ink-faint);white-space:nowrap}.notice-empty{color:var(--ink-faint);font-size:var(--fs-11)}.notice-back{color:var(--brass-deep);font-size:var(--fs-11);cursor:pointer;background:0 0;border:0;padding:0}.notice-body>small{color:var(--ink-faint)}.notice-body h1{margin:8px 0 14px;font-size:21px;line-height:1.5}.notice-body p{color:var(--ink-soft);white-space:pre-wrap;line-height:2}.attachment-card{align-items:center;gap:10px;display:flex}.attachment-type{background:var(--rose-soft);width:42px;height:42px;color:var(--rose);font-size:var(--fs-9);border-radius:7px;flex-shrink:0;place-items:center;font-weight:700;display:grid}.attachment-card>span:nth-child(2){flex-direction:column;flex:1;min-width:0;display:flex}.attachment-card b{text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-11);overflow:hidden}.attachment-card small{color:var(--ink-faint);font-size:var(--fs-9)}.attachment-card strong{color:var(--rose);font-size:var(--fs-10)}.attachment-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.attachment-preview-backdrop{z-index:180;padding:max(12px, env(safe-area-inset-top)) 12px max(12px, env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch;background:#14120fe0;position:fixed;inset:0;overflow-y:auto}.attachment-preview-panel{background:var(--key);border:1px solid #ffffff2e;flex-direction:column;width:min(980px,100%);min-height:calc(100dvh - 24px);margin:0 auto;display:flex}.attachment-preview-panel>header{top:max(0px, env(safe-area-inset-top));z-index:2;border-bottom:1px solid var(--line);background:var(--key);justify-content:space-between;align-items:start;gap:16px;padding:12px 16px;display:flex;position:sticky}.attachment-preview-panel>header h2{overflow-wrap:anywhere;font-size:14px}.attachment-preview-panel>header button{border:1px solid var(--line);background:var(--ivory);width:42px;height:42px;color:var(--ink);cursor:pointer;border-radius:50%;flex-shrink:0;font-size:24px}.attachment-preview-image{background:#171512;flex:1;place-items:start center;padding:12px;display:grid;overflow:auto}.attachment-preview-image img{background:#fff;max-width:100%;height:auto;display:block}.attachment-preview-panel>footer{border-top:1px solid var(--line);background:var(--key);justify-content:flex-end;gap:8px;padding:10px 16px;display:flex;position:sticky;bottom:0}.response-card{border-color:var(--brass)}.response-card>small{color:var(--ink-faint)}.response-options{gap:8px;margin-top:13px;display:flex}.response-options button{border:1px solid var(--line);background:var(--key);color:var(--ink);cursor:pointer;border-radius:8px;flex:1;padding:10px;font-weight:700}.response-options button.selected{border-color:var(--pine);background:var(--pine);color:#fff}.response-message{color:var(--pine);font-size:var(--fs-10);margin-top:8px}@media (width<=880px){body{overflow:hidden}input,textarea,select{font-size:16px!important}.teacher-topbar{min-height:50px;padding:8px 12px}.brand-emblem{height:22px}.brand-name{font-size:16px}.teacher-topbar nav,.teacher-identity>span,.teacher-topbar .push-control{display:none}.teacher-content{padding-bottom:calc(58px + env(safe-area-inset-bottom))}.teacher-mobile-tabs{z-index:60;min-height:calc(58px + env(safe-area-inset-bottom));border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);background:var(--key);display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 12px #3c301414}.teacher-mobile-tabs button{color:var(--ink-faint);font-size:var(--fs-11);background:0 0;border:0;flex:1;font-weight:700}.teacher-mobile-tabs button.active{color:var(--ink)}.today-page{padding:16px 14px 28px}.stats{gap:8px}.stat{min-width:calc(33.333% - 6px);padding:8px 10px}.stat b{font-size:18px}.stat span{font-size:var(--fs-9)}.today-board{grid-template-columns:1fr}.inbox-list{border:0;width:100%}.inbox-thread,.inbox-layout.thread-selected .inbox-list{display:none}.inbox-layout.thread-selected .inbox-thread{width:100%;display:flex}.back-button{display:block}.thread-header{gap:8px;padding:8px 10px}.thread-header select{max-width:105px}.thread-scroll{padding:14px 12px}.message{max-width:86%}.composer{padding:8px 10px calc(10px + env(safe-area-inset-bottom))}.composer-chips{padding-left:10px;padding-right:10px}.request-modal-backdrop{align-items:end;padding:0}.request-modal{width:100%;max-height:calc(92dvh - env(safe-area-inset-bottom));padding-bottom:calc(20px + env(safe-area-inset-bottom));border-radius:18px 18px 0 0}.family-chart{top:50px;right:0;bottom:calc(58px + env(safe-area-inset-bottom));z-index:80;border-left:1px solid var(--line);width:min(340px,92vw);position:fixed;box-shadow:-8px 0 28px #281e0a33}.chart-head button{display:block}.chart-scrim{inset:50px 0 calc(58px + env(safe-area-inset-bottom));z-index:70;background:#26221c59;border:0;display:block;position:fixed}.settings-page{padding:18px 14px}.roster-page{padding:16px 12px 28px}.roster-heading{align-items:start}.roster-heading h1{font-size:21px}.roster-heading>div:first-child>p:last-child{display:none}.roster-heading-actions{flex-direction:column}.roster-heading-actions .button{min-height:34px;font-size:var(--fs-10);padding:6px 10px}.roster-toolbar>span{display:none}.new-roster-grid{grid-template-columns:1fr 1fr}.roster-modal{max-height:calc(100dvh - 20px);padding:16px}.csv-preview>div{grid-template-columns:26px 90px 100px 1fr}.announcement-page{padding:16px 14px 28px}.announcement-heading{align-items:center}.announcement-heading h1{font-size:21px}.safety-mark{width:58px;height:58px}.mobile-read-note{border:1px solid var(--line);background:var(--key);color:var(--ink-soft);font-size:var(--fs-10);border-radius:8px;margin-bottom:12px;padding:9px 11px;display:block}.desktop-compose{display:none}.management-grid{grid-template-columns:1fr}.management-card.wide{grid-column:auto}.target-status-row{min-width:620px}.target-modal{overflow-x:auto}.modal-backdrop{padding:10px}.preview-modal,.confirm-modal,.target-modal,.survey-modal{max-height:calc(100dvh - 20px);padding:16px}.inquiry-page{padding:18px 14px 92px}.inquiry-heading{align-items:start}.inquiry-heading h1{font-size:22px}.inquiry-form{padding:14px}.inquiry-form>div{flex-direction:column;align-items:stretch}.inquiry-form .button{width:100%}.inquiry-list>button{grid-template-columns:9px minmax(0,1fr)}.inquiry-list>button>span:last-child{flex-direction:row;grid-column:2;align-items:start}.inquiry-post{padding:14px}}@media (width>=431px){.guardian-app{border-right:1px solid var(--line);border-left:1px solid var(--line)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media print{body *{visibility:hidden}.invite-qr-backdrop,.invite-qr-backdrop *{visibility:visible}.invite-qr-backdrop{background:#fff;padding:0;display:block;position:absolute;inset:0;overflow:visible}.invite-qr-modal{width:100%;max-height:none;box-shadow:none;border:0;padding:0;overflow:visible}.invite-qr-modal>header,.invite-qr-modal>p,.invite-qr-modal>code,.invite-qr-modal>footer{display:none}.invite-qr-paper{border:1px solid #aaa;width:150mm;margin:10mm auto;padding:12mm}}.composer-recipient{color:var(--text-muted,#645f58);font-size:var(--fs-12);margin:0 0 8px;padding:0 12px}.composer-recipient strong{color:var(--text,#38332d)}.latest-messages{color:#554b40;background:#fffaf2;border:1px solid #c8bcad;border-radius:24px;align-self:center;margin:6px 12px;padding:10px 18px;box-shadow:0 2px 8px #32281b14}.role-label{font-size:var(--fs-10);color:#736d64;margin-bottom:3px;display:block}.error-banner button{margin-left:10px;text-decoration:underline}.calendar-page{height:100%;padding:26px 30px 56px;overflow-y:auto}.calendar-heading{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:14px;display:flex}.calendar-heading h1{font-size:22px}.calendar-summary{color:var(--ink-soft);font-size:var(--fs-12);white-space:nowrap;margin:0}.calendar-summary b{color:var(--ink);font:700 20px var(--font-sans);margin:0 2px}.calendar-filter{gap:8px;margin:0 0 14px;padding-bottom:2px;display:flex;overflow-x:auto}.calendar-filter button{border:1px solid var(--line);background:var(--key);color:var(--ink-soft);font:700 var(--fs-12) var(--font-sans);cursor:pointer;border-radius:999px;flex-shrink:0;align-items:center;gap:6px;padding:6px 14px;display:inline-flex}.calendar-filter button small{color:var(--ink-faint);font-weight:500}.calendar-filter button.active{border-color:var(--ink);background:var(--ink);color:var(--key)}.calendar-filter button.active small{color:var(--brass-soft)}.calendar-filter i,.lesson-teacher i{background:var(--tone);border-radius:50%;flex-shrink:0;width:9px;height:9px}.tone-brass{--tone:var(--brass)}.tone-pine{--tone:var(--pine)}.tone-rose{--tone:var(--rose)}.tone-slate{--tone:#4f6b84}.tone-plum{--tone:#7d5a87}.calendar-day-tabs{display:none}.calendar-grid{border:1px solid var(--line);border-radius:var(--radius);background:var(--key);box-shadow:var(--shadow);overflow:hidden}.calendar-grid-head,.calendar-grid-body{grid-template-columns:52px repeat(var(--calendar-days,6), minmax(0, 1fr));display:grid}.calendar-grid-head{z-index:3;border-bottom:1px solid var(--line);background:var(--brass-soft);position:sticky;top:0}.calendar-col-head{border-left:1px solid var(--line);justify-content:center;align-items:baseline;gap:6px;padding:9px 4px;display:flex}.calendar-col-head b{font:700 15px var(--font-sans)}.calendar-col-head span{color:var(--brass-deep);font-size:var(--fs-11);font-weight:700}.calendar-grid-body,.calendar-grid-body>.calendar-gutter{position:relative}.calendar-gutter span{color:var(--ink-faint);font-size:var(--fs-11);font-variant-numeric:tabular-nums;position:absolute;right:8px;transform:translateY(-50%)}.calendar-gutter span:first-child{transform:none;top:2px!important}.calendar-col{border-left:1px solid var(--line);background-image:linear-gradient(to bottom, var(--line) 1px, transparent 1px), linear-gradient(to bottom, var(--line-soft) 1px, transparent 1px);background-size:100% var(--hour-px), 100% calc(var(--hour-px) / 2);position:relative}.calendar-event{z-index:1;border:0;border-left:4px solid var(--tone);background:color-mix(in srgb, var(--tone) 16%, #fff);color:var(--ink);text-align:left;cursor:pointer;border-radius:6px;flex-direction:column;gap:1px;padding:3px 6px;display:flex;position:absolute;overflow:hidden;box-shadow:0 1px 2px #3c30141f}.calendar-event:hover{z-index:2;background:color-mix(in srgb, var(--tone) 26%, #fff)}.calendar-event.paused{opacity:.5}.event-line{white-space:nowrap;align-items:baseline;gap:5px;min-width:0;display:flex}.event-line time{color:var(--ink-soft);font-size:var(--fs-11);font-variant-numeric:tabular-nums}.event-line b{text-overflow:ellipsis;font-size:13px;overflow:hidden}.event-course,.event-teacher{color:var(--ink-soft);font-size:var(--fs-10);text-overflow:ellipsis;white-space:nowrap;line-height:1.35;overflow:hidden}.event-teacher{color:color-mix(in srgb, var(--tone) 80%, #000);font-weight:700}.calendar-event.compact .event-teacher,.calendar-event.tiny .event-course{display:none}.lesson-card{border:1px solid var(--line);border-left:4px solid var(--tone,var(--brass));width:100%;color:var(--ink);text-align:left;cursor:pointer;background:#fff;border-radius:8px;flex-direction:column;gap:2px;padding:8px 10px;display:flex}.lesson-card.paused{opacity:.55}.lesson-student{align-items:center;gap:6px;font-size:14px;display:flex}.lesson-badge{background:var(--rose-soft);color:var(--rose);font-size:var(--fs-10);border-radius:999px;padding:0 6px}.lesson-course{color:var(--ink-soft);font-size:var(--fs-11);line-height:1.45}.lesson-teacher{color:var(--ink-soft);font-size:var(--fs-10);align-items:center;gap:5px;display:inline-flex}.calendar-flexible{border:1px solid var(--line);border-radius:var(--radius);background:var(--key);box-shadow:var(--shadow);margin-top:14px;overflow:hidden}.calendar-flexible>header{border-bottom:1px solid var(--line-soft);background:var(--brass-soft);align-items:baseline;gap:8px;padding:10px 12px;display:flex}.calendar-flexible>header b{font:700 15px var(--font-sans)}.calendar-flexible>header span{color:var(--brass-deep);font-size:var(--fs-11);font-weight:700}.calendar-flexible>header small{color:var(--ink-faint);font-size:var(--fs-10);margin-left:auto}.calendar-flexible-list{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;padding:10px;display:grid}.calendar-empty{color:var(--ink-faint);font-size:var(--fs-11);margin:0;padding:10px 12px}@media (width<=880px){.calendar-page{padding:16px 14px calc(84px + env(safe-area-inset-bottom))}.calendar-heading{flex-direction:column;align-items:flex-start;gap:4px}.calendar-day-tabs{z-index:5;background:var(--ivory);gap:6px;margin:0 -14px 10px;padding:8px 14px;display:flex;position:sticky;top:-16px;box-shadow:0 6px 10px -8px #3c301440}.calendar-day-tabs button{border:1px solid var(--line);background:var(--key);color:var(--ink-soft);font:700 15px var(--font-sans);border-radius:10px;flex-direction:column;flex:1;align-items:center;padding:6px 0;display:flex}.calendar-day-tabs button small{color:var(--ink-faint);font-size:var(--fs-10);font-weight:500}.calendar-day-tabs button.active{border-color:var(--ink);background:var(--ink);color:var(--key)}.calendar-day-tabs button.active small{color:var(--brass-soft)}.calendar-grid-head,.calendar-grid-body{grid-template-columns:46px 1fr}.calendar-col-head:not(.is-mobile-day),.calendar-col:not(.is-mobile-day){display:none}.calendar-flexible-list{grid-template-columns:1fr}.event-line b{font-size:14px}.teacher-mobile-tabs button{white-space:nowrap;font-size:var(--fs-10);padding:0 1px}}.composer-attachment{border:1px solid var(--line);background:var(--ivory);border-radius:12px;align-items:center;gap:10px;margin:8px 16px 0;padding:8px 10px;display:flex}.composer-attachment img{object-fit:cover;background:var(--line-soft);border-radius:8px;flex-shrink:0;width:52px;height:52px}.composer-attachment>span:nth-child(2){flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.composer-attachment b{text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-11);overflow:hidden}.composer-attachment small{color:var(--brass-deep);font-size:var(--fs-10);font-weight:700}.composer-attachment button{border:1px solid var(--line);background:var(--key);min-height:40px;color:var(--ink-soft);font-size:var(--fs-11);cursor:pointer;border-radius:999px;flex-shrink:0;padding:0 14px;font-weight:700}.file-card-action{width:100%;min-height:64px;color:inherit;font:inherit;text-align:left;cursor:pointer;text-decoration:none}.file-card-action:active{background:var(--brass-soft)}.file-open{border-bottom:1px solid var(--brass);color:var(--brass-deep);font-size:var(--fs-11);flex-shrink:0;font-weight:700}.attachment-preview-panel>footer{justify-content:space-between}.attendance-follow-up{width:min(720px,100%)}.follow-up-lead{color:var(--ink-soft);font-size:var(--fs-11);margin:8px 0 4px;line-height:1.7}.follow-up-event{border-top:1px solid var(--line);margin-top:14px;padding-top:12px}.follow-up-event h3{font-size:15px}.follow-up-deadline{color:var(--ink-soft);font-size:var(--fs-10);margin-top:2px}.follow-up-deadline.closed{color:var(--rose);font-weight:700}.follow-up-counts{color:var(--ink-soft);font-size:var(--fs-11);margin:6px 0}.follow-up-counts b{color:var(--rose)}.follow-up-families{margin:6px 0 10px;padding:0;list-style:none}.follow-up-families li{border-top:1px solid var(--line-soft);justify-content:space-between;align-items:center;gap:10px;padding:8px 2px;display:flex}.follow-up-families li>span{min-width:0;font-size:var(--fs-12);flex-direction:column;display:flex}.follow-up-families small{color:var(--ink-faint);font-size:var(--fs-10)}.follow-up-loading{color:var(--ink-faint);font-size:var(--fs-11)}.chart-tag-create{gap:6px;margin-top:4px;display:flex}.chart-tag-create input{border:1px solid var(--line);background:var(--ivory);min-width:0;color:var(--ink);border-radius:8px;flex:1;padding:6px 8px;font-size:16px}.privacy-modal{overscroll-behavior:contain;max-height:calc(100dvh - 32px);padding-top:0;overflow-y:auto}.privacy-modal>header{z-index:1;background:var(--key);padding-top:20px;position:sticky;top:0}.privacy-notice{text-align:left;overflow-wrap:anywhere;line-height:1.8}.privacy-notice h2{margin-top:1.5em}@media (width<=640px){.privacy-modal{padding-bottom:calc(20px + env(safe-area-inset-bottom))}}
