:root{--forest:#1a3a2f;--forest-light:#2d5a47;--gold:#d4a855;--cream:#f7f4ed;--cream-dark:#ebe6d9;--muted:#667269;--line:#e2e7df;--shadow:0 4px 24px #1a3a2f0a;color-scheme:light;font-family:'Source Sans 3',system-ui,sans-serif;color:#1b2b23;background:var(--cream)}
*{box-sizing:border-box}body{margin:0;line-height:1.55}h1,h2,h3,.display,h1,h2,h3,p{margin:0}h1{font-size:clamp(1.9rem,4vw,2.7rem);line-height:1.18;font-weight:600;letter-spacing:-.01em}h2{font-size:1.45rem;font-weight:600;line-height:1.25}h3{font-size:1.1rem}a{color:var(--forest)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:default;opacity:.5}a{text-underline-offset:3px}button:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:4px}header{position:sticky;top:0;z-index:20;border-bottom:1px solid var(--line);background:#fff} nav{display:flex;gap:5px;margin-left:auto}nav button{border:0;background:none;color:#57645d;border-radius:10px;padding:12px 15px;font-size:.9rem;font-weight:600;white-space:nowrap}nav button.active{background:var(--forest);color:#fff}nav button:hover:not(.active){background:var(--cream)}main{max-width:1280px;margin:auto;padding:32px 24px 60px;min-height:75vh}.stack{display:grid;gap:24px}.heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.heading p{color:var(--muted);margin-top:8px}.eyebrow{font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:#b18c47;margin-bottom:8px}.card{background:#fff;border:1px solid #1a3a2f0b;border-radius:16px;padding:24px;box-shadow:var(--shadow)}.card-header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.card-header p{color:var(--muted);font-size:.9rem;margin-top:5px}.hero{background:linear-gradient(120deg,var(--forest),var(--forest-light));color:#fff;padding:28px 32px;position:relative;overflow:hidden}.hero p{opacity:.85;margin-top:10px;max-width:640px}.hero .eyebrow{color:#e8c97a}.hero:after{content:'';position:absolute;right:0;top:0;width:180px;height:100%;background:linear-gradient(110deg,transparent,#d4a85512);pointer-events:none}.button,.secondary,.gold{border:0;background:var(--forest);color:#fff;border-radius:10px;padding:11px 18px;font-weight:600;text-decoration:none;display:inline-flex;justify-content:center;align-items:center;gap:8px;font-size:.9rem;white-space:nowrap}.button:hover{background:var(--forest-light)}.secondary{background:var(--cream-dark);color:var(--forest)}.gold{background:#e8c97a;color:var(--forest)}.small-button{padding:7px 12px;font-size:.8rem}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.metric{position:relative;padding:21px 24px;overflow:hidden}.metric:after{content:'';position:absolute;top:0;right:0;width:70px;height:70px;background:radial-gradient(circle at top right,#d4a85530,transparent)}.metric .value{font-family:'Oswald',sans-serif;font-size:2.35rem;color:var(--forest);line-height:1.3;margin:5px 0}.metric .label{color:var(--muted);font-size:.875rem}.metric .sub{font-size:.8rem;color:var(--muted)}.two-col{display:grid;grid-template-columns:1.35fr 1fr;gap:24px}.badge{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:30px;font-size:.75rem;font-weight:600;white-space:nowrap}.badge.high,.badge.returning{background:#e4f2e9;color:#25633d}.badge.warn,.badge.added{background:#fcf2d9;color:#89661f}.badge.blue{background:#e9eff9;color:#365981}.badge.neutral{background:#f0f2ef;color:#556257}.badge.exited{background:#fae8e4;color:#97523f}.muted{color:var(--muted)}.tiny{font-size:.8rem}.notice{padding:14px 18px;border:1px solid #ead7a5;background:#fcf7e8;border-radius:10px;font-size:.875rem;color:#705c30}.notice p+p{margin-top:5px}.controls{display:grid;grid-template-columns:2fr 1fr 1fr;gap:16px}label{display:block;font-weight:500;font-size:.875rem;color:#5a665e}input,select,textarea{width:100%;border:1.5px solid var(--cream-dark);border-radius:10px;background:#fff;padding:11px 14px;margin-top:6px;color:#1b2b23;min-width:0}input:focus,select:focus,textarea:focus{outline:0;border-color:var(--forest);box-shadow:0 0 0 3px #1a3a2f10}input[type=checkbox]{width:18px;margin:0;accent-color:var(--forest)}.school-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.school-card{display:flex;flex-direction:column;gap:16px;transition:box-shadow .2s,transform .2s}.school-card:hover{box-shadow:0 10px 28px #1a3a2f15;transform:translateY(-2px)}.school-title{display:flex;gap:12px;align-items:center}.monogram{width:44px;height:44px;border-radius:12px;background:var(--cream);border:1px solid var(--line);font-weight:700;color:var(--forest);font-size:.9rem;display:grid;place-items:center;flex-shrink:0}.school-title h3{font-size:1.2rem}.school-title p{color:var(--muted);font-size:.8rem}.school-stats{display:flex;gap:18px}.school-stats strong{display:block;font-size:1.2rem;font-weight:600}.school-stats span{font-size:.75rem;color:var(--muted)}.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.school-card .actions{margin-top:auto}.empty{text-align:center;padding:36px 16px;color:var(--muted)}.empty h3{color:var(--forest);margin-bottom:8px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:.875rem}th{font-weight:500;color:var(--muted);padding:12px 10px;font-size:.8rem;white-space:nowrap}td{border-top:1px solid #edf0eb;padding:14px 10px}td .link-button{background:none;padding:0;border:0;color:var(--forest);font-weight:600;text-align:left;text-decoration:underline;text-decoration-color:#adc3b5;text-underline-offset:4px}.selected-row{background:#f7faf6}.bar{height:10px;background:var(--cream-dark);border-radius:10px;overflow:hidden}.bar span{height:100%;display:block;background:linear-gradient(90deg,var(--gold),var(--forest))}.data-row{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);font-size:.9rem}.data-row:last-child{border:0}.detail-head{border-top:5px solid var(--forest);padding-top:20px}.detail-head .monogram{width:56px;height:56px;font-size:1.15rem}.room-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.room-metrics>div{background:var(--cream);padding:16px;border-radius:10px}.room-metrics strong{font-size:1.7rem;font-family:'Oswald',sans-serif;display:block}.room-metrics span{color:var(--muted);font-size:.8rem}.room-player{display:flex;justify-content:space-between;gap:14px;padding:13px 0;border-bottom:1px solid var(--line);align-items:center}.room-player button{border:0;background:none;text-align:left;padding:0;color:var(--forest);font-weight:600}.room-player small{display:block;font-size:.8rem;color:var(--muted);font-weight:400}.composition{display:flex;gap:5px;flex-wrap:wrap;margin-top:12px}.composition span{background:var(--cream);border-radius:6px;padding:8px 12px;font-size:.85rem}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.save-row{display:flex;align-items:center;gap:12px;margin-top:20px}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--forest);color:#fff;border-radius:12px;padding:12px 20px;z-index:50;display:none;max-width:90vw;font-size:.9rem}.inline-link{font-size:.875rem;font-weight:600}.pills{display:flex;gap:8px;flex-wrap:wrap}.pills button{border:1px solid var(--line);border-radius:30px;padding:6px 13px;background:#fff;color:var(--muted);font-size:.85rem}.pills button.active{background:var(--forest);color:white;border-color:var(--forest)}.span-all{grid-column:1/-1}.list-row{display:flex;gap:12px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}.list-row:last-child{border:0}.list-row .flex{flex:1}.list-row h3{font-size:1.05rem}.list-row p{font-size:.8rem;color:var(--muted)}.title-note{font-size:.8rem;color:var(--muted);margin-top:10px}.load-more{text-align:center;margin-top:20px}.player-tools{display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px}.detail-note{margin-top:18px;font-size:.8rem;color:var(--muted)}.links-row{display:flex;flex-wrap:wrap;gap:18px;margin-top:18px}.error-banner{background:#fae8e4;color:#8c4330;padding:16px;border-radius:10px}.stat-accent{color:#b18c47}
@media(max-width:1050px){nav button{padding:10px}.school-grid{grid-template-columns:repeat(2,1fr)}nav{margin-left:0}}@media(max-width:700px){header{position:relative}nav{width:100%;overflow-x:auto;gap:4px}nav button{padding:9px 12px;font-size:.85rem}main{padding:24px 16px 40px}.stack{gap:18px}.card{padding:20px}.hero{padding:24px}.metrics{grid-template-columns:repeat(2,1fr);gap:12px}.metric{padding:18px}.metric .value{font-size:2rem}.two-col{grid-template-columns:1fr;gap:18px}.school-grid{grid-template-columns:1fr}.heading{align-items:flex-start}.heading>.button{white-space:normal}.controls{grid-template-columns:1fr 1fr;gap:12px}.controls>label:first-child{grid-column:1/-1}.room-metrics{grid-template-columns:repeat(2,1fr)}.form-grid{grid-template-columns:1fr}.player-tools{grid-template-columns:1fr 1fr}.player-tools>label:first-child{grid-column:1/-1}.card-header{align-items:flex-start}.card-header .actions{justify-content:flex-end}.school-title h2{font-size:1.4rem}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.pass-tabs{max-width:1280px;margin:0 auto;padding:16px 24px 0}.pass-tabs nav{margin:0;overflow-x:auto;max-width:100%}.cz-header nav{margin:0}@media(max-width:700px){.pass-tabs{padding:14px 16px 0}}

/* Let content shrink inside grid/flex layouts; wide tables scroll within cards. */
.stack,.card,.table-wrap,.two-col>*,.metrics>*,.controls>*,.player-tools>*,.form-grid>*,.school-grid>*,.room-metrics>*,
.heading>div,.card-header>div,.school-title>div,.list-row .flex,.room-player button{min-width:0}
.two-col{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}
.table-wrap{max-width:100%;-webkit-overflow-scrolling:touch}
.card p,.card h2,.card h3,.detail-note,.notice{overflow-wrap:anywhere}
.pass-tabs nav button{flex-shrink:0;min-height:44px}
@media(max-width:700px){
  .two-col{grid-template-columns:minmax(0,1fr)}
  .heading,.card-header{flex-wrap:wrap;align-items:flex-start}
  .heading>div,.card-header>.school-title{flex:1 1 100%}
  .hero .heading{gap:20px}
  .card-header .actions{justify-content:flex-start}
  .school-stats{flex-wrap:wrap;gap:12px 18px}
  .list-row{flex-wrap:wrap}
  .list-row .flex{flex:1 1 160px}
  .list-row>button{margin-left:56px}
  .button,.secondary,.gold{white-space:normal;max-width:100%;text-align:center}
  input,select,textarea{font-size:16px}
  
  .save-row{flex-wrap:wrap}
  .room-player button{flex:1;overflow-wrap:anywhere}
  .room-player .badge{flex-shrink:0}
}
@media(max-width:420px){
  .controls,.player-tools{grid-template-columns:minmax(0,1fr)}
  .controls>label,.player-tools>label{grid-column:1/-1!important}
  
  .metric{padding:14px}
  .room-metrics>div{padding:12px}
}

.pass-snapshot{max-width:1280px;margin:0 auto;padding:0 24px 24px;font-size:.8rem;color:var(--muted)}
@media(max-width:700px){.pass-snapshot{padding:0 16px 20px}}
footer ul{margin:0;padding:0}

.pos-room{display:grid;gap:12px}.pos-controls{display:flex;flex-wrap:wrap;gap:12px;align-items:end}.pos-controls label{min-width:150px}.pos-controls .pills{margin-left:auto}.pos-summary,.pos-note{font-size:.8rem;color:var(--muted)}
.pos-table td:not(:first-child),.pos-table th:not(:first-child){text-align:right;white-space:nowrap}.pos-table td:first-child,.pos-table th:first-child{position:sticky;left:0;background:#fff;min-width:150px}.pos-table td small{display:block;color:var(--muted);font-size:.75rem}.pos-table a{color:var(--forest);font-weight:600;text-decoration:none}
#position-room{scroll-margin-top:96px}
@media(max-width:700px){.pos-controls label{flex:1 1 140px}.pos-controls .pills{margin-left:0;width:100%}}
