:root{--bg:#f6f7f9;--card:#fff;--ink:#1b1d22;--muted:#646873;--line:#dcdfe5;--accent:#2a5cb3;--accent-soft:#e8f0ff;--ok:#1e7a45;--warn:#9a6200;--danger:#b3261e;--blocked:#b9bcc4;--empty:#f1f2f4;--radius:10px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--ink);background:var(--bg);font-family:PingFang TC,Noto Sans TC,Microsoft JhengHei,system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.5}@media (prefers-color-scheme:dark){:root{--bg:#15171b;--card:#1e2127;--ink:#e9eaee;--muted:#9da2ad;--line:#343843;--accent:#7ea6ff;--accent-soft:#23304b;--ok:#5cc98a;--warn:#e0b04f;--danger:#ff8a80;--blocked:#4a4e58;--empty:#262a31;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}body{background:var(--bg);margin:0}h1{margin:0;font-size:1.5rem}h2{margin:0 0 .75rem;font-size:1.15rem}h3{margin:1rem 0 .5rem;font-size:1rem}p{margin:.4rem 0}.app{max-width:1100px;margin:0 auto;padding:1.25rem 1rem 5rem}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;display:flex}.top-actions{flex-wrap:wrap;gap:.5rem;display:flex}.muted{color:var(--muted)}.small{font-size:.85rem}.ok{color:var(--ok);font-weight:600}.warn{color:var(--warn)}.error{color:var(--danger);font-weight:600}.req{color:var(--danger);font-style:normal}.banner{border-radius:var(--radius);margin-bottom:1rem;padding:.75rem 1rem;font-size:.9rem}.banner.privacy{background:var(--accent-soft);border:1px solid color-mix(in srgb, var(--accent) 30%, transparent)}.banner.danger{background:color-mix(in srgb, var(--danger) 12%, var(--card));border:1px solid var(--danger);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.stepper{grid-template-columns:repeat(4,1fr);gap:.5rem;margin:0 0 1rem;padding:0;list-style:none;display:grid}.stepper button{border:1px solid var(--line);background:var(--card);width:100%;color:var(--muted);border-radius:var(--radius);font:inherit;cursor:pointer;text-align:left;padding:.6rem .5rem}.stepper button.current{border-color:var(--accent);color:var(--ink);font-weight:600}.stepper button.done{color:var(--ink)}.stepper .num{background:var(--empty);border-radius:50%;place-items:center;width:1.5rem;height:1.5rem;margin-right:.35rem;font-size:.8rem;display:inline-grid}.stepper .current .num{background:var(--accent);color:#fff}@media (width<=640px){.stepper{grid-template-columns:repeat(2,1fr)}}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:1rem;padding:1rem 1.1rem}.section-title{margin-top:.5rem}.form-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.9rem 1rem;display:grid}.span-2{grid-column:1/-1}label{flex-direction:column;gap:.3rem;font-weight:500;display:flex}label.narrow{max-width:240px}input,select,textarea{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:8px;width:100%;padding:.5rem .6rem}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.inline{align-items:center;gap:.5rem;display:flex}.inline input{max-width:120px}.counter{align-self:flex-end}.btn{font:inherit;border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;white-space:nowrap;border-radius:8px;padding:.5rem .9rem}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.ghost{background:0 0}.btn.danger{color:var(--danger)}.btn.danger-solid{background:var(--danger);border-color:var(--danger);color:#fff}.actions{flex-wrap:wrap;gap:.6rem;margin:.75rem 0;display:flex}.actions.end{justify-content:flex-end}.segmented{border:1px solid var(--line);border-radius:8px;flex-wrap:wrap;margin-bottom:1rem;display:inline-flex;overflow:hidden}.segmented label{cursor:pointer;flex-direction:row;padding:.45rem .9rem}.segmented label.active{background:var(--accent);color:#fff}.segmented input{opacity:0;width:1px;position:absolute}.file input[type=file]{opacity:0;width:1px;height:1px;position:absolute}.file{align-items:flex-start;display:flex}.file:focus-within .btn{outline:2px solid var(--accent)}.table-wrap{margin:.5rem 0;overflow-x:auto}table{border-collapse:collapse;min-width:320px}caption{text-align:left;color:var(--muted);padding-bottom:.3rem;font-size:.85rem}th,td{border-bottom:1px solid var(--line);text-align:left;padding:.3rem .8rem .3rem 0}.room-head{flex-wrap:wrap;align-items:flex-end;gap:.75rem;display:flex}.room-head .grow{flex:220px}.room-head label:not(.grow){width:150px}.capacity-pill{background:var(--accent-soft);color:var(--accent);border-radius:999px;margin-top:.75rem;padding:.15rem .7rem;font-weight:600;display:inline-block}.grid-scroll{padding-bottom:.25rem;overflow-x:auto}.front-bar{text-align:center;color:#fff;background:#383d4c;border-radius:6px;width:max-content;min-width:160px;margin:.5rem auto;padding:.2rem 1rem;font-size:.85rem}.seat-grid{grid-template-columns:repeat(var(--cols), minmax(2.1rem, 1fr));gap:3px;width:max-content;min-width:100%;display:grid}.seat-grid.preview{grid-template-columns:repeat(var(--cols), minmax(5.5rem, 1fr))}.cell{border:1px solid var(--line);min-height:2.1rem;font:inherit;color:var(--accent);cursor:pointer;border-radius:5px;padding:0;font-size:.72rem;display:inline-block}.cell.seat{background:var(--accent-soft);border-color:var(--accent);font-weight:600}.cell.empty{background:var(--empty)}.cell.blocked{background:var(--blocked);border-color:var(--blocked);background-image:repeating-linear-gradient(45deg,#0000 0 4px,#0000001f 4px 6px)}.preview .cell{cursor:default;min-height:3.6rem}.cell.filled{color:var(--ink);flex-direction:column;justify-content:center;padding:.2rem .3rem;font-weight:400;display:flex;overflow:hidden}.cell.filled b{color:var(--accent);font-size:.68rem}.cell.filled span,.cell.filled small{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.cell.filled small{color:var(--muted);font-size:.68rem}.legend{color:var(--muted);flex-wrap:wrap;gap:1rem;margin-top:.6rem;font-size:.85rem;display:flex}.legend .cell{vertical-align:middle;cursor:default;width:1rem;height:1rem;min-height:1rem}.capacity .stats{gap:2rem;margin-bottom:.3rem;display:flex}.capacity .stats div{flex-direction:column;display:flex}.capacity .stats strong{font-size:1.6rem}.capacity.is-short{border-color:var(--danger)}.capacity.is-ok{border-color:color-mix(in srgb, var(--ok) 50%, var(--line))}.checklist{margin:0;padding:0;list-style:none}.checklist li{padding:.35rem 0}.checklist label{flex-direction:row;align-items:flex-start;gap:.6rem;font-weight:400}.checklist input{flex:none;width:1.1rem;height:1.1rem;margin-top:.2rem}fieldset.order{border:1px solid var(--line);border-radius:8px;padding:.5rem .9rem .7rem}fieldset.order label{flex-direction:row;gap:.5rem;font-weight:400}fieldset.order input{width:auto}.step-nav{padding:.7rem max(1rem, calc((100vw - 1100px) / 2 + 1rem)) calc(.7rem + env(safe-area-inset-bottom,0px));background:color-mix(in srgb, var(--card) 92%, transparent);border-top:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);justify-content:space-between;gap:1rem;display:flex;position:fixed;bottom:0;left:0;right:0}.dialog{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);color:var(--ink);width:min(460px,100vw - 2rem);padding:1.25rem}.dialog::backdrop{background:#00000073}.dialog form{flex-direction:column;gap:.7rem;display:flex}.version{color:var(--muted);border:1px solid var(--line);vertical-align:middle;border-radius:999px;padding:.05rem .5rem;font-size:.8rem;font-weight:500}.pre-line{white-space:pre-line}input.invalid{border-color:var(--danger);box-shadow:0 0 0 1px var(--danger)}.room-title{color:var(--muted);margin:0 0 .6rem;font-size:.9rem}.export-steps{flex-direction:column;gap:.5rem;margin:.75rem 0;padding-left:1.4rem;display:flex}.export-steps .actions{margin:0}.contact{border-top:1px solid var(--line);color:var(--muted);margin-top:2rem;padding-top:1rem;font-size:.9rem}.contact strong{color:var(--ink)}.contact-links{flex-wrap:wrap;gap:.4rem 1.25rem;margin-top:.4rem;display:flex}.contact-links a{overflow-wrap:anywhere}
