:root{--g:#153923;--bg:#eee9df;--card:#fffdf8;--line:#d8d1c4;--muted:#6d776f}*{box-sizing:border-box}html,body{height:100%}body{margin:0;font-family:system-ui,-apple-system,sans-serif;background:var(--bg);color:#173724;overflow:hidden}header.top{height:70px;background:var(--g);color:#fff;box-shadow:0 3px 15px #0002;transition:height .18s ease}.fullbar{height:70px;padding:9px 13px;display:flex;align-items:center;gap:16px}.compactbar{display:none;width:100%;height:30px;border:0;background:var(--g);color:#fff;padding:0 12px;align-items:center;justify-content:space-between;font-size:11px;font-weight:850}.brand{min-width:178px}.brand h1{margin:0;font-size:19px}.brand small{opacity:.72;font-size:11px}.tabs{display:flex;gap:6px;overflow:auto;flex:1}.tabs button{white-space:nowrap;border:1px solid #ffffff55;background:#ffffff12;color:#fff;border-radius:999px;padding:8px 12px;font-weight:850}.tabs button.active{background:#fff;color:var(--g)}.clock{font-weight:900;font-size:18px}main{height:calc(100vh - 70px);padding:8px;overflow:hidden;transition:height .18s ease}body.header-collapsed header.top{height:30px}body.header-collapsed .fullbar{display:none}body.header-collapsed .compactbar{display:flex}body.header-collapsed main{height:calc(100vh - 30px)}.notice{background:#fff5d8;border:1px solid #d8b86b;border-radius:9px;padding:7px 9px;margin-bottom:7px;font-size:11px}.notice.error{background:#f8ded9;border-color:#c87063;color:#7e332a}.kanban{height:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.pass-kanban{grid-template-columns:repeat(4,minmax(0,1fr))}.lane{min-width:0;display:flex;flex-direction:column;background:#f8f5ef;border:1px solid #d6d0c4;border-radius:11px;overflow:hidden}.lane-head{height:42px;padding:7px 9px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #d8d2c7}.lane.received .lane-head{background:#eeece5}.lane.preparing .lane-head{background:#f8dda0}.lane.ready .lane-head{background:#cce5c6}.lane.served .lane-head{background:#dadbd7}.lane-body{flex:1;overflow-y:auto;padding:6px}.count{background:#ffffffc9;border-radius:999px;padding:2px 7px;font-size:10px;font-weight:900}.group,.pass-card,.served-group{background:var(--card);border:1px solid var(--line);border-radius:9px;margin-bottom:6px;overflow:hidden}.group.sync{box-shadow:0 0 0 2px #d95b3f inset}.group.priority-close{border:2px solid #d94f37}.group-head,.pass-head,.served-head{padding:6px 7px;border-bottom:1px solid #e5dfd6;display:flex;justify-content:space-between;gap:6px}.group-title strong,.pass-head strong,.served-head strong{display:block;font-size:15px}.group-title small,.pass-head small,.served-head small{font-size:9px;color:var(--muted)}.age{font-size:9px;font-weight:950;padding:3px 6px;border-radius:999px;background:#e9eee8}.sync-banner{padding:4px 7px;background:#ffe4dc;color:#8d3325;font-size:9px;font-weight:950}.priority-banner{padding:4px 7px;background:#d94f37;color:#fff;font-size:9px;font-weight:950}.desync-banner,.stage-alert,.pass-global-alert{display:flex;justify-content:space-between;gap:8px;padding:5px 7px;font-size:9px;font-weight:950}.desync-banner{background:#ffe8b3}.stage-alert.waiting,.pass-global-alert.waiting{background:#fff0bd}.stage-alert.preparing,.pass-global-alert.preparing{background:#ffe0b3}.desync-banner.hot,.stage-alert.critical,.pass-global-alert.critical{background:#c9362c;color:#fff;animation:flash .8s steps(2,end) infinite}@keyframes flash{0%,45%{background:#c9362c;color:#fff}46%,100%{background:#ffd400;color:#3f2c00}}.line,.pass-line,.served-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px;align-items:center;padding:5px 7px;border-bottom:1px solid #eee9e0}.line.ready,.pass-line.ready{background:#edf7ea}.line.preparing,.pass-line.preparing{background:#fff5d8}.line-main strong{font-size:12px}.line-main small{display:block;color:var(--muted);font-size:8px}.line-main .note{color:#81501b;font-weight:850}.actions{display:flex;gap:3px}.actions button,.bulk button,.pass-actions button,.assign-btns button{border:1px solid #b7c0b7;border-radius:6px;background:#fff;color:var(--g);font-size:8px;font-weight:900;padding:5px 6px}.actions .primary,.bulk .primary{background:var(--g);color:#fff}.actions .ready,.bulk .ready{background:#e4f3e1}.bulk,.pass-actions{display:flex;gap:4px;flex-wrap:wrap;padding:5px 7px;background:#faf7f1;border-top:1px solid #e4ddd3}.ready-wait{font-size:9px;font-weight:950;color:#215c2a}.ready-wait.hot{color:#fff;background:#c9372c;border-radius:6px;padding:4px 6px;animation:flash .7s steps(2,end) infinite}.ready-card{border:2px solid #68a16b}.ready-note{padding:4px 7px;background:#e4f3e1;color:#276331;font-size:9px;font-weight:950}.line-alert{display:block;font-size:8px;font-weight:950;color:#9a3b20}.empty{text-align:center;color:var(--muted);padding:24px 7px;font-size:10px}.devgrid{height:100%;overflow:auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:7px}.assign-card{background:#fff;border:1px solid var(--line);border-radius:9px;padding:8px}.assign-card small{display:block;color:var(--muted)}.assign-btns{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-top:6px}.assign-btns button.current{background:#153923;color:#fff}.session-block{display:grid;place-items:center;height:100%;text-align:center}.session-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:24px;max-width:460px}.session-card a{display:inline-block;background:#153923;color:#fff;text-decoration:none;border-radius:8px;padding:10px 14px;font-weight:800}@media(max-width:900px){body{overflow:auto}main{height:auto}.kanban,.pass-kanban{grid-template-columns:1fr}.clock{display:none}}
/* Bounded content height lets each column scroll instead of growing beyond the screen. */
body{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden}
header.top{flex-shrink:0}
main,body.header-collapsed main{flex:1;min-height:0;height:auto;display:flex;flex-direction:column;overflow:hidden}
#notice{flex:0 0 auto}
#content{flex:1;min-height:0;min-width:0;overflow:hidden}
.kanban{min-height:0}
.lane{min-height:0}
.lane-head{flex:0 0 42px}
.lane-body{flex:1 1 0;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable;scrollbar-width:auto;scrollbar-color:#77917d #eee9df;touch-action:pan-y}
.lane-body::-webkit-scrollbar{width:12px}
.lane-body::-webkit-scrollbar-thumb{background:#77917d;border-radius:8px;border:2px solid #eee9df}
.lane-body::-webkit-scrollbar-track{background:#eee9df}
@media(max-width:900px){
 body{display:block;height:auto;min-height:100dvh;overflow-y:auto}
 main,body.header-collapsed main{height:auto;display:block;overflow:visible}
 #content{overflow:visible}
 .kanban{height:auto}
 .lane{height:65vh;height:65dvh;min-height:240px}
 .devgrid{height:auto;overflow:visible}
}

.course-label{display:inline-block!important;margin:3px 6px;padding:3px 6px;border-radius:4px;background:#eee;color:#444!important}.course-label.course-first{background:#f8dfa0;color:#463400!important;font-weight:bold}

.assign-btns{grid-template-columns:repeat(4,minmax(0,1fr))}.served-group.bill-paid{background:#e4f3e1;border:2px solid #478551}.served-group.bill-printed{border:2px solid #ba9851}.billing-banner{padding:6px 7px;font-size:10px;font-weight:850;background:#fff0bd}.bill-paid .billing-banner{background:#cce5c6;color:#174d25}

/* Navigation to the owner report. */
.analysis-link,.analysis-link:visited{display:inline-flex;align-items:center;justify-content:center;color:#fff;text-decoration:none;border:1px solid #829b87;border-radius:999px;padding:10px 16px;font-size:13px;font-weight:700;white-space:nowrap;background:#264b34}
.analysis-link:hover{background:#3b6147}.analysis-link:focus-visible{outline:3px solid #d6c97b;outline-offset:3px}

.analysis-link[hidden]{display:none}
