:root{--paper:#f7f4ed;--card:#fffdf8;--ink:#2d2224;--muted:#6d5d59;--line:#e9dfd3;--gold:#edcf8a;--serif:"Baskervville","Georgia",serif;--sans:"Inter","Segoe UI",system-ui,sans-serif}
*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.5 var(--sans)}
button,input,select{font:inherit;color:inherit}
button,select{cursor:pointer}
a{color:inherit;text-decoration:none}
:focus-visible{outline:2px solid #8b4d17;outline-offset:3px}
.top{background:#481626;color:#fff6e6;border-bottom:1px solid #7d4652}
.top-inner{max-width:1580px;margin:auto;min-height:72px;padding:0 36px;display:flex;align-items:center;justify-content:space-between;gap:20px}
.brand{font:25px var(--serif);white-space:nowrap;letter-spacing:-.6px;display:flex;align-items:center;gap:6px}
.brand i{color:#e8c585}
.mark{font:22px var(--sans);color:#e6c585;margin-right:4px}
nav{display:flex;align-self:stretch;gap:30px}
nav a{display:grid;place-items:center;padding:0 4px;color:#e6cbd0;font-weight:600;border-bottom:2px solid transparent}
nav a[aria-current="page"]{color:#fff5dd;border-color:var(--gold)}
.backup{border:1px solid #87505b;background:transparent;color:#fff6e6;border-radius:7px;padding:8px 14px;white-space:nowrap}
.backup:hover{background:#6a2c40}
.wrap{max-width:1580px;margin:auto;padding:30px 36px 0}
.heading{display:flex;justify-content:space-between;align-items:end;gap:14px;margin-bottom:24px}
.eyebrow{color:#7f4c42;font-size:11px;letter-spacing:.21em;font-weight:750;margin:0 0 5px}
h1,h2,h3,p{margin:0}
h1{font:clamp(37px,5vw,56px)/1.08 var(--serif);letter-spacing:-.055em;color:#3b1d25}
h2{font:24px/1.2 var(--serif);letter-spacing:-.025em;color:#482530}
h3{font-size:14px}
.sub{color:var(--muted);margin-top:7px}
.button{border:1px solid #decfc1;border-radius:7px;background:var(--card);padding:8px 13px;font-weight:650;white-space:nowrap}
.button:hover{background:#f5ece1}
.gold{background:var(--gold);border-color:#d7b86f;color:#452b15}
.gold:hover{background:#f2dda6}
.heading .button{padding:10px 17px}
.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:20px}
.metric{display:flex;align-items:center;min-height:77px;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 15px}
.metric-icon{flex:none;display:grid;place-items:center;width:37px;height:37px;border-radius:9px;background:#f1e5d7;color:#71374a;font-size:16px}
.metric strong{display:block;font:24px/1.12 var(--serif);color:#4d2631}
.metric small{color:var(--muted);font-size:12px}
.workspace{display:grid;grid-template-columns:minmax(0,1fr) 278px;gap:17px;align-items:start}
.card{min-width:0;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 3px 12px #45282107;overflow:hidden}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px}
.card-head p{color:var(--muted);font-size:12px;margin-top:3px}
.map-controls,.zoom{display:flex;align-items:center;gap:8px}
input,select,textarea{background:#fffdf8;border:1px solid #dacdc0;border-radius:6px;padding:8px 9px;min-width:0;max-width:100%}
.zoom{gap:0;border:1px solid #dacdc0;border-radius:7px;overflow:hidden}
.zoom button{border:0;background:transparent;padding:7px 9px}
.zoom button:hover{background:#f2e4d7}
.zoom button+button{border-left:1px solid #e5d9cc}
.viewport{margin:0 13px;overflow:auto;border:1px solid #ddccbb;border-radius:8px;background:#eee5da}
.map{margin:auto;position:relative;overflow:clip}
.room{position:absolute;top:0;left:0;transform-origin:top left;background-color:#f5efe5;background-image:radial-gradient(#ac8d722c 1.1px,transparent 1.1px);background-size:18px 18px;border:1px solid #e6d6c5;isolation:isolate}
.stage,.entrance,.zone,.aisle{position:absolute;text-align:center;left:50%;transform:translateX(-50%);font-weight:700;letter-spacing:.16em}
.stage{top:19px;width:292px;padding:8px 10px;border-radius:7px;background:#562236;color:#fff3dc;font-size:13px}
.entrance{bottom:9px;font-size:11px;color:#765d50}
.zone{top:119px;font-size:10px;color:#866958;white-space:nowrap}
.zone.left{left:24%}.zone.right{left:76%}
.aisle{top:351px;color:#88705d;font-size:10px}
.aisle-path{position:absolute;left:50%;top:281px;bottom:40px;border-left:1px dashed #b29379}
.aisle{background:#f5efe5;padding:5px 0}
.node{position:absolute;transform:translate(-50%,-50%);display:grid;place-content:center;justify-items:center;isolation:isolate;border:1px solid #bf9061;font-size:13px;font-weight:800;line-height:1.15;color:#4b3024;background:#fff9ee;padding:0}
.round{width:51px;height:51px;border-radius:50%;box-shadow:0 0 0 4px #f5eee3}
.round::before{content:"";position:absolute;inset:-6px;border:2px dotted #cba888;border-radius:50%;pointer-events:none}
.node small{font-size:10px;font-weight:500;margin-top:2px}
.node.priority{background:#efd3a1;border-color:#ba813a}
.node.buffer{background:#f4eee7;border:1px dashed #8d7565;color:#5d5149}
.node.buffer::before{border-color:transparent}
.node.selected{outline:2px solid #732d44;outline-offset:5px;z-index:2}
.node:hover{filter:brightness(.94);z-index:2}
.node:focus-visible{z-index:3}
.node.couple{border-radius:21px;width:139px;height:30px;background:#f3dfe0;color:#542031;border-color:#ac7582}
.node.head{width:185px;height:32px;border-color:#9b5368;border-radius:12px;background:#65283d;color:#fff1dd}
.node.head.parallel{width:101px;height:39px;border-radius:7px}
.node.head.curve{width:106px;height:34px;border:none;background:transparent;color:#fff1dd}
.node.head.curve::before,.node.head.curve::after{content:"";position:absolute;inset:0 39% 0 0;border-radius:35px 18px 20px 8px;transform:translateY(-5px) rotate(15deg);z-index:-1;background:#65283d}
.node.head.curve::after{inset:0 0 0 39%;transform:translateY(5px) rotate(15deg);border-radius:8px 20px 35px 18px}
.legend{display:flex;flex-wrap:wrap;gap:10px 17px;padding:12px 17px;color:var(--muted);font-size:11px}
.legend span{display:flex;align-items:center;gap:5px}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#fff9ee;border:1px solid #a87445}
.dot.priority{background:#deab58}.dot.buffer{background:#f3ece2;border-style:dashed}.dot.special{background:#702c43;border-color:#702c43}
.inspector .card-head{border-bottom:1px solid var(--line)}
.details{padding:14px 16px}
.selected-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.tile{flex:none;display:grid;place-items:center;min-width:41px;height:41px;padding:0 6px;border-radius:8px;background:#f0e0d7;color:#65283d;font-weight:800}
.selected-head p,.hint{font-size:12px;color:var(--muted)}
label{display:grid;gap:4px;font-size:12px;font-weight:650;margin:0 0 9px}
label input,label select,textarea{width:100%;font-size:14px;font-weight:400}
.row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.room-settings{border-top:1px solid var(--line);background:#faf6ee}
.room-settings h3{margin-bottom:9px;color:#552b38}
.room-settings label:last-child{margin-bottom:0}
.table-actions{display:flex;flex-wrap:wrap;align-items:center;gap:5px 8px;margin-top:10px}
.link-button{border:0;background:transparent;color:#70283e;text-decoration:underline;padding:4px 0}
.progress{height:5px;border-radius:9px;background:#eee3d6;margin:5px 0 7px;overflow:hidden}
.progress span{display:block;height:100%;background:#95604e}
.guest-tools{padding:0 18px 12px;display:flex;flex-wrap:wrap;gap:8px}
.guest-tools input{flex:1;min-width:180px}
.table-wrap{overflow:auto}
table{border-collapse:collapse;width:100%;text-align:left}
th,td{padding:9px 13px;border-top:1px solid var(--line)}
th{background:#f6ecdf;font-size:12px}
td button{white-space:nowrap}
td:last-child{white-space:nowrap}
.empty{padding:25px;text-align:center;color:var(--muted)}
.sheet{padding:18px}
.sheet h3{margin-bottom:5px}
.sheet .viewport{margin:10px 0}
.sheet-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:7px;margin-top:10px}
.roster{break-inside:avoid;border:1px solid var(--line);padding:9px}
.roster ol{margin:4px 0;padding-left:24px}
.unassigned{margin-top:16px}
.unassigned ol{columns:3 240px;margin:0;padding-left:24px}
.unassigned li{break-inside:avoid}
footer{display:flex;justify-content:space-between;gap:10px;color:var(--muted);padding:14px 0 18px;font-size:12px}
dialog{width:min(480px,calc(100% - 28px));border:1px solid var(--line);border-radius:12px;padding:22px;background:var(--card);color:var(--ink);max-height:90dvh}
dialog::backdrop{background:#29101cb0}
dialog h2{margin-bottom:10px}
dialog p{margin:0 0 11px}
.dialog-actions{display:flex;gap:8px;justify-content:end;margin-top:14px}
.error{color:#982341;margin-top:8px}
.toast{position:fixed;z-index:5;bottom:20px;right:20px;max-width:min(430px,calc(100% - 40px));background:#4a1f2d;color:white;padding:11px 14px;border-radius:8px;box-shadow:0 4px 14px #33121a44}
@media(max-width:1030px){.wrap,.top-inner{padding-left:20px;padding-right:20px}.workspace{grid-template-columns:minmax(0,1fr) 245px}}
@media(max-width:730px){.top-inner{display:grid;grid-template-columns:1fr auto;gap:0 10px;padding-top:11px}.top-inner nav{grid-column:1/-1;grid-row:2;min-height:41px;gap:19px}.wrap{padding-top:19px}.workspace{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(2,1fr);gap:8px}.metric{min-height:61px;padding:8px 10px}.map-card .card-head{align-items:start;flex-direction:column}.viewport{max-height:65vh}.heading{align-items:start}}
@media print{
  @page{margin:12mm}
  body,.card,.room,.viewport{background:#fff;color:#111}
  .top,.heading,.metrics,#floor,#guests,#print>.card-head,footer,.toast,dialog{display:none!important}
  .wrap,.sheet{padding:0;margin:0;max-width:none}
  #print{border:0;box-shadow:none;overflow:visible}
  .sheet .viewport{overflow:hidden;max-height:none}
  .sheet .room{print-color-adjust:exact}
  .sheet .stage,.sheet .node,.sheet .node::before,.sheet .node::after{print-color-adjust:exact}
  thead{display:table-header-group}
  tr{break-inside:avoid}
  th,td{padding:4px 7px}
  .sheet-grid{grid-template-columns:repeat(3,1fr)}
  .legend{print-color-adjust:exact}
}
