*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:"Plus Jakarta Sans",sans-serif;color:#0f172a;background:#edf2f7}button,input{font:inherit}button,a{cursor:pointer}.hidden{display:none!important}:root{--blue:#2563eb;--blue-dark:#1237b8;--red:#ef3340;--ink:#0f172a;--muted:#64748b;--soft:#94a3b8;--line:#d8e1eb;--surface:#fff;--canvas:#edf2f7}.icon{width:19px;height:19px;stroke-width:2}.icon-sm{width:16px;height:16px}.shell{min-height:100vh}.topbar{position:sticky;top:0;z-index:40;height:72px;border-bottom:1px solid var(--line);background:rgba(248,250,252,.96);backdrop-filter:blur(14px)}.topbar-inner{height:100%;max-width:1480px;margin:auto;padding:0 28px;display:flex;align-items:center;gap:24px}.logo{border:0;background:none;padding:0;color:#092a78;font:800 italic 31px "Exo 2",sans-serif;text-decoration:none}.logo span{color:var(--red)}.school-name{padding-left:14px;border-left:1px solid var(--line);color:var(--muted);font-size:12px;font-weight:700}.nav{display:flex;gap:3px;margin-left:10px}.nav a{padding:10px 12px;border-radius:6px;color:var(--muted);font-size:14px;font-weight:700;text-decoration:none}.nav a:hover,.nav a.active{background:#e5edfa;color:#1d4ed8}.account{margin-left:auto;display:flex;align-items:center;gap:10px}.avatar{width:38px;height:38px;border-radius:50%;background:#10213d;color:#fff;display:grid;place-items:center;font-size:12px;font-weight:800}.icon-btn,.btn{height:40px;border:1px solid var(--line);border-radius:7px;background:#fff;color:#334155;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:14px;font-weight:800;text-decoration:none}.icon-btn{width:40px;padding:0}.btn{padding:0 14px}.btn.primary{border-color:var(--blue);background:var(--blue);color:#fff}.btn:hover{filter:brightness(.98)}.content{max-width:1480px;margin:auto;padding:0 28px 60px}.welcome{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 370px;min-height:180px;margin:0 -28px 24px;padding-left:28px;border-bottom:1px solid #d4deea;background:#e7eef8;overflow:hidden}.welcome-copy{padding:30px 28px 28px 0;position:relative;z-index:2}.eyebrow{margin:0 0 8px;color:#d44b16;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.welcome h1{margin:0;font-size:34px}.welcome p:last-child{margin:10px 0 0;color:#52647b;font-size:15px}.school-scene{position:relative}.school-scene:before{content:"";position:absolute;inset:0;background:#dbe8f7;clip-path:polygon(17% 0,100% 0,100% 100%,0 100%)}.school-scene img{position:absolute;right:8px;bottom:-22px;width:345px;max-height:195px;object-fit:contain}.continue{display:grid;grid-template-columns:106px minmax(0,1fr) auto;align-items:center;gap:20px;margin-bottom:30px;padding:18px 20px;border:1px solid #cad6e4;border-radius:8px;background:#f7f9fc}.mini-cover{width:68px;height:92px;justify-self:center;border:1px solid #cbd5e1;border-radius:3px 7px 7px 3px;background:#fff;box-shadow:4px 5px 10px rgba(15,23,42,.08);display:grid;place-items:center}.mini-cover img{width:38px}.continue h2{margin:0 0 6px;font-size:19px}.continue p{margin:0;color:var(--muted);font-size:13px}.meta{display:flex;gap:18px;margin-top:11px;color:var(--muted);font-size:12px}.meta b{color:var(--ink)}.heading-row{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:18px}.heading-row h1{margin:0;font-size:28px}.heading-row p{margin:7px 0 0;color:var(--muted);font-size:14px}.library-tools{display:flex;gap:9px;margin-bottom:22px}.search{position:relative;max-width:580px;flex:1}.search svg{position:absolute;left:14px;top:12px;color:var(--soft)}.search input{width:100%;height:44px;border:1px solid var(--line);border-radius:7px;background:#fff;padding:0 14px 0 43px;font-size:14px;outline:none}.search input:focus{border-color:#93c5fd;box-shadow:0 0 0 3px #dbeafe}.file-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.file-card{min-height:224px;border:1px solid #d6e0ea;border-radius:8px;background:#fdfefe;padding:18px;text-align:left;color:inherit;text-decoration:none;transition:.18s}.file-card:hover{border-color:#b9c9dc;box-shadow:0 16px 35px -28px #0f172a;transform:translateY(-2px)}.file-top{display:flex;align-items:flex-start;justify-content:space-between}.file-icon{width:44px;height:54px;border:1px solid #d3dee9;border-radius:4px 7px 7px 4px;background:#edf2f7;color:#475569;display:grid;place-items:center}.file-card h2{margin:18px 0 6px;font-size:16px;line-height:1.45}.file-card p{margin:0;color:var(--muted);font-size:13px}.file-stats{display:flex;justify-content:space-between;margin-top:22px;padding-top:14px;border-top:1px solid #edf1f5;color:var(--soft);font-size:12px}.section-title{margin:30px 0 12px;font-size:18px}.unit-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.unit{display:flex;align-items:center;gap:11px;padding:14px;border:1px solid #d6e0ea;border-radius:8px;background:#f7f9fc}.unit-marker{width:32px;height:32px;border-radius:50%;background:#e7edf4;display:grid;place-items:center}.unit-marker:after{content:"";width:10px;height:10px;border-radius:50%;background:var(--unit)}.unit b{font-size:14px}.unit small{display:block;margin-top:3px;color:var(--muted);font-size:12px}
.workspace-bar{position:sticky;top:0;z-index:40;height:68px;border-bottom:1px solid var(--line);background:#fff;display:flex;align-items:center;padding:0 20px;gap:12px}.workspace-bar .back{width:40px;height:40px;border:0;border-radius:7px;background:transparent;color:#475569;display:grid;place-items:center}.workspace-title{min-width:0}.workspace-title b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:15px}.workspace-title span{display:block;margin-top:3px;color:var(--muted);font-size:12px}.workspace-actions{margin-left:auto;display:flex;align-items:center;gap:8px}.segmented{height:40px;padding:3px;border:1px solid var(--line);border-radius:7px;background:#f1f5f9;display:flex}.segmented button{width:38px;border:0;border-radius:5px;background:transparent;color:var(--muted);display:grid;place-items:center}.segmented button.active{background:#fff;color:var(--blue);box-shadow:0 1px 4px #cbd5e1}.workspace-layout{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:calc(100vh - 68px)}.sections{border-right:1px solid var(--line);background:#f8fafc;padding:22px 14px}.sections-label{margin:0 10px 10px;color:var(--soft);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.section-button{width:100%;min-height:44px;border:0;border-radius:6px;background:transparent;color:#475569;padding:8px 10px;display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:8px;text-align:left;font-size:13px}.section-button.active,.section-button:hover{background:#e8eef7;color:#1d4ed8}.section-button span:first-child,.section-button span:last-child{color:var(--soft);font-size:11px;font-weight:800}.workarea{min-width:0;padding:28px 30px 60px}.work-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.work-head h1{margin:0;font-size:26px}.work-head p{margin:6px 0 0;color:var(--muted);font-size:13px}.item-grid{display:grid;grid-template-columns:repeat(4,minmax(170px,1fr));gap:14px}.item-card,.add-card{min-height:210px;border-radius:8px}.item-card{overflow:hidden;border:1px solid var(--line);background:#fff}.item-preview{position:relative;aspect-ratio:4/3;border-bottom:1px solid var(--line);background:#f1f5f9;display:grid;place-items:center;color:#94a3b8}.item-preview img{max-width:66px;max-height:66px;object-fit:contain}.item-preview.photo{background-size:cover;background-position:center}.badge{position:absolute;left:10px;top:10px;padding:5px 7px;border:1px solid #dbe3ef;border-radius:5px;background:#fff;color:#475569;font-size:10px;font-weight:800}.item-copy{padding:13px}.item-copy b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.item-copy span{display:block;margin-top:5px;color:var(--soft);font-size:11px}.add-card{border:1px dashed #9bb8df;background:#e9f0fa;color:#1d4ed8;display:grid;place-items:center;text-align:center;font-size:13px;font-weight:800}.add-card svg{display:block;margin:0 auto 8px}.book-stage{min-height:calc(100vh - 68px);padding:34px;background:#dce3eb;display:grid;place-items:center}.book{width:min(930px,94vw);display:grid;grid-template-columns:1fr 1fr;filter:drop-shadow(0 22px 28px rgba(15,23,42,.18))}.page{aspect-ratio:1/1.414;background:#fff;overflow:hidden}.page:first-child{border-radius:5px 0 0 5px;border-right:1px solid #dbe3ef}.page:last-child{border-radius:0 5px 5px 0}.cover{position:relative;padding:11%;display:flex;flex-direction:column;align-items:center;text-align:center;background:linear-gradient(145deg,#fff 0 70%,#e8eef7 70%)}.cover:before{content:"";position:absolute;left:0;top:0;bottom:0;width:14px;background:#254e9a}.cover img{width:72px;margin-top:5%}.cover small{margin-top:14%;color:#2563eb;font-weight:800;text-transform:uppercase}.cover h1{max-width:310px;margin:9px 0 0;font-size:26px;line-height:1.4}.cover .year{margin-top:18px;padding:7px 14px;border:1px solid #cbd5e1;border-radius:5px;font-size:12px;font-weight:800}.cover .school{margin-top:auto;font-size:11px;font-weight:800}.contents-page{padding:10%}.contents-page h1{margin:0 0 8%;font-size:25px}.toc{display:grid;grid-template-columns:30px 1fr auto;gap:8px;padding:13px 0;border-bottom:1px solid #e8edf3;font-size:12px}.toc b:first-child{color:#2563eb}.toc span{color:var(--soft)}.public-note{height:34px;background:#10213d;color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}.empty{padding:50px;text-align:center;color:var(--muted)}
.item-card[data-openable="true"]{cursor:pointer}.item-card[data-openable="true"]:hover{border-color:#93b4df;box-shadow:0 12px 28px -24px #0f172a}
.dialog{width:min(620px,calc(100vw - 28px));max-height:88vh;border:0;border-radius:8px;padding:0;background:#fff;box-shadow:0 28px 80px rgba(15,23,42,.28)}.dialog::backdrop{background:rgba(15,23,42,.56);backdrop-filter:blur(4px)}.dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:22px 24px;border-bottom:1px solid var(--line)}.dialog-head h2{margin:0;font-size:21px}.dialog-head p{margin:6px 0 0;color:var(--muted);font-size:13px}.dialog-close{width:38px;height:38px;border:0;border-radius:6px;background:#f1f5f9;color:#475569;display:grid;place-items:center}.dialog-body{padding:22px 24px;overflow:auto}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.field{display:grid;gap:7px}.field.wide{grid-column:1/-1}.field span{font-size:12px;font-weight:800;color:#475569}.field input,.field select,.field textarea{width:100%;min-height:43px;border:1px solid var(--line);border-radius:7px;background:#fff;padding:10px 12px;color:var(--ink);font-size:14px;outline:none}.field textarea{min-height:90px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:#93c5fd;box-shadow:0 0 0 3px #dbeafe}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;padding:16px 24px;border-top:1px solid var(--line);background:#f8fafc}.content-types{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-bottom:18px}.content-type{min-height:72px;border:1px solid var(--line);border-radius:7px;background:#fff;padding:12px;display:flex;align-items:center;gap:11px;text-align:left;color:#334155}.content-type:hover,.content-type.active{border-color:#93b4df;background:#edf4ff;color:#1d4ed8}.content-type b{display:block;font-size:13px}.content-type small{display:block;margin-top:3px;color:var(--muted);font-size:11px}.status-note{margin:12px 0 0;padding:11px 12px;border-radius:6px;background:#edf2f7;color:#52647b;font-size:12px;line-height:1.55}.status-note.error{background:#fff1f2;color:#be123c}.status-note.success{background:#ecfdf5;color:#047857}
.admin-page{max-width:1180px;margin:auto;padding:34px 28px 60px}.admin-page .heading-row{margin-bottom:24px}.admin-section{margin-top:28px}.admin-section h2{margin:0 0 12px;font-size:18px}.profile-list{border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden}.profile-row{display:grid;grid-template-columns:52px minmax(0,1fr) 150px 110px;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid #edf1f5}.profile-row:last-child{border-bottom:0}.profile-row .avatar{width:36px;height:36px}.profile-row b{font-size:14px}.profile-row small{display:block;margin-top:3px;color:var(--muted);font-size:12px}.role{color:#475569;font-size:12px;font-weight:700}.status{color:#047857;font-size:12px;font-weight:800}
.check-list{display:grid;gap:7px}.check-row{min-height:42px;border:1px solid var(--line);border-radius:6px;padding:9px 11px;display:flex;align-items:center;gap:10px;font-size:13px;font-weight:700}.check-row input{width:17px;height:17px;accent-color:var(--blue)}.share-options{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}.share-result{margin-top:16px;padding:14px;border:1px solid #bbd5c6;border-radius:7px;background:#f0fdf4}.share-result b{display:block;margin-bottom:8px;color:#047857;font-size:13px}.share-link{display:flex;gap:8px}.share-link input{min-width:0;flex:1;height:40px;border:1px solid #bbd5c6;border-radius:6px;background:#fff;padding:0 10px;font-size:12px}
.existing-shares{margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}.existing-shares h3{margin:0 0 9px;font-size:14px}.share-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #edf1f5}.share-row:last-child{border-bottom:0}.share-row b{display:block;font-size:12px}.share-row small{display:block;margin-top:3px;color:var(--muted);font-size:11px}.share-row button{height:34px}
.document-dialog{width:min(900px,calc(100vw - 28px))}.document-sheet{max-width:760px;margin:auto;padding:12px 8px 30px;color:#172033}.document-sheet h1,.document-sheet h2,.document-sheet h3{margin:24px 0 10px;line-height:1.35}.document-sheet h1{font-size:27px}.document-sheet h2{font-size:21px}.document-sheet h3{font-size:17px}.document-sheet p,.document-sheet li{font-size:14px;line-height:1.75}.document-sheet ul,.document-sheet ol{padding-left:24px}.document-table-wrap{overflow:auto;margin:16px 0}.document-sheet table{width:100%;border-collapse:collapse;font-size:13px}.document-sheet th,.document-sheet td{border:1px solid #cfd9e5;padding:9px;text-align:left;vertical-align:top}.document-sheet th{background:#edf2f7}.document-callout{margin:16px 0;padding:12px 14px;border-radius:6px;background:#eef5ff;color:#244775;font-size:13px;line-height:1.65}.document-callout.warning{background:#fff7ed;color:#9a4714}.document-meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin:0 0 22px;padding-bottom:14px;border-bottom:1px solid var(--line);color:var(--muted);font-size:11px}.refresh-panel{margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}
.metric-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:22px 0 30px}.metric{padding:16px;border:1px solid var(--line);border-radius:8px;background:#fff}.metric b{display:block;font-size:25px}.metric span{display:block;margin-top:5px;color:var(--muted);font-size:12px}.ops-table{border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden}.ops-row{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(130px,.7fr) 130px 150px;align-items:center;gap:12px;min-height:66px;padding:11px 15px;border-bottom:1px solid #edf1f5}.ops-row:last-child{border-bottom:0}.ops-row b{font-size:13px}.ops-row small{display:block;margin-top:4px;color:var(--muted);font-size:11px}.review-chip{width:max-content;padding:5px 8px;border-radius:5px;background:#edf2f7;color:#52647b;font-size:11px;font-weight:800}.review-chip.attention{background:#fff1f2;color:#be123c}.review-chip.complete{background:#ecfdf5;color:#047857}.ops-actions{display:flex;justify-content:flex-end;gap:7px}.ops-actions .btn{height:35px;padding:0 10px;font-size:12px}.review-radio{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.review-radio label{min-height:44px;border:1px solid var(--line);border-radius:7px;padding:10px;display:flex;align-items:center;gap:9px;font-size:13px;font-weight:700}.review-radio input{accent-color:var(--blue)}
@media(max-width:1050px){.file-grid,.unit-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.item-grid{grid-template-columns:repeat(3,minmax(160px,1fr))}.welcome{grid-template-columns:1fr 300px}.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.ops-row{grid-template-columns:minmax(0,1fr) 120px 130px}.ops-row>:nth-child(2){display:none}}
@media(max-width:720px){.topbar{height:62px}.topbar-inner{padding:0 14px}.logo{font-size:25px}.school-name,.nav{display:none}.content{padding:0 14px 40px}.welcome{display:block;min-height:205px;margin:0 -14px 20px;padding-left:14px}.welcome-copy{padding:24px 10px}.welcome h1{font-size:28px}.welcome p:last-child{max-width:65%;font-size:13px}.school-scene{position:absolute;inset:0;opacity:.42}.school-scene img{right:-80px;bottom:-4px;width:280px}.continue{grid-template-columns:74px 1fr;padding:14px 12px;gap:12px}.continue .btn{grid-column:1/-1;width:100%}.mini-cover{width:60px;height:78px}.meta{display:none}.heading-row h1{font-size:25px}.heading-row .btn span,.workspace-actions .btn span{display:none}.file-grid,.unit-grid{grid-template-columns:1fr}.workspace-bar{height:62px;padding:0 9px}.workspace-layout{display:block}.sections{display:flex;overflow:auto;border-right:0;border-bottom:1px solid var(--line);padding:8px}.sections-label{display:none}.section-button{width:auto;min-width:max-content;grid-template-columns:1fr;padding:8px 12px}.section-button span:first-child,.section-button span:last-child{display:none}.workarea{padding:20px 14px}.item-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.book-stage{padding:14px}.book{grid-template-columns:1fr;width:min(500px,96vw)}.page:first-child{display:none}.page:last-child{border-radius:5px}.public-note{font-size:11px}.dialog-head,.dialog-body{padding:18px}.dialog-actions{padding:14px 18px}.form-grid,.content-types{grid-template-columns:1fr}.admin-page{padding:24px 14px}.profile-row{grid-template-columns:44px 1fr}.profile-row .role,.profile-row .status{grid-column:2}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ops-row{grid-template-columns:1fr;gap:7px;padding:14px}.ops-row>:nth-child(2){display:block}.ops-actions{justify-content:flex-start}.review-radio{grid-template-columns:1fr}}
.auth-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:#e7eef8}.auth-panel{width:min(440px,100%);padding:42px;border:1px solid #cad6e4;border-radius:8px;background:#fff}.auth-panel .logo{display:inline-block;margin-bottom:32px}.auth-panel h1{margin:0;font-size:28px}.auth-panel p:not(.eyebrow){margin:12px 0 24px;color:var(--muted);font-size:15px;line-height:1.65}.auth-panel .btn{width:100%}.auth-error{padding:10px 12px;border-left:3px solid var(--red);background:#fff5f5;color:#b42318!important;font-size:13px!important}.workspace-guest{max-width:620px;margin:34px auto 0;padding:36px 24px;text-align:center;border-top:1px solid var(--line)}.workspace-guest>div{width:48px;height:48px;margin:auto;color:#64748b}.workspace-guest h2{margin:14px 0 8px;font-size:20px}.workspace-guest p{margin:0 auto 20px;max-width:520px;color:var(--muted);font-size:14px;line-height:1.65}
.public-home{min-height:100vh;background:#f7f9fc}.public-header{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - 1240px)/2));border-bottom:1px solid #d7e0ea;background:#fff}.public-header>div{display:flex;align-items:center;gap:18px}.public-header>div>span{color:var(--muted);font-size:12px;font-weight:700}.public-hero{position:relative;min-height:min(720px,78vh);overflow:hidden;padding:86px max(24px,calc((100vw - 1240px)/2)) 270px;background:#e7eef8}.public-copy{position:relative;z-index:2;max-width:720px}.public-copy h1{margin:0;color:#092a78;font:800 italic 84px "Exo 2",sans-serif}.public-copy h1:after{content:".";color:var(--red)}.public-lead{max-width:650px;margin:16px 0 0;color:#40536b;font-size:22px;line-height:1.6}.public-actions{display:flex;align-items:center;gap:22px;margin-top:30px}.public-actions>a:last-child{display:inline-flex;align-items:center;gap:7px;color:#334155;font-size:14px;font-weight:800;text-decoration:none}.public-building{position:absolute;left:50%;bottom:-30px;width:min(1500px,108vw);max-height:380px;object-fit:contain;transform:translateX(-50%)}.public-open{max-width:1240px;margin:auto;padding:72px 24px 84px;display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,520px);align-items:end;gap:70px}.public-open h2{margin:0;font-size:32px}.public-open>div>p:last-child{margin:10px 0 0;color:var(--muted)}.public-open form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px}.public-open label span{display:block;margin-bottom:7px;color:#475569;font-size:12px;font-weight:800}.public-open input{width:100%;height:44px;border:1px solid var(--line);border-radius:7px;padding:0 13px;background:#fff}.public-open .auth-error{grid-column:1/-1;margin:0}.public-footer{height:68px;border-top:1px solid var(--line);padding:0 max(24px,calc((100vw - 1240px)/2));display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:12px;font-weight:700}@media(max-width:720px){.public-header{height:64px}.public-header>div>span{display:none}.public-hero{min-height:630px;padding-top:62px;padding-bottom:230px}.public-copy h1{font-size:62px}.public-lead{font-size:18px}.public-actions{align-items:flex-start;flex-direction:column}.public-building{bottom:0;width:155%;max-width:none}.public-open{grid-template-columns:1fr;padding-top:50px;gap:30px}.public-open form{grid-template-columns:1fr}.public-open form .btn{width:100%}.public-footer{height:auto;padding-top:20px;padding-bottom:20px;gap:10px}}
