:root{--ink:#202a2b;--muted:#7b8580;--paper:#f4f2ec;--white:#fffefa;--line:#e8e6dd;--green:#355f52;--green2:#e2ece3;--orange:#cf784c;--shadow:0 12px 40px #23302a0a}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:13px "DM Sans",sans-serif}.app-shell{max-width:1460px;padding:0 52px;margin:auto}.topbar{height:68px;border-bottom:1px solid #e5e3da;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:2px;text-decoration:none;color:var(--ink);font:800 18px Manrope,sans-serif;letter-spacing:-.8px}.brand-mark{display:grid;place-items:center;width:27px;height:27px;margin-right:8px;border-radius:8px;background:var(--green);color:white;font-size:15px}.brand-amp{color:var(--orange)}.top-right{display:flex;align-items:center;gap:20px}.saved{font-size:11px;color:#849087}.saved i,.live-dot{display:inline-block;width:7px;height:7px;margin-right:7px;border-radius:50%;background:#78a583}.help-button{border:1px solid #d9dcd4;border-radius:50%;background:transparent;width:25px;height:25px;color:#69766e;cursor:pointer}.page-heading{display:flex;justify-content:space-between;align-items:end;padding:31px 0 24px}.eyebrow,.kicker{font-size:9px;letter-spacing:1.15px;font-weight:700;color:#879088}.eyebrow span{padding:0 5px;color:#c0a18e}h1,h2,p{margin:0}h1{font:800 32px/1.2 Manrope,sans-serif;letter-spacing:-1.35px;margin:8px 0 5px}h1 em{font-style:normal;color:var(--green)}.page-heading p{font-size:12px;color:#7f8983}.print-button{border:1px solid #e2e2d9;border-radius:5px;padding:9px 12px;background:var(--white);font:600 10px "DM Sans",sans-serif;color:#58685e;cursor:pointer}.print-button:hover,.icon-action:hover{background:#eff3ec}.app-grid{display:grid;grid-template-columns:290px 1fr;gap:19px;align-items:stretch;min-height:650px}.sidebar,.chart-area{background:var(--white);border:1px solid #e9e7de;border-radius:9px;box-shadow:var(--shadow)}.sidebar{position:relative;padding:0 18px 55px}.side-tabs{height:49px;display:flex;gap:15px;border-bottom:1px solid #eeeae2;margin-bottom:18px}.side-tab{position:relative;display:flex;align-items:center;gap:6px;padding:0 2px;border:0;background:none;color:#a0a59e;font:700 9px "DM Sans",sans-serif;letter-spacing:.5px;cursor:pointer}.side-tab span{font-size:11px;letter-spacing:0}.side-tab.active{color:var(--green)}.side-tab.active:after{content:"";position:absolute;height:2px;background:var(--green);left:0;right:0;bottom:-1px}.side-tab b{font-size:9px;background:#e6efe5;color:#55765e;padding:3px 5px;border-radius:10px}.section-title{display:flex;align-items:center;justify-content:space-between}.section-title h2{font:700 16px Manrope,sans-serif;letter-spacing:-.3px;margin-top:5px}.student-count{min-width:25px;height:23px;padding:0 7px;border-radius:14px;background:#f0f2eb;display:grid;place-items:center;color:#6c7b70;font-size:10px;font-weight:600}.roster-tools{display:flex;align-items:center;gap:7px;margin:15px 0 8px}.roster-tools button{border:1px solid #e8e7df;border-radius:4px;padding:6px 8px;background:#fffefa;color:#67746b;font:600 9px "DM Sans",sans-serif;cursor:pointer}.roster-tools button:first-child{background:#f2f5ee;color:#4b6d59;border-color:#e1e9dd}textarea{font:11px/1.65 "DM Sans",sans-serif;color:var(--ink);outline:none;resize:vertical}#rosterInput{width:100%;height:97px;padding:10px 11px;border:1px solid #e4e5dc;border-radius:5px;background:#fdfcf9}textarea:focus,input:focus,select:focus{border-color:#82a08b!important;box-shadow:0 0 0 2px #e0ece1}.microcopy{font-size:9px;color:#9ba19a;margin-top:6px}.section-rule{height:1px;background:#eeece5;margin:17px 0 16px}.room-title{margin-bottom:12px}.text-button{border:0;background:none;color:#57816b;font:600 10px "DM Sans",sans-serif;cursor:pointer}.layout-presets{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.preset{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;height:54px;border:1px solid #e8e9e0;border-radius:5px;background:#fffefa;color:#7b867f;font:500 9px "DM Sans",sans-serif;cursor:pointer}.preset.active{background:#eff4ed;border-color:#c9d9c9;color:#426a53}.preset-icon{font-size:17px;line-height:1}.room-config{display:grid;gap:11px;margin:16px 0 13px}.room-config>label{display:flex;align-items:center;justify-content:space-between;color:#65716a;font-size:10px}.number-control{height:25px;border:1px solid #e5e6de;border-radius:4px;display:flex;overflow:hidden}.number-control button{width:23px;border:0;background:#f7f7f1;color:#728077;cursor:pointer}.number-control input{width:30px;border:0;text-align:center;outline:none;-moz-appearance:textfield;font:600 10px "DM Sans",sans-serif}.number-control input::-webkit-inner-spin-button{-webkit-appearance:none}.room-config select{border:1px solid #e5e6de;border-radius:4px;background:#fffefa;padding:5px 6px;color:#617067;font:10px "DM Sans",sans-serif}.capacity-summary{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #efede6;padding:11px 0 13px;font-size:9px;color:#879189}.capacity-summary strong{color:#52695b;font-size:10px}.shuffle-button{width:100%;height:39px;border:0;border-radius:5px;background:var(--green);color:white;display:flex;align-items:center;padding:0 11px;gap:8px;font:600 11px "DM Sans",sans-serif;cursor:pointer;transition:background .18s}.shuffle-button:hover{background:#294c40}.shuffle-symbol{font-size:17px}.shuffle-arrow{margin-left:auto;font-size:15px}.last-shuffle{min-height:25px;padding-top:8px;text-align:center;color:#9ba29b;font-size:9px}.sidebar-foot{position:absolute;bottom:0;left:0;right:0;height:40px;border-top:1px solid #eeece5;display:flex;align-items:center;padding:0 18px;color:#929b93;font-size:9px}.privacy-mark{color:#8cad8c;font-size:8px;margin-right:7px}.rules-panel .section-title{margin-bottom:14px}.rule-card{border:1px solid #eceae3;border-radius:5px;padding:12px;margin-bottom:10px;background:#fffefa}.rule-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}.rule-heading b,.front-rule b{display:block;font-size:10px;color:#4e5d54}.rule-heading p,.front-rule small{display:block;font-size:9px;color:#9ba19a;margin-top:3px}.rule-icon{width:23px;height:23px;border-radius:50%;display:grid;place-items:center;background:#f0f3ec;color:#69826f}.rule-card textarea{width:100%;height:50px;border:1px solid #e9e8e1;border-radius:4px;padding:7px;background:#fdfcf9}.front-rule label{display:flex;gap:8px;align-items:flex-start}.front-rule input{accent-color:var(--green);margin:1px 0}.front-rule textarea{margin-top:10px}.rules-note{font-size:9px;color:#949c95;line-height:1.55;margin:13px 1px}.chart-area{padding:18px 19px 13px;min-width:0;display:flex;flex-direction:column}.chart-toolbar{display:flex;align-items:center;justify-content:space-between;margin:0 1px 13px}.chart-toolbar h2{font:700 16px Manrope,sans-serif;letter-spacing:-.3px;margin-top:4px}.live-dot{width:6px;height:6px;margin:0 0 1px 4px}.chart-actions{display:flex;align-items:center;gap:8px}.desk-count{font-size:10px;color:#818c84;margin-right:5px}.icon-action{width:28px;height:27px;border:1px solid #e8e8e0;border-radius:4px;background:transparent;color:#78857d;font-size:15px;cursor:pointer}.room-viewport{flex:1;min-height:540px;overflow:auto;border:1px solid #e2e5da;border-radius:6px;background:#f1f3eb}.room-stage{position:relative;min-width:580px;min-height:540px;height:100%;overflow:hidden;background-color:#f2f4ee;background-image:linear-gradient(#dfe5db42 1px,transparent 1px),linear-gradient(90deg,#dfe5db42 1px,transparent 1px);background-size:28px 28px}.stage-front{position:absolute;top:19px;left:50%;transform:translateX(-50%);height:28px;display:flex;align-items:center;gap:12px;color:#879387;font-size:8px;letter-spacing:1.3px;white-space:nowrap}.front-line{width:95px;height:1px;background:#d6ddd3}.stage-items{position:absolute;inset:70px 30px 37px}.room-item{position:absolute;touch-action:none;user-select:none;display:flex;align-items:center;justify-content:center}.room-item.table-item{width:112px;height:96px}.table-body{width:94px;min-height:58px;position:relative;z-index:1;border:1px solid #d4c5aa;border-radius:14px;background:#eee3d0;box-shadow:0 3px 0 #d6c9b2;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:center;justify-items:center;gap:4px;padding:8px 6px}.room-item:nth-child(3n+2) .table-body{background:#e4ece0;border-color:#cbdacb;box-shadow:0 3px 0 #cfdbcd}.room-item:nth-child(3n) .table-body{background:#efe2d9;border-color:#decdc0;box-shadow:0 3px 0 #dfd0c4}.room-item.desk-item{width:75px;height:64px}.desk-item .table-body{width:51px;min-height:34px;padding:4px;border-radius:6px;display:block}.table-legs{position:absolute;z-index:0;width:78px;height:68px;border-left:2px solid #ded3c2;border-right:2px solid #ded3c2;top:16px}.desk-item .table-legs{width:42px;height:44px;top:11px}.seat-chip{position:relative;max-width:100%;height:19px;padding:2px 4px;border-radius:3px;background:#fffefa;border:1px solid #e4e4db;color:#53665a;font-size:8px;font-weight:600;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;cursor:grab}.seat-chip:hover{border-color:#9db39e;z-index:3}.seat-chip.empty{height:13px;background:#f8f6ef;border-style:dashed;color:#c4bcad;cursor:default}.desk-item .seat-chip{height:22px;text-align:center}.table-label{position:absolute;bottom:0;left:0;right:0;text-align:center;color:#9ca297;font-size:7px;letter-spacing:.65px;pointer-events:none}.room-item.editing{cursor:grab;outline:1px dashed #77967e;outline-offset:0;border-radius:8px}.room-item.editing:active{cursor:grabbing}.room-item.selected{outline:2px solid #62896c!important;outline-offset:2px;border-radius:9px}.room-item.front-focus .table-body,.room-item.front-focus .table-body{box-shadow:0 0 0 2px #e5a66f,0 3px 0 #d6c9b2}.stage-door{position:absolute;bottom:0;left:26px;height:24px;border-top:1px solid #d3dbd1;color:#9ba397;font-size:7px;letter-spacing:1px;padding-top:7px}.stage-legend{position:absolute;right:16px;bottom:10px;color:#a3a89e;font-size:7px;letter-spacing:1px}.chart-footer{height:36px;display:flex;align-items:end;justify-content:space-between;color:#7c8880;font-size:9px}.chart-footer>div{display:flex;align-items:center}.chart-footer i{width:6px;height:6px;border-radius:50%;background:#82a989;margin-right:7px}.hint-text{color:#a1a69f}.layout-editor{margin-bottom:11px}.editor-tools,.selected-tools{display:flex;align-items:center;gap:6px;padding:7px;background:#f4f6f0;border:1px solid #e4e9df;border-radius:5px;margin-bottom:6px}.editor-tools>span{margin-right:auto}.editor-tools b{display:block;color:#52685a;font-size:10px}.editor-tools small{display:block;color:#9aa198;font-size:8px;margin-top:2px}.editor-tools button,.selected-tools button{padding:6px 8px;border:1px solid #dfe5db;border-radius:4px;background:#fffefa;color:#5d7565;font:600 9px "DM Sans",sans-serif;cursor:pointer}.editor-tools .done-editing{background:var(--green);border-color:var(--green);color:#fff}.selected-tools{padding:5px 7px}.selected-tools span{font-size:9px;color:#627168;margin-right:auto}.selected-tools .remove-tool{color:#a55743}.bottom-footer{display:flex;justify-content:space-between;padding:17px 2px 20px;color:#a0a59d;font-size:8px;letter-spacing:.8px}.bottom-footer span+span{font-size:9px;letter-spacing:0}dialog{max-width:380px;border:1px solid var(--line);border-radius:9px;padding:27px;color:var(--ink);box-shadow:0 20px 70px #14231d33}dialog::backdrop{background:#17221d66}dialog h2{font:700 20px Manrope,sans-serif;margin:11px 0}dialog p{font-size:12px;line-height:1.65;color:#69746d}.dialog-x{position:absolute;right:11px;top:8px;border:0;background:none;font-size:23px;color:#78817a;cursor:pointer}.notice-ok{margin-top:19px;border:0;border-radius:4px;padding:8px 15px;background:var(--green);color:white;font:600 10px "DM Sans",sans-serif;cursor:pointer}.over-capacity{color:#a55743!important}.room-item.rotated{transform:rotate(90deg)}[hidden]{display:none!important}
@media(max-width:920px){.app-shell{padding:0 24px}.app-grid{grid-template-columns:265px 1fr;gap:13px}.sidebar{padding-left:14px;padding-right:14px}.chart-area{padding:15px}.room-viewport,.room-stage{min-height:500px}}
@media(max-width:700px){.app-shell{padding:0 12px}.topbar{height:57px}.page-heading{padding:25px 0 17px}h1{font-size:26px}.page-heading p{font-size:10px;max-width:270px}.print-button{padding:8px}.print-button span{display:none}.app-grid{grid-template-columns:1fr;min-height:unset}.chart-area{order:0;min-height:500px}.sidebar{order:1;min-height:570px}.room-viewport,.room-stage{min-height:440px}.stage-items{inset:65px 8px 35px}.room-item.table-item{width:91px;height:81px}.table-body{width:78px;min-height:49px;padding:6px 4px;gap:3px}.seat-chip{height:16px;font-size:7px;padding:2px 3px}.seat-chip.empty{height:11px}.table-legs{width:65px;height:58px;top:14px}.room-item.desk-item{width:62px;height:52px}.desk-item .table-body{width:45px;min-height:30px}.desk-item .table-legs{width:38px;height:37px}.table-label{font-size:6px}.chart-footer{align-items:center}.hint-text{display:none}.chart-toolbar{margin-bottom:9px}.bottom-footer{padding-top:14px}}
@media print{body{background:white}.app-shell{max-width:none;padding:0}.topbar,.page-heading,.sidebar,.bottom-footer,.chart-actions,.chart-footer .hint-text{display:none!important}.app-grid{display:block;min-height:0}.chart-area{border:0;box-shadow:none;padding:0}.chart-toolbar{margin-bottom:10px}.room-viewport{overflow:visible;border:1px solid #ddd;background:#f5f5f1}.room-stage{min-width:0;min-height:650px;background-image:none}.stage-items{inset:70px 25px 36px}.seat-chip{font-size:9px}.room-item.table-item{width:122px;height:106px}.table-body{width:104px;min-height:66px}}
.stage-front.front-at-bottom{top:auto;bottom:18px}
.seat-chip.drop-target{outline:2px solid #719273;outline-offset:1px}
.room-item.moving{z-index:10}

/* Clear table colors, larger seat labels, and projector presentation. */
.room-item .table-body{background:hsl(var(--table-hue) 65% 90%);border:2px solid hsl(var(--table-hue) 53% 48%);box-shadow:0 4px 0 hsl(var(--table-hue) 45% 70%)}
.room-item .table-legs{border-color:hsl(var(--table-hue) 30% 70%)}
.room-item .seat-chip:not(.empty){height:27px;padding:4px 5px;border:2px solid hsl(var(--table-hue) 56% 47%);background:#fff;color:#192b2c;font-size:11px;font-weight:800;line-height:1.1;border-radius:5px;box-shadow:0 1px 1px #14261c18}
.room-item .seat-chip.empty{height:17px;border:1px dashed hsl(var(--table-hue) 30% 65%);background:#ffffff90;color:#84918a}
.room-item .table-label{font-size:8px;font-weight:700;color:hsl(var(--table-hue) 48% 31%)}
.room-item.table-item{width:130px;height:108px}
.table-item .table-body{width:108px;min-height:70px;padding:8px 6px;gap:5px}
.room-item.desk-item{width:84px;height:72px}
.desk-item .table-body{width:61px;min-height:42px;padding:5px}
.desk-item .seat-chip:not(.empty){height:29px;font-size:11px}
.desk-item .table-legs{width:50px;height:50px;top:12px}
.selected-tools button{min-width:54px;font-size:10px}
.projector-button{border:1px solid #c9d9c9;border-radius:5px;padding:7px 10px;background:#edf4ec;color:#315e4b;font:700 10px "DM Sans",sans-serif;cursor:pointer;white-space:nowrap}
.projector-button:hover{background:#dfece0}
.app-shell.projector-mode{max-width:none;width:100%;height:100vh;padding:16px 22px;background:#fbfcf8}
.app-shell.projector-mode .topbar,.app-shell.projector-mode .page-heading,.app-shell.projector-mode .sidebar,.app-shell.projector-mode .bottom-footer{display:none!important}
.app-shell.projector-mode main,.app-shell.projector-mode .app-grid{display:block;width:100%;height:100%;min-height:0}
.app-shell.projector-mode .chart-area{height:100%;border:0;box-shadow:none;padding:0;background:transparent}
.app-shell.projector-mode .chart-toolbar{min-height:52px;margin:0 0 10px}
.app-shell.projector-mode .chart-toolbar h2{font-size:23px}
.app-shell.projector-mode .kicker{font-size:11px}
.app-shell.projector-mode .desk-count{font-size:15px}
.app-shell.projector-mode .projector-button{font-size:13px;padding:10px 13px}
.app-shell.projector-mode .icon-action{width:37px;height:36px;font-size:20px}
.app-shell.projector-mode .room-viewport{height:calc(100vh - 94px);min-height:0;border:2px solid #cbd6c9;border-radius:10px;overflow:hidden}
.app-shell.projector-mode .room-stage{height:100%;min-height:620px;min-width:0;background-size:40px 40px}
.app-shell.projector-mode .stage-items{inset:80px 3.5% 50px}
.app-shell.projector-mode .stage-front{top:25px;font-size:12px;font-weight:800;letter-spacing:1.8px}
.app-shell.projector-mode .front-line{width:140px;height:2px}
.app-shell.projector-mode .stage-front.front-at-bottom{top:auto;bottom:18px}
.app-shell.projector-mode .room-item.table-item{width:168px;height:140px}
.app-shell.projector-mode .table-item .table-body{width:142px;min-height:91px;padding:11px 9px;gap:7px;border-radius:18px;box-shadow:0 6px 0 hsl(var(--table-hue) 45% 70%)}
.app-shell.projector-mode .room-item.desk-item{width:108px;height:90px}
.app-shell.projector-mode .desk-item .table-body{width:80px;min-height:56px;padding:7px;border-radius:8px}
.app-shell.projector-mode .room-item .seat-chip:not(.empty){height:37px;padding:6px 7px;font-size:15px;border-width:2px;border-radius:6px}
.app-shell.projector-mode .room-item .seat-chip.empty{height:21px;font-size:12px}
.app-shell.projector-mode .desk-item .seat-chip:not(.empty){height:38px;font-size:14px}
.app-shell.projector-mode .room-item .table-legs{width:118px;height:100px;top:20px;border-width:3px}
.app-shell.projector-mode .desk-item .table-legs{width:67px;height:66px;top:15px}
.app-shell.projector-mode .room-item .table-label{font-size:11px;letter-spacing:1px}
.app-shell.projector-mode .stage-door,.app-shell.projector-mode .stage-legend{font-size:10px;font-weight:700}
.app-shell.projector-mode .chart-footer{height:27px;font-size:11px}
@media(max-width:700px){.projector-button{font-size:9px;padding:7px}.app-shell.projector-mode{padding:8px}.app-shell.projector-mode .room-viewport{height:calc(100vh - 80px)}.app-shell.projector-mode .stage-items{inset:68px 2% 44px}.app-shell.projector-mode .room-item.table-item{width:100px;height:86px}.app-shell.projector-mode .table-item .table-body{width:85px;min-height:58px;padding:5px;gap:3px}.app-shell.projector-mode .room-item .seat-chip:not(.empty){height:27px;font-size:9px;padding:3px}.app-shell.projector-mode .room-item .seat-chip.empty{height:15px}.app-shell.projector-mode .room-item .table-legs{width:74px;height:60px;top:12px}.app-shell.projector-mode .room-item .table-label{font-size:7px}}
