@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Libre+Franklin:wght@400;500;600;700;800&display=swap');
:root{--maroon:#a80008;--maroon-dark:#780006;--slate:#13262f;--ink:#172630;--muted:#61707b;--border-subtle:#dde3e5;--paper:#fff;--canvas:#f7f8f7;--soft:#f3eeee;--success:#16714c;--warning:#9b5800;--shadow:0 16px 46px rgba(30,40,45,.07);font-family:"DM Sans",sans-serif;color:var(--ink);background:var(--canvas)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin-top:0}h1,h2,h3,.brand{font-family:"Libre Franklin",sans-serif}h1{font-size:clamp(2rem,4vw,3.15rem);letter-spacing:-.055em;margin-bottom:.55rem}h2{font-size:1.25rem;letter-spacing:-.035em}p{line-height:1.55}.muted,.page-heading p:not(.eyebrow){color:var(--muted)}.eyebrow{color:var(--maroon);text-transform:uppercase;letter-spacing:.14em;font-size:.72rem;font-weight:800;margin-bottom:.8rem}.hidden{display:none!important}.site-header{position:sticky;top:0;z-index:30;padding:14px 22px;background:rgba(247,248,247,.86);backdrop-filter:blur(18px)}.site-header.floating{padding-top:22px}.nav-shell{max-width:1340px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:24px;background:var(--paper);border:1px solid var(--border-subtle);border-radius:20px;box-shadow:var(--shadow);padding:10px 18px}.brand{display:flex;align-items:center;gap:11px;white-space:nowrap}.brand strong{display:block;font-size:.95rem;letter-spacing:.08em;color:var(--maroon)}.brand small{display:block;font-size:.68rem;color:var(--muted);font-family:"DM Sans",sans-serif}.brand-mark{width:40px;height:40px;flex:none;border-radius:50%;overflow:hidden;background:transparent;display:block}.brand-mark.large{width:60px;height:60px;margin:0 auto 18px}.brand-mark img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block;transform:scale(1.04)}.desktop-nav,.header-actions,.heading-actions{display:flex;align-items:center;gap:7px}.desktop-nav button,.mobile-nav button,.text-button{border:0;background:transparent;color:var(--muted);font-weight:700;padding:10px 13px;border-radius:11px}.desktop-nav button:hover,.desktop-nav button.active,.mobile-nav button.active,.text-button:hover{color:var(--maroon);background:var(--soft)}.header-actions{gap:12px}.account-button{border:0;background:#f7f2f2;border-radius:24px;display:flex;align-items:center;gap:9px;padding:5px 12px 5px 5px;color:var(--ink);font-weight:700}.avatar{background:var(--maroon);color:white;border-radius:50%;display:grid;place-items:center;font-family:"Libre Franklin",sans-serif;font-weight:800;flex:none}.avatar.small{width:32px;height:32px;font-size:.72rem}.avatar.large-avatar{width:82px;height:82px;font-size:1.65rem}.mobile-nav{display:none}.page-shell{max-width:1320px;margin:0 auto;padding:34px 24px 90px}.view{display:none}.view.active{display:block}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin:23px 0 31px}.page-heading p:last-child{margin-bottom:0}.button{border:1px solid var(--slate);background:var(--slate);color:white;border-radius:11px;padding:12px 17px;font-weight:700;line-height:1.15;display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap}.button:hover{filter:brightness(1.15)}.button.secondary{color:var(--slate);border-color:var(--border-subtle);background:white}.button.danger{background:#9e2020;border-color:#9e2020}.button:disabled{opacity:.48;cursor:not-allowed}.button.wide{width:100%;margin-top:12px}.card{background:var(--paper);border:1px solid var(--border-subtle);border-radius:18px;padding:24px;box-shadow:0 6px 24px rgba(20,35,43,.025)}.toolbar{display:flex;gap:16px;align-items:end;margin-bottom:22px}.field{display:flex;flex-direction:column;gap:7px;min-width:0;margin-bottom:15px}.field.grow{flex:1}.field span:first-child{font-size:.8rem;font-weight:700;color:#42515b}.field input,.field select,.field textarea{width:100%;min-height:44px;padding:10px 12px;border:1px solid #cbd4d8;border-radius:10px;background:white;color:var(--ink);outline:0}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--maroon);box-shadow:0 0 0 3px rgba(168,0,8,.11)}.toolbar .field{margin:0}.toolbar .field:not(.grow){width:230px}.book-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(265px,1fr));gap:17px}.book-card{display:flex;flex-direction:column;gap:12px;min-height:255px}.book-card .eyebrow{margin:0}.book-card h2{font-size:1.22rem;margin:0}.book-card p{margin:0}.book-card .button{margin-top:auto}.book-meta{color:var(--muted);font-size:.88rem}.pill,.badge{display:inline-flex;align-items:center;align-self:flex-start;padding:6px 10px;border-radius:20px;background:#f8ecec;color:var(--maroon);font-weight:800;font-size:.72rem}.pill.available{background:#e9f5ed;color:#146848}.pill.waitlist{background:#fff2dc;color:#8a4e00}.badge.teacher{background:#e9f1f7;color:#22546d}.badge.librarian{background:#ecf4ed;color:#176443}.badge.administrator{background:#f6e8ef;color:#7e2151}.two-column{display:grid;grid-template-columns:1fr 1fr;gap:18px}.section-gap{margin-top:18px}.metrics-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px}.metric{padding:21px}.metric strong{font-size:1.8rem;display:block;font-family:"Libre Franklin",sans-serif;letter-spacing:-.05em}.metric span{color:var(--muted);font-size:.87rem}.table-scroll{overflow-x:auto}.data-table{border-collapse:collapse;width:100%;min-width:670px;text-align:left}.data-table th{color:#65747b;text-transform:uppercase;font-size:.69rem;letter-spacing:.11em;background:#fafafa}.data-table th,.data-table td{padding:13px 12px;border-bottom:1px solid #edf0f1;vertical-align:middle}.data-table tr:last-child td{border:0}.data-table td button{margin:2px}.data-table .button{padding:8px 10px;font-size:.78rem}.empty{padding:24px 4px;color:var(--muted)}.list-row{padding:13px 0;border-bottom:1px solid var(--border-subtle);display:flex;justify-content:space-between;align-items:center;gap:12px}.list-row:last-child{border:0}.list-row strong{display:block}.list-row small{color:var(--muted)}.alert{padding:13px 16px;border-radius:11px;margin:0 0 14px;background:#fff4de;color:#7c4600;border:1px solid #f1dcad}.alert.danger{background:#fff0ef;color:#8d2020;border-color:#f4c4c4}.alert.success{background:#e9f6ef;color:#176044;border-color:#bce5cc}.bulk-bar{position:sticky;top:92px;z-index:10;display:flex;align-items:center;gap:12px;background:var(--slate);color:white;padding:12px 16px;border-radius:13px;margin-bottom:15px;box-shadow:var(--shadow)}.bulk-bar .button.secondary{margin-left:auto}.chart{min-height:225px;display:flex;align-items:end;gap:12px;padding-top:26px}.chart-day{flex:1;text-align:center;font-size:.75rem;color:var(--muted)}.bars{height:180px;display:flex;justify-content:center;align-items:end;gap:3px}.bar{width:16px;min-height:2px;background:var(--maroon);border-radius:5px 5px 0 0}.bar.checkout{background:var(--slate)}.donut{width:185px;height:185px;border-radius:50%;margin:22px auto;display:grid;place-items:center}.donut::after{content:"Subjects";background:white;border-radius:50%;width:108px;height:108px;display:grid;place-items:center;font-weight:700}.legend-line{display:flex;gap:8px;align-items:center;justify-content:space-between;margin:8px 0}.legend-line i{width:11px;height:11px;border-radius:50%;display:inline-block;margin-right:7px}.modal{border:1px solid var(--border-subtle);border-radius:18px;width:min(500px,calc(100vw - 28px));max-height:86vh;padding:24px;box-shadow:0 24px 90px #13262f40;color:var(--ink)}.modal::backdrop{background:#0c1c24a8}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}.modal-head h2{margin:0}.icon-button{border:0;background:#f1f3f3;width:32px;height:32px;border-radius:50%;font-size:1.4rem;line-height:1}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.toast{position:fixed;bottom:25px;right:25px;background:var(--slate);color:white;border-radius:12px;padding:13px 18px;box-shadow:var(--shadow);z-index:100;max-width:360px}.auth-page{display:grid;place-items:center;min-height:100vh;padding:30px;background:radial-gradient(circle at 90% 0,#f8e9e7,transparent 36%),radial-gradient(circle at 0 100%,#e7e9e8,transparent 40%),var(--canvas)}.auth-card{width:min(430px,100%);padding:37px}.auth-brand{text-align:center;margin-bottom:29px}.auth-brand h1{font-size:2rem}.auth-link{display:block;margin:18px auto 0;color:var(--maroon)}.password-field{position:relative;display:block}.password-field input{padding-right:75px}.password-toggle{position:absolute;right:7px;top:6px;border:0;background:transparent;color:var(--maroon);font-weight:700;padding:8px}.form-message{font-size:.86rem;min-height:1.1em;color:var(--maroon)}input[type="password"]::-ms-reveal,input[type="password"]::-ms-clear{display:none}.profile-shell{max-width:1030px}.profile-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:19px}.profile-identity{display:flex;align-items:center;gap:19px;padding-bottom:22px;border-bottom:1px solid var(--border-subtle)}.profile-identity h2{margin:0 0 6px}.profile-identity p{margin:0 0 8px}.detail-list{margin:8px 0 0}.detail-list div{display:flex;justify-content:space-between;gap:18px;border-bottom:1px solid var(--border-subtle);padding:15px 0}.detail-list div:last-child{border:0}.detail-list dt{font-weight:700;color:var(--muted)}.detail-list dd{margin:0;text-align:right;overflow-wrap:anywhere}.fine-total{font-size:1.35rem;font-weight:800;color:var(--maroon);margin-bottom:14px}
@media(max-width:980px){.desktop-nav{display:none}.mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:40;justify-content:space-around;background:white;border-top:1px solid var(--border-subtle);box-shadow:0 -8px 25px #13262f10;padding:7px}.mobile-nav button{font-size:.74rem;padding:10px 6px}.page-shell{padding-bottom:110px}.metrics-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){.site-header{padding:9px}.nav-shell{border-radius:13px;padding:8px 10px}.brand small,#headerName,.header-actions .text-button{display:none}.page-shell{padding:16px 15px 110px}.page-heading{display:block;margin:22px 0}.heading-actions{margin-top:18px;flex-wrap:wrap}.toolbar,.two-column,.profile-grid{display:block}.toolbar .field:not(.grow){width:auto}.toolbar .field{margin-bottom:13px}.two-column>.card{margin-bottom:17px}.metrics-grid{gap:9px}.metric{padding:14px}.metric strong{font-size:1.35rem}.card{padding:18px}.bulk-bar{flex-wrap:wrap;top:76px}.bulk-bar .button.secondary{margin-left:0}.site-header.floating .button{font-size:.76rem;padding:9px}.profile-identity{align-items:flex-start}}
