@import"https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=Fraunces:opsz,wght@9..144,600;9..144,700&display=swap";:root{--bg: #eef3f0;--bg-accent: #d7e6dc;--surface: #fbfdfb;--ink: #173126;--muted: #5b6f64;--line: #c5d4cb;--brand: #0f5c45;--brand-soft: #c8e6da;--primary: #0f5c45;--primary-ink: #f4fff9;--danger: #9b2c2c;--danger-soft: #fde8e8;--success: #1f6b3a;--success-soft: #def7e7;--shadow: 0 10px 30px rgba(23, 49, 38, .08);--radius: 14px;--tap: 44px;--font: "DM Sans", system-ui, sans-serif;--display: "Fraunces", Georgia, serif;color:var(--ink);background:radial-gradient(1200px 500px at 10% -10%,#d9ebe2 0%,transparent 55%),radial-gradient(900px 400px at 100% 0%,#cfe0d8 0%,transparent 50%),var(--bg);font-family:var(--font);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{overflow-x:hidden}h1,h2,h3,.brand{font-family:var(--display);letter-spacing:-.02em;margin:0}h1{font-size:clamp(1.6rem,4vw,2.1rem)}p{margin:0}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.app-shell{min-height:100dvh;display:grid;grid-template-rows:auto auto 1fr auto;max-width:1100px;margin:0 auto;padding:0 1rem calc(4.75rem + env(safe-area-inset-bottom))}.top-bar{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;align-items:flex-start;padding:1rem 0 .5rem}.brand{color:var(--brand);font-size:1.45rem;font-weight:700}.brand-meta{color:var(--muted);font-size:.9rem;margin-top:.15rem}.mock-switch select,.group-switch select,.field select,.field input,.field textarea{width:100%;min-height:var(--tap);border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:.65rem .8rem;color:var(--ink)}.group-switch{min-width:min(100%,11rem);flex:1 1 10rem;max-width:16rem}.desktop-nav{display:none;gap:.35rem;padding:.25rem 0 .75rem;border-bottom:1px solid var(--line);margin-bottom:.75rem}.nav-link{min-height:2.5rem;display:inline-flex;align-items:center;padding:.4rem .85rem;border-radius:999px;color:var(--muted);font-weight:600}.nav-link.active{background:var(--brand-soft);color:var(--brand)}.nav-label-with-badge{display:inline-flex;align-items:center;gap:.35rem}.nav-count-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .35rem;border-radius:999px;background:var(--danger);color:#fff;font-size:.7rem;font-weight:800;line-height:1}.bottom-link .nav-count-badge{min-width:1.1rem;height:1.1rem;font-size:.65rem}.requests-outgoing-note{margin:.45rem 0 0;color:var(--muted);font-size:.92rem}.page{padding:.25rem 0 1rem;min-width:0}.bottom-nav{position:fixed;left:0;right:0;bottom:0;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:.25rem;padding:.45rem .5rem calc(.45rem + env(safe-area-inset-bottom));background:#fbfdfbf5;border-top:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:20}.bottom-link{min-height:var(--tap);display:flex;align-items:center;justify-content:center;gap:.25rem;border-radius:12px;font-size:.85rem;font-weight:700;color:var(--muted)}.bottom-link.active{background:var(--brand-soft);color:var(--brand)}.stack{display:flex;flex-direction:column;gap:1rem;min-width:0}.page-header{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;align-items:flex-start}.top-bar-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.btn-compact{min-height:2.5rem;padding:.45rem .8rem;font-size:.9rem}.status-control{display:flex;flex-direction:column;align-items:flex-end;gap:.45rem;max-width:min(100%,28rem)}.status-control-actions{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}.status-hint{margin:0;color:var(--muted);font-size:.85rem;font-weight:500;line-height:1.4;text-align:right}@media(max-width:767px){.status-control{width:100%;align-items:stretch}.status-hint{text-align:left}.bottom-link{font-size:.72rem;padding:.2rem;text-align:center;line-height:1.15}}.lede{color:var(--muted);margin-top:.35rem;max-width:40rem;line-height:1.45}.roster-toolbar{align-items:flex-end}.roster-count{margin:0;min-height:var(--tap);display:inline-flex;align-items:center;padding:0 .15rem .15rem;color:var(--ink);font-weight:700;font-size:1.05rem;white-space:nowrap}.toolbar{display:flex;flex-wrap:wrap;gap:.75rem}.field{display:flex;flex-direction:column;gap:.35rem;font-weight:600;font-size:.92rem}.field.grow{flex:1 1 16rem;min-width:0}.field span{color:var(--muted)}.status-strip{display:flex;flex-wrap:wrap;gap:.45rem}.status-chip{display:inline-flex;align-items:center;min-height:2rem;padding:.25rem .7rem;border-radius:999px;background:#e7eee9;color:var(--muted);font-size:.82rem;font-weight:600}.status-chip.is-complete{background:var(--success-soft);color:var(--success)}.btn{min-height:var(--tap);border:0;border-radius:12px;padding:.7rem 1rem;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:.35rem}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-block{width:100%}.btn-primary{background:var(--primary);color:var(--primary-ink)}.btn-secondary{background:#e4ebe6;color:var(--ink)}.btn-success{background:var(--success);color:#f3fff6}.btn-danger{background:var(--danger);color:#fff7f7}.btn-row{display:flex;flex-wrap:wrap;gap:.6rem}.btn-row.compact{flex-wrap:nowrap}.btn-row .btn{flex:1 1 auto}.card-list{display:flex;flex-direction:column;gap:.75rem}.student-card,.request-card,.allowlist-card,.activity-item{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1rem;box-shadow:var(--shadow);min-width:0}.student-card{display:flex;flex-direction:column;gap:.85rem}.student-card h3,.request-card h3{font-size:1.15rem}.student-detail-line{margin:.15rem 0 0;font-size:.92rem;color:var(--ink);line-height:1.35}.student-detail-line a{color:var(--brand);text-decoration:none;font-weight:600}.student-name-cell{display:flex;flex-direction:column;gap:.15rem;min-width:0}.student-email-sub{font-size:.8rem;word-break:break-word}.data-table-students th,.data-table-students td{padding:.7rem .55rem;font-size:.92rem;white-space:nowrap}.data-table-students td:first-child,.data-table-students th:first-child{white-space:normal;min-width:8rem}.data-table-students a[href^="tel:"]{color:var(--brand);text-decoration:none;font-weight:600}.muted{color:var(--muted)}.message{margin-top:.4rem;font-style:italic}.badge{display:inline-flex;margin-top:.55rem;padding:.2rem .55rem;border-radius:999px;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.status-pending{background:#fff3d6;color:#8a5a00}.status-accepted{background:var(--success-soft);color:var(--success)}.status-denied,.status-cancelled{background:var(--danger-soft);color:var(--danger)}.status-superseded{background:#e8e8ec;color:#52525b}.table-wrap{display:none;width:100%;overflow-x:auto}.data-table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.data-table th,.data-table td{text-align:left;padding:.85rem .75rem;border-bottom:1px solid var(--line);vertical-align:middle}.data-table th{background:#eef6f1;font-size:.85rem;color:var(--muted)}.empty-state,.banner{padding:.9rem 1rem;border-radius:12px}.empty-state{background:#ffffffa6;border:1px dashed var(--line);color:var(--muted)}.banner.error{background:var(--danger-soft);color:var(--danger)}.banner.success{background:var(--success-soft);color:var(--success)}.activity-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.activity-message{font-weight:600;line-height:1.4}.allowlist-editor{display:flex;flex-direction:column;gap:.85rem}.allowlist-card{display:grid;gap:.75rem}.group-fieldset,.role-fieldset{border:1px solid var(--line);border-radius:12px;padding:.65rem .8rem;margin:0;display:flex;flex-wrap:wrap;gap:.5rem .85rem}.group-fieldset legend,.role-fieldset legend{padding:0 .35rem;color:var(--muted);font-size:.85rem;font-weight:600}.check{display:inline-flex;align-items:center;gap:.4rem;min-height:2.5rem;font-weight:600}.check input{width:1.15rem;height:1.15rem}.sticky-actions{position:sticky;bottom:calc(4.5rem + env(safe-area-inset-bottom));background:linear-gradient(transparent,var(--bg) 30%);padding-top:.5rem}.student-card-actions{display:flex;flex-direction:column;gap:.45rem}.table-actions{display:flex;flex-wrap:wrap;gap:.35rem}.group-admin-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.65rem}.group-admin-row{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;align-items:center;padding:.85rem 1rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.group-admin-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.admin-groups h2,.page-header h2{margin:0;font-size:1.25rem}.access-denied{min-height:100dvh;display:flex;flex-direction:column;justify-content:center;gap:.85rem;padding:1.5rem;max-width:28rem;margin:0 auto}.access-denied h1{margin-top:.25rem}.sign-in-form{width:100%;margin-top:.5rem}.sign-in .banner.success{background:var(--success-soft);color:var(--success)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#12241c73;display:flex;align-items:flex-end;justify-content:center;z-index:40;padding:0}.modal-sheet{width:min(100%,34rem);max-height:min(92dvh,40rem);overflow:auto;background:var(--surface);border-radius:18px 18px 0 0;box-shadow:var(--shadow);padding:1rem 1rem calc(1rem + env(safe-area-inset-bottom))}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.icon-btn{width:var(--tap);height:var(--tap);border:0;border-radius:12px;background:#e7eee9;font-size:1.5rem;line-height:1;cursor:pointer}@media(min-width:768px){.app-shell{grid-template-rows:auto auto 1fr;padding:0 1.5rem 2rem}.bottom-nav{display:none}.desktop-nav{display:flex}.card-list{display:none}.table-wrap{display:block}.modal-backdrop{align-items:center;padding:1.5rem}.modal-sheet{border-radius:18px;padding:1.25rem}.sticky-actions{position:static;background:none;padding-top:0}.allowlist-card{grid-template-columns:1.2fr 1fr 1fr auto;align-items:end}.allowlist-card .group-fieldset,.allowlist-card .role-fieldset{grid-column:1 / -2}.allowlist-card .btn-danger{width:auto}}
