:root{
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  color:#173d30;background:#f3f7f4;
  --navy:#064532;--green:#00754b;--green-hover:#005f3d;--green-soft:#e0f3e8;
  --ink:#173d30;--muted:#536c5e;--line:#ccdbd1;--surface:#fff;
  --ease:cubic-bezier(.23,1,.32,1);
}
*{box-sizing:border-box}
body{margin:0}
button,input,select{font:inherit}
button{cursor:pointer;touch-action:manipulation;color:inherit;border:1px solid var(--line);background:var(--surface);border-radius:9px;min-height:44px;padding:0 14px;transition:background-color 150ms ease,transform 150ms var(--ease)}
button:active:not(:disabled){transform:scale(.97)}
button:disabled{opacity:.38;cursor:default}
button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid #008657;outline-offset:3px}
input,select{accent-color:var(--green);caret-color:var(--green)}
::selection{background:#b0edcc;color:#063d2c}
[hidden]{display:none!important}
header{height:76px;background:var(--navy);color:#fff;display:flex;justify-content:space-between;align-items:center;padding:0 40px}
.identity{display:flex;align-items:center;gap:12px;font-size:16px;font-weight:650}
.mark{display:grid;place-items:center}
.sub{display:block;margin-top:4px;font-size:12px;color:#c2e6d2;font-weight:450}
.local{font-size:12px;color:#c2e6d2}
main{max-width:1500px;padding:30px 40px 24px;margin:auto}
h1,h2,h3,p{margin:0}
h1{font-size:32px;font-weight:700;letter-spacing:-.035em;line-height:1.2;color:#103d2b}
.heading{display:flex;align-items:center;justify-content:space-between;gap:20px}
.heading p{font-size:14px;line-height:1.6;color:var(--muted);margin-top:9px;max-width:65ch}
.primary{background:var(--green);border-color:var(--green);color:#fff;font-size:14px;font-weight:600}
.heading>.primary{min-height:46px;flex-shrink:0}
.overview{display:flex;align-items:center;gap:24px;margin:23px 0 20px;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.overview strong{font-size:20px;font-weight:700;color:var(--ink);margin-right:5px}
.people-action{display:inline-flex;align-items:center;gap:6px;padding:10px 15px;border:1px solid var(--green);background:var(--green);color:#fff;font-weight:600;min-height:46px}
.people-action strong{margin:0;color:#fff}
.people-action>span{margin-left:8px}
.history{margin-left:auto;display:flex;gap:6px}
.history button{min-width:40px;padding:0}
.canvas-wrap{border:1px solid #b8d0c0;border-radius:14px;overflow:hidden;background:#e6eee8}
.canvas-bar{padding:16px 18px;display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;align-items:center;background:#fff;border-bottom:1px solid var(--line)}
.canvas-title h2{font-size:19px;font-weight:700;letter-spacing:-.02em;color:#074c33}
.canvas-title p{font-size:12px;color:var(--muted);margin-top:5px;font-variant-numeric:tabular-nums}
.canvas-bar button{min-height:38px;font-size:12px;padding:0 11px}
.canvas-bar #room-size{background:#f0f7f2;border-color:#b8d3c1;color:#155b3d;font-weight:600}
.camera-controls{display:flex;gap:5px;align-items:center}
.camera-controls #out,.camera-controls #in{font-size:19px;min-width:34px;padding:0 7px}
.camera-controls #fit{font-weight:650;color:#07553a}
#stage{height:max(460px,calc(100dvh - 390px));max-height:850px;position:relative;overflow:hidden;touch-action:none;cursor:grab}
#stage:active{cursor:grabbing}
svg{display:block}
#plan{width:100%;height:100%;user-select:none}
#world{transform-origin:0 0;will-change:transform}
.floor{fill:#fbfdfb;stroke:#b8d1c1;stroke-width:2}
.entrance{fill:#4b6957;font-size:16px;letter-spacing:3px}
.table{cursor:grab}
.table .ring{fill:none;stroke:#008957;stroke-width:4;opacity:0}
.table.selected .ring,.center:focus-visible .ring{opacity:1}
.table-top{fill:#086345;stroke:#054d35;stroke-width:2}
.table-edge{fill:#033a29}
.table-rim{fill:none;stroke:#65b68d;stroke-width:1.4;pointer-events:none}
.number{fill:#fff;font-size:43px;font-weight:600;pointer-events:none}
.number.full{fill:#c4f4da}
.available{fill:#e2f6eb;font-size:16px;pointer-events:none}
.table-name{fill:#15482f;font-size:23px;font-weight:650;pointer-events:none}
.seat{cursor:pointer;outline:none}
.seat rect{fill:#e4ebe5;stroke:#a2b4a5;stroke-width:2;transition:fill 180ms ease}
.seat-depth{fill:#9baea0;pointer-events:none}
.seat-back{fill:none;stroke:#a1b5a6;stroke-width:2;stroke-linecap:round;pointer-events:none}
.seat-seam{fill:none;stroke:#b6c5ba;stroke-width:1.3;pointer-events:none}
.seat.confirmed rect{fill:#008653;stroke:#00623d}
.seat.confirmed .seat-depth{fill:#004f33}
.seat.confirmed .seat-back,.seat.confirmed .seat-seam{stroke:#6ac69c}
.seat.pending rect{fill:#b8c9bd;stroke:#849e8c}
.seat.pending .seat-depth{fill:#7d9785}
.seat.locked rect{fill:#9a6d24;stroke:#6c4c18}
.seat.locked .seat-depth{fill:#634419}
.seat.locked .seat-back,.seat.locked .seat-seam{stroke:#e2be7c}
.seat text{fill:#244b33;font-size:14px;font-weight:600;pointer-events:none}
.seat.confirmed text,.seat.locked text{fill:#fff}
.seat:focus-visible rect,.seat.seat-selected rect{stroke:#053d29;stroke-width:5}
.seat .hit{fill:transparent;stroke:none}
.seat.diet:not(.locked) rect{fill:#f4ca48;stroke:#967014}
.seat.diet:not(.locked) .seat-depth{fill:#93721f}
.seat.diet:not(.locked) .seat-back,.seat.diet:not(.locked) .seat-seam{stroke:#d2a72f}
.seat.diet:not(.locked) text{fill:#503908}
.head-label{fill:#fff;font-size:24px;font-weight:600}
.head-sub{fill:#3d614c;font-size:16px}
.crown{fill:#f0d29a}
#hint{position:absolute;bottom:14px;left:16px;font-size:12px;color:#375c46;pointer-events:none;background:#fbfdfbf2;padding:9px 11px;border-radius:6px;max-width:calc(100% - 32px);line-height:1.5}
.legend{display:flex;gap:20px;flex-wrap:wrap;min-height:50px;padding:15px 18px;background:#fff;font-size:12px;color:#486450;border-top:1px solid #d8e4dc}
.legend span{display:flex;align-items:center;gap:7px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;background:#008653}
.legend .pending{background:#b8c9bd;border:1px solid #849e8c}
.legend .empty{background:#e4ebe5;border:1px solid #a2b4a5}
.legend .diet{background:#f4ca48;border:1px solid #967014}
.footnote{font-size:12px;color:var(--muted);margin-top:16px;line-height:1.5}
#panel{position:fixed;right:24px;top:96px;bottom:24px;width:380px;z-index:10;background:#fff;border-radius:14px;box-shadow:0 14px 60px #10281c33;overflow:hidden;display:flex;flex-direction:column}
#panel:not([hidden]){animation:panel-in 180ms var(--ease)}
@keyframes panel-in{from{opacity:.5;transform:translateX(12px)}to{opacity:1;transform:none}}
.panel-top{display:flex;align-items:center;gap:10px;padding:18px 16px;background:var(--navy);color:#fff}
.panel-top h2{flex:1;font-size:21px;line-height:1.3;font-weight:650;letter-spacing:-.02em;overflow-wrap:anywhere}
.panel-top button{border:0;background:transparent;color:#fff;font-size:23px;padding:0;min-width:36px;min-height:38px}
.panel-top #back{font-size:20px}
#panel-content{padding:22px;overflow:auto;scrollbar-width:thin;scrollbar-color:#9ecab0 transparent}
.help{font-size:13px;color:var(--muted);line-height:1.6;margin-bottom:18px}
.panel-seat-list{margin-top:24px}
.panel-section-title{font-size:16px;line-height:1.5;color:#0b5236;font-weight:700;margin-bottom:6px}
.panel-seat-list>.help{font-size:12px;margin-bottom:12px}
.person{display:flex;align-items:center;gap:10px;min-height:60px;width:100%;padding:12px 0;background:none;border:0;border-bottom:1px solid #dfe9e2;border-radius:0;text-align:left}
.person-copy{flex:1;min-width:0}
.person strong{display:block;font-size:15px;font-weight:600;line-height:1.5;overflow-wrap:anywhere}
.person small{display:block;font-size:12px;color:var(--muted);margin-top:4px;line-height:1.5}
.avatar{display:grid;place-items:center;flex-shrink:0;width:35px;height:35px;border-radius:50%;font-size:12px;font-weight:650}
.person.is-unassigned .avatar{background:#e4e9e5;color:#4c6453}
.person.is-assigned .avatar{background:#008653;color:#fff}
.person.is-assigned small{color:#00643d}
.search{width:100%;height:46px;border:1px solid #b5cbbb;border-radius:8px;background:#f4f8f5;padding:0 12px;font-size:16px;color:var(--ink);margin-bottom:12px}
.search::placeholder{color:#586f60}
.guest-group{margin:0 0 16px}
.group-title{font-size:13px;line-height:1.6;color:#075439;font-weight:700;padding:14px 10px 10px;background:#e6f3eb;border-radius:7px;margin-top:8px}
.diet-tag{display:block;color:#684909;background:#ffedb0;border-radius:5px;font-size:12px;font-weight:500;line-height:1.5;padding:4px 7px;margin-top:5px;width:fit-content;max-width:100%;overflow-wrap:anywhere}
.people-filters{display:flex;gap:8px;margin:0 0 16px}
.people-filters button{flex:1;font-size:13px;font-weight:600}
.people-filters [aria-pressed=true]{background:var(--green);color:#fff;border-color:var(--green)}
.seat-row{display:flex;align-items:center;gap:10px;width:100%;min-height:58px;border:0;border-bottom:1px solid #d9e7de;background:none;border-radius:0;padding:10px 8px;text-align:left}
.seat-row>span:first-child{width:29px;height:30px;flex-shrink:0;display:grid;place-items:center;background:#e6ece7;color:#45604c;border-radius:6px;font-size:13px;font-weight:650}
.seat-row strong{flex:1;font-weight:600;font-size:14px;line-height:1.5;overflow-wrap:anywhere;min-width:0}
.seat-row small{font-size:12px;color:#516d5a;flex-shrink:0}
.seat-row.is-occupied{background:#e2f4e8;color:#075538}
.seat-row.is-occupied>span:first-child{background:#008653;color:#fff}
.seat-row.is-occupied small{color:#00633d;font-weight:600}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}
.actions button{flex:1;font-size:13px}
.full-button{width:100%;margin-top:12px}
.text-button{border:0;background:none;text-decoration:underline;text-underline-offset:4px;font-size:13px;padding:0;min-height:38px}
label{display:block;font-size:13px;font-weight:600;color:#315b42;margin:16px 0}
label input,label select{display:block;margin-top:7px;width:100%;height:46px;padding:0 10px;border:1px solid #b5cbbb;border-radius:7px;background:#fff;color:var(--ink);font-size:16px;font-weight:400}
.empty-message{font-size:14px;line-height:1.6;color:var(--muted);padding:20px 0}
.pill{display:inline-block;font-size:12px;padding:6px 9px;border-radius:6px;background:#d8f1e1;color:#075538;margin-bottom:15px}
.locked-message{padding:16px 0;color:#365b44;font-size:14px;line-height:1.7}
details{margin-top:22px;border-top:1px solid var(--line);padding-top:18px}
summary{cursor:pointer;font-size:14px;font-weight:600;color:#22563a}
.check-row{display:flex;gap:10px;align-items:flex-start;padding:14px;background:#e2f4e8;border-radius:8px;line-height:1.5}
.check-row input{width:20px;height:20px;margin:0;flex-shrink:0}
.check-row small{display:block;font-size:12px;font-weight:400;line-height:1.6;margin-top:5px;color:#3d634b}
.group-notice{padding:13px;background:#e4f3ea;border-radius:8px;color:#205038;font-size:13px;line-height:1.6;margin-bottom:18px}
.group-notice strong{font-weight:650}
.group-notice span{display:block;margin-top:5px}
.prefixed-input{display:flex;align-items:center;margin-top:7px;border:1px solid #b5cbbb;border-radius:7px;overflow:hidden;background:#fff}
.prefixed-input>span{padding:0 10px;font-size:16px;font-weight:600;color:#315b42}
.prefixed-input input{margin:0;border:0;border-radius:0;min-width:0;padding-left:0}
.prefixed-input:focus-within{outline:3px solid #008657;outline-offset:3px}
.prefixed-input input:focus-visible{outline:none}
.form-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.field-note{font-size:12px;color:var(--muted);line-height:1.5;margin-top:-7px}
.list-heading{margin:38px 0 22px;padding-bottom:18px;border-bottom:2px solid #8ac5a3}
.list-heading h2{font-size:26px;font-weight:700;letter-spacing:-.025em;color:#074c33}
.list-heading p{color:var(--muted);font-size:14px;line-height:1.6;margin-top:8px}
.all-tables{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;align-items:start}
.all-tables article{min-width:0;border:1px solid #c9ddcf;background:#fff;border-radius:12px;overflow:hidden}
.list-table-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 16px;background:#086345}
.list-table-heading h3{font-size:18px;font-weight:700;color:#fff;overflow-wrap:anywhere;line-height:1.4}
.list-table-heading button{font-size:12px;font-weight:600;min-height:36px;padding:0 10px;flex-shrink:0;color:#075538;border-color:#a3cbb2;background:#fff}
.table-capacity{display:flex;gap:16px;padding:13px 16px 10px;font-size:12px;line-height:1.5;color:#4d6855;font-variant-numeric:tabular-nums}
.table-capacity span:first-child{color:#00643d;font-weight:650}
.all-tables ol{padding:0 16px 8px;margin:0;list-style:none}
.all-tables li{display:flex;gap:12px;align-items:flex-start;min-height:46px;padding:10px 0;border-bottom:1px solid #e0eae3;font-size:14px;line-height:1.5}
.all-tables li:last-child{border-bottom:0}
.list-seat-number{min-width:28px;height:27px;border-radius:5px;background:#e6ece7;color:#45604c;display:grid;place-items:center;font-size:13px;font-weight:600;flex-shrink:0}
.list-seat-number.is-occupied{background:#008653;color:#fff}
.list-seat-number.is-diet{background:#f4ca48;color:#503908}
.list-seat-number.is-locked{background:#9a6d24;color:#fff}
.list-person-name{overflow-wrap:anywhere;min-width:0;font-weight:500}
#toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,10px);background:#064532;color:#fff;border-radius:9px;padding:12px 18px;max-width:90vw;font-size:13px;line-height:1.5;opacity:0;pointer-events:none;z-index:20;transition:opacity 180ms ease,transform 180ms var(--ease)}
#toast.show{opacity:1;transform:translate(-50%,0)}
body.keyboard *{animation:none!important;transition:none!important}
@media(min-width:701px) and (max-width:999px){#panel{top:280px;bottom:16px;right:16px;width:360px}}
@media(max-width:700px){
 header{height:66px;padding:0 18px}.identity{font-size:14px;gap:10px}.sub{font-size:11px}.mark svg{width:33px;height:33px}
 .local{font-size:11px;max-width:110px;text-align:right;line-height:1.5}
 main{padding:24px 16px 18px}h1{font-size:27px}.heading{gap:12px;align-items:flex-start}.heading p{font-size:13px}.heading>.primary{font-size:12px;padding:0 12px;min-height:44px}
 .overview{gap:14px;flex-wrap:wrap;margin:20px 0 16px;font-size:12px}.overview strong{font-size:18px}.people-action{font-size:12px;padding:9px 10px;gap:4px}.people-action>span{margin-left:4px}
 .history{gap:4px}.history button{min-width:34px;min-height:38px;padding:0 6px}
 .canvas-bar{grid-template-columns:minmax(0,1fr) auto;padding:14px;gap:12px}.canvas-title h2{font-size:18px}.canvas-title p{font-size:12px}.canvas-bar button{min-height:38px;padding:0 10px}.camera-controls{grid-column:1/-1;justify-content:flex-end}
 #stage{height:max(410px,calc(100dvh - 405px));max-height:none}.legend{gap:12px;font-size:12px;padding:14px}
 #hint{font-size:12px;left:10px;bottom:10px;max-width:calc(100% - 20px);padding:8px;line-height:1.5}
 #panel{top:auto;left:10px;right:10px;bottom:max(10px,env(safe-area-inset-bottom));width:auto;max-height:65dvh;height:auto;border-radius:14px;box-shadow:0 -8px 50px #10281c2b}
 #panel-content{padding:18px}.panel-top{padding:14px 12px}.panel-top h2{font-size:20px}.panel-top button{min-width:34px}
 #panel:not([hidden]){animation:sheet-in 180ms var(--ease)}
 @keyframes sheet-in{from{opacity:.6;transform:translateY(15px)}to{opacity:1;transform:none}}
 #toast{bottom:16px}
 .list-heading{margin-top:30px}.list-heading h2{font-size:24px}.list-heading p{font-size:13px}.all-tables{grid-template-columns:1fr;gap:20px}.all-tables li{min-height:46px}.list-table-heading{padding:14px}.list-table-heading button{min-height:40px}.list-table-heading h3{font-size:18px}
}
@media(max-width:370px){
 .heading{flex-wrap:wrap;gap:15px}.heading>.primary{width:100%}.overview{gap:12px}.history{width:100%;justify-content:flex-end;margin-top:-4px}.legend{gap:12px}.form-pair{gap:10px}.list-table-heading{gap:8px}
}
@media(hover:hover) and (pointer:fine){
 button:hover:not(:disabled){background:#e9f4ed}.primary:hover:not(:disabled){background:var(--green-hover)}
 .people-action:hover:not(:disabled){background:var(--green-hover)}.people-filters [aria-pressed=true]:hover{background:var(--green-hover)}.panel-top button:hover{background:#0c6047}
 .person:hover{background:#edf6f0}.seat-row:hover{background:#edf6f0}.seat-row.is-occupied:hover{background:#c9ebd6}
 .center:hover .table-top{fill:#08794f}.seat:hover rect{stroke:#053d29;stroke-width:4}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.room-formats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:10px}.room-formats button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:88px;padding:10px 4px;font-size:12px}.room-formats [aria-pressed=true]{color:#075538;background:#e2f4e8;border-color:#008653;font-weight:650}.format-shape{display:block;width:33px;height:22px;border:2px solid currentColor;border-radius:3px}.format-shape.vertical{width:22px;height:33px}.format-shape.square{width:27px;height:27px}.room-size-title{margin-top:24px}

.table-name{font-size:27px;font-weight:750;fill:#064532;paint-order:stroke fill;stroke:#fff;stroke-width:7px;stroke-linejoin:round}.entrance-badge{fill:#064532;stroke:#fff;stroke-width:3}.entrance{fill:#fff;font-size:18px;font-weight:700;letter-spacing:2px}.entrance-options{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.entrance-options button{font-size:13px}.entrance-options [aria-pressed=true]{background:#e2f4e8;border-color:#008653;color:#075538;font-weight:650}

/* Wayfinding and assignment recovery; shared forest-green palette. */
.section-links{display:flex;flex-wrap:wrap;gap:8px 20px;margin:0 0 14px}
.section-links a{display:inline-flex;align-items:center;min-height:44px;color:#075538;font-size:13px;font-weight:650;text-underline-offset:4px}
#room-heading,#seating-heading{scroll-margin-top:16px}
.seating-search{max-width:560px;margin-top:18px}
.seating-search label{display:block;margin-bottom:6px;color:#264b36;font-size:13px;font-weight:650}
.seating-search>div{display:flex;align-items:center;gap:8px}
.seating-search .search{margin:0;min-width:0}
.seating-search button{min-height:44px}
.seating-search [role=status]:empty,.assignment-message:empty{display:none}
.assignment-message{color:#643714;font-size:13px;line-height:1.5}
#map-choice{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;background:#e2f4e8;color:#064532;font-size:13px}
#map-choice[hidden]{display:none}
#cancel-map{min-height:44px;flex-shrink:0}
@media(max-width:480px){#map-choice{align-items:flex-start;flex-direction:column}}

/* Selection keeps the plan stable; zoom only follows an explicit control. */
#panel:not([hidden]){animation:panel-in 220ms var(--ease)}
.panel-top #close{font-size:13px;min-height:44px;padding:0 8px}
.table .ring{transition:opacity 180ms ease,stroke 180ms ease}
.table.is-moving .ring,.table.drop-target .ring{opacity:1}
.table.drop-target .ring{stroke:#00935d;stroke-width:8}
.table.drop-blocked .ring{stroke:#a65a27;stroke-width:7}
#entrance-marker{pointer-events:none}
#entrance-guide{fill:none;stroke:#064532;stroke-width:5;stroke-linecap:round}
.entrance{font-size:23px;letter-spacing:2px}
@media(max-width:700px){
 #panel{max-height:56dvh}
 #panel:not([hidden]){animation:sheet-in 220ms var(--ease)}
}

@media(max-width:700px){
 #stage{touch-action:pan-y}
 #stage.is-zoomed,#stage .table{touch-action:none}
 .canvas-bar button,.history button,.panel-top button{min-height:44px}
 .history button,.camera-controls #out,.camera-controls #in,.panel-top #back{min-width:44px}
 .panel-top{gap:6px}
 #panel-content{overscroll-behavior:contain}
 #toast{bottom:max(16px,env(safe-area-inset-bottom))}
}

header{height:auto;min-height:76px;gap:12px;flex-wrap:wrap;padding-top:12px;padding-bottom:12px}header a{color:#fff;font-size:13px}header button{font-size:12px}header [role=status]{font-size:12px;color:#c2e6d2}
