*{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f5f5f5;--panel: #ffffff;--ink: #111111;--muted: #666666;--line: #d9d9d9;--dark: #161616;--accent: #111111}html,body,#root{height:100%}body{font-family:PingFang SC,Microsoft YaHei,Noto Sans CJK SC,sans-serif;background:var(--bg);color:var(--ink);font-size:14px}button{font:inherit;cursor:pointer;border:1px solid var(--ink);background:var(--panel);color:var(--ink);padding:6px 14px;border-radius:6px}button:hover,button.primary{background:var(--ink);color:#fff}button.primary:hover{background:#333}button.ghost{border-color:var(--line)}button.small{padding:2px 8px;font-size:12px;border-radius:4px}button.danger{border-color:#b00020;color:#b00020}button.danger:hover{background:#b00020;color:#fff}button:disabled{opacity:.4;cursor:not-allowed}input,select{font:inherit;padding:6px 10px;border:1px solid var(--line);border-radius:6px;background:#fff}input:focus,select:focus{outline:1px solid var(--ink)}label{-webkit-user-select:none;user-select:none}.login-wrap{height:100%;display:flex;align-items:center;justify-content:center}.login-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:40px;width:340px;box-shadow:0 8px 30px #00000014}.login-card h1{font-size:20px;margin-bottom:4px}.login-card .sub{color:var(--muted);font-size:12px;margin-bottom:24px}.login-card input{width:100%;margin-bottom:12px;padding:10px 12px}.login-card button{width:100%;padding:10px}.login-err{color:#b00020;font-size:12px;margin-bottom:10px;min-height:16px}.app{display:flex;height:100%}.sidebar{width:56px;background:var(--dark);color:#fff;display:flex;flex-direction:column;align-items:center;padding:10px 0;gap:6px;flex-shrink:0;transition:width .18s;overflow:hidden}.sidebar.open{width:200px;align-items:stretch;padding:10px}.sidebar .sb-btn{background:none;border:none;color:#ccc;border-radius:8px;padding:9px 10px;display:flex;align-items:center;gap:10px;white-space:nowrap;font-size:13px}.sidebar .sb-btn:hover{background:#2c2c2c;color:#fff}.sidebar .sb-btn .icon{font-size:16px;width:22px;text-align:center;flex-shrink:0}.sidebar .spacer{flex:1}.sidebar .ver{color:#555;font-size:11px;text-align:center;padding:6px 0}.sidebar hr{border:none;border-top:1px solid #2c2c2c;margin:4px 0}.main{flex:1;display:flex;flex-direction:column;min-width:0}.topbar{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--line)}.topbar h2{font-size:16px}.topbar .hint{color:var(--muted);font-size:12px}.topbar .spacer{flex:1}.board-wrap{flex:1;overflow:auto;padding:16px}.board{display:inline-block;min-width:100%}.podium{text-align:center;border:2px solid var(--ink);border-radius:8px;padding:8px;font-weight:600;letter-spacing:12px;margin-bottom:18px;background:#fff}.groups{display:flex;gap:28px;justify-content:center}.group{display:flex;flex-direction:column;gap:6px}.group-label{text-align:center;font-size:12px;color:var(--muted);margin-top:4px}.seat-row{display:flex;gap:6px}.seat{width:76px;height:46px;border:1.5px solid var(--ink);border-radius:7px;background:#fff;display:flex;align-items:center;justify-content:center;text-align:center;font-size:13px;cursor:grab;position:relative;padding:2px;-webkit-user-select:none;user-select:none}.seat.empty{border-style:dashed;border-color:var(--line);cursor:default}.seat.disabled{background:repeating-linear-gradient(45deg,#eee,#eee 6px,#f9f9f9 6px,#f9f9f9 12px);border-color:var(--line);color:#bbb;cursor:pointer}.seat.drop-over{outline:2px solid #000;outline-offset:2px}.seat .pin{position:absolute;top:2px;right:4px;font-size:10px}.seat .focus-dot{position:absolute;top:2px;left:4px;width:8px;height:8px;border-radius:50%;background:#b00020}.board.editing .seat{cursor:pointer}.drawer{border-top:1px solid var(--line);background:var(--panel);padding:8px 16px 12px;flex-shrink:0}.drawer-head{display:flex;align-items:center;gap:10px;margin-bottom:8px;font-size:13px}.drawer-head .count{color:var(--muted)}.drawer-body{display:flex;flex-wrap:wrap;gap:6px;max-height:130px;overflow-y:auto}.stu-tile{border:1.5px solid var(--ink);border-radius:6px;padding:5px 10px;background:#fff;cursor:grab;font-size:13px;-webkit-user-select:none;user-select:none;position:relative}.stu-tile.focus{border-color:#b00020}.stu-tile .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#b00020;margin-right:4px}.drawer.drop-over{outline:2px dashed #000;outline-offset:-4px}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.modal{background:#fff;border-radius:12px;padding:22px;width:640px;max-width:100%;max-height:88vh;overflow-y:auto;box-shadow:0 12px 40px #00000040}.modal.wide{width:860px}.modal h3{font-size:16px;margin-bottom:14px}.modal .row{display:flex;gap:10px;align-items:center;margin-bottom:10px;flex-wrap:wrap}.modal .row label{min-width:76px}.modal .actions{display:flex;gap:10px;justify-content:flex-end;margin-top:18px}.modal .err{color:#b00020;font-size:12px;margin-top:8px}.modal section{border:1px solid var(--line);border-radius:8px;padding:12px;margin-bottom:12px}.modal section h4{font-size:13px;margin-bottom:8px}.muted{color:var(--muted);font-size:12px}table.tbl{width:100%;border-collapse:collapse;font-size:13px}table.tbl th,table.tbl td{border:1px solid var(--line);padding:6px 8px;text-align:left}table.tbl th{background:#f0f0f0}.notes{background:#fafafa;border:1px solid var(--line);border-radius:8px;padding:10px 14px;margin:10px 0}.notes li{margin-left:18px;margin-bottom:4px;font-size:13px}.tag{display:inline-block;border:1px solid var(--line);border-radius:4px;padding:1px 6px;font-size:12px;margin:2px}.prio-item{display:flex;align-items:center;gap:8px;border:1px solid var(--ink);border-radius:6px;padding:5px 10px;background:#fff}.toast{position:fixed;top:20px;left:50%;transform:translate(-50%);background:var(--ink);color:#fff;padding:10px 22px;border-radius:8px;z-index:200;box-shadow:0 4px 16px #0000004d;font-size:13px}.empty-state{text-align:center;color:var(--muted);padding:60px 20px}.empty-state .big{font-size:40px;margin-bottom:12px}
