[data-tool=seating-planner] .cloud-line{margin:8px 0 12px;font-size:14px}
[data-tool=seating-planner] .cloud-line a,[data-tool=seating-planner] .cloud-card a{display:inline-flex;align-items:center;min-height:44px;font-weight:600}
[data-tool=seating-planner] .cloud-box:empty{display:none}
[data-tool=seating-planner] .cloud-card{background:var(--soft,#eaf7f1);border:1px solid #cfe5db;border-radius:12px;padding:14px 16px;margin:0 0 16px}
[data-tool=seating-planner] .cloud-card p{margin:0 0 10px}
[data-tool=seating-planner] .cloud-consent{display:flex;gap:10px;align-items:flex-start;min-height:44px;padding:8px 0;font-size:14px;cursor:pointer}
[data-tool=seating-planner] .cloud-consent input{width:22px;height:22px;flex:none;margin:1px 0 0}
[data-tool=seating-planner] .cloud-actions{display:flex;flex-wrap:wrap;gap:8px}
[data-tool=seating-planner] .cloud-actions .btn{min-height:44px}
@media print{[data-tool=seating-planner] .cloud-line,[data-tool=seating-planner] .cloud-box{display:none}}

/* header sign-in / sync status chip (20261024.5) */
[data-tool=seating-planner] .header{flex-wrap:wrap;row-gap:2px}
[data-tool=seating-planner] .header .brand{margin-right:auto}
[data-tool=seating-planner] .header .hdr-account{display:flex;align-items:center;font-size:14px;text-align:right}
[data-tool=seating-planner] .header .hdr-account a{display:inline-flex;align-items:center;min-height:44px;margin:-10px 0;font-weight:700}
[data-tool=seating-planner] .header .hdr-account a:first-child:not(:last-child){margin-right:4px}
@media(max-width:640px){[data-tool=seating-planner] .header .hdr-account.hdr-in{flex-basis:100%;justify-content:flex-end}}
@media print{[data-tool=seating-planner] .hdr-account{display:none}}

/* ===== Seating planner redesign (2026-10-29). Page-local: /life-assets/ui.css stays shared and untouched. Art in art/. ===== */
:root{--accent:#287b68;--accent-dk:#1d5e4f;--soft:#eaf7f1;--line:#cfe5db;--ink:#243345;--mute:#5f736d;--gold:#e8a838;--g0:#e0675f;--g1:#e8a838;--g2:#4fa36b;--g3:#3f8fcb;--g4:#8b6fd1;--g5:#d96ba3}
body[data-tool=seating-planner]{position:relative;background:#f3faf7;color:var(--ink)}
body[data-tool=seating-planner]::before{content:"";position:absolute;z-index:-1;left:0;right:0;top:0;height:900px;background:linear-gradient(to bottom,#f3faf700 45%,#f3faf7 100%),url(art/bg.webp) center top/cover no-repeat;pointer-events:none}
[data-tool=seating-planner] img{max-width:100%}
[data-tool=seating-planner] header{background:#ffffffd9;border-bottom:1px solid var(--line);backdrop-filter:blur(6px)}
[data-tool=seating-planner] .header,[data-tool=seating-planner] main{max-width:1240px}
[data-tool=seating-planner] .brand span{display:grid;place-items:center;width:44px;height:44px;padding:0;background:#d9f0e6;border-radius:12px}
[data-tool=seating-planner] .eyebrow{color:var(--accent-dk)}
[data-tool=seating-planner] .lead{max-width:640px;color:var(--mute);line-height:1.8}
[data-tool=seating-planner] .small{color:var(--mute)}
[data-tool=seating-planner] .panel{border-color:var(--line);border-radius:22px;box-shadow:0 6px 22px #1f5f5010}
[data-tool=seating-planner] .btn{border-color:#c4dcd2;border-radius:12px;color:#244a40}
[data-tool=seating-planner] .btn:hover:not(:disabled){background:var(--soft)}
[data-tool=seating-planner] .btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
[data-tool=seating-planner] .btn.primary:hover:not(:disabled){background:var(--accent-dk)}
[data-tool=seating-planner] .btn.danger{color:#a63235;background:#fff6f6;border-color:#e3b4b6}
[data-tool=seating-planner] .btn.danger:hover:not(:disabled){background:#fde8e8}
[data-tool=seating-planner] .btn.mini{min-height:44px;padding:6px 10px;font-size:13px}
[data-tool=seating-planner] .input,[data-tool=seating-planner] select,[data-tool=seating-planner] textarea{border-color:#c4dcd2;border-radius:12px}
[data-tool=seating-planner] .field{margin:14px 0 6px}
/* hero */
.hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,420px);gap:24px;align-items:center;margin:0 0 18px}
.hero h1{font-size:clamp(1.7rem,4vw,2.4rem);line-height:1.3}
.hero-art{width:100%;height:auto;justify-self:end}
.badges{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0 0}
.badge{display:inline-flex;align-items:center;gap:8px;min-height:46px;padding:5px 16px 5px 8px;background:#ffffffd1;border:1px solid var(--line);border-radius:999px;font-size:13px}
.badge img{width:34px;height:34px;object-fit:contain;flex:none}
/* scenes */
.scenes{margin-bottom:18px}
.scene-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:12px}
.scene{display:grid;grid-template-columns:72px 1fr;grid-template-areas:"i b" "i s";column-gap:12px;align-items:center;text-align:left;min-height:88px;padding:10px 14px;background:#fff;border:2px solid var(--line);border-radius:18px;color:inherit}
.scene img{grid-area:i;width:72px;height:72px;object-fit:contain}
.scene b{grid-area:b;align-self:end;font-size:1rem}
.scene small{grid-area:s;align-self:start;color:var(--mute);font-size:.8rem;line-height:1.5;font-weight:400}
.scene:hover{border-color:#8fcfb8}
.scene[aria-pressed=true]{border-color:var(--accent);background:#f2fbf7;box-shadow:0 0 0 3px #287b6822}
.scene-note{min-height:1.4em;margin:10px 0 0}
/* layout */
.layout{grid-template-columns:minmax(0,380px) minmax(0,1fr);gap:20px}
.controls{display:flex;flex-direction:column;gap:14px}
.controls>.panel{margin-top:0}
.board>.panel{margin-top:0}
.board{display:flex;flex-direction:column;gap:16px;min-width:0}
.fold{padding:0}
.fold>summary.step{display:flex;align-items:center;gap:10px;min-height:56px;padding:10px 18px;font-size:1.02rem;font-weight:800;list-style:none;cursor:pointer;border-radius:22px}
.fold>summary.step::-webkit-details-marker{display:none}
.fold>summary.step::after{content:"▾";margin-left:auto;color:var(--mute)}
.fold:not([open])>summary.step::after{content:"▸"}
.step-ic{width:30px;height:30px;object-fit:contain;flex:none}
.fold-body{padding:0 18px 18px}
details.panel{border-top:1px solid var(--line);margin-top:0;padding-top:0}
.mini-h{font-size:.92rem;margin:16px 0 6px}
.backup-panel h2{display:flex;align-items:center;gap:10px}
/* guest list */
.guest-list{list-style:none;margin:10px 0 0;padding:0;max-height:300px;overflow:auto;border:1px solid var(--line);border-radius:12px;background:#fff}
.guest-list li{display:flex;align-items:center;gap:4px;padding:2px 4px 2px 0;border-bottom:1px solid #eaf3ee}
.guest-list li:last-child{border-bottom:0}
.g-row{flex:1;min-width:0;display:flex;align-items:center;gap:8px;min-height:44px;padding:4px 10px;background:none;border:0;text-align:left;color:inherit;border-radius:10px}
.g-row:hover{background:var(--soft)}
.g-name{font-weight:700;overflow-wrap:anywhere}
.g-seat{margin-left:auto;font-size:12px;color:var(--mute);white-space:nowrap}
.g-note{font-size:12px;color:#8a6a1f;background:#fff4d6;border-radius:8px;padding:1px 7px;max-width:40%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.g-none{padding:12px;color:var(--mute);font-size:13px;justify-content:center}
.dot{display:inline-block;width:11px;height:11px;border-radius:50%;background:var(--gc,#c9d4cf);flex:none;font-style:normal}
.g0{--gc:var(--g0)}.g1{--gc:var(--g1)}.g2{--gc:var(--g2)}.g3{--gc:var(--g3)}.g4{--gc:var(--g4)}.g5{--gc:var(--g5)}
.gnames{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.gn{display:flex;align-items:center;gap:6px}
.gn .input{min-height:44px;padding:8px 10px;font-size:14px}
/* rules */
.rule-list,.conflict-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:6px}
.rule-list li{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 4px 2px 12px;background:#f6fbf8;border:1px solid var(--line);border-radius:12px;font-size:14px;overflow-wrap:anywhere}
.rule-list li.bad{background:#fff3f1;border-color:#efc2bd;color:#8c2f29}
/* dashboard */
.dash{display:grid;grid-template-columns:96px minmax(0,1fr) auto;gap:16px;align-items:center}
.coach{width:96px;height:96px;object-fit:contain}
.summary{margin:0;font-weight:800;font-size:1.05rem}
.bar{height:12px;border-radius:99px;background:#dcece5;overflow:hidden;margin:10px 0 6px}
.bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--accent),#57b894);border-radius:99px;transition:width .3s}
.coach-text{margin:6px 0 0;color:var(--accent-dk);font-weight:700;font-size:.92rem}
.badge-btn{min-height:44px;padding:8px 14px;border-radius:999px;border:1px solid var(--line);background:#fff;font-weight:700;font-size:13px;color:inherit}
.badge-btn.ok{background:#eaf7f1;border-color:#a9d9c4;color:#1d6a4f}
.badge-btn.bad{background:#fff1ee;border-color:#efb3ab;color:#9a3128}
/* chart */
.chart-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.chart-head h2{margin:0}
.chart-tools{display:flex;gap:8px}
.tray{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:4px 0 12px}
.tray:empty{display:none}
.tray-h{font-size:13px;font-weight:800;color:var(--mute)}
.chip{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:6px 14px;border:1px solid #c4dcd2;border-radius:999px;background:#fff;color:inherit;font-weight:700;font-size:14px;max-width:100%;overflow-wrap:anywhere}
.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.chip.hit,.seat.hit{box-shadow:0 0 0 3px #f7d66b}
.action-bar{position:sticky;top:8px;z-index:6;background:#ffffffee;border:1px solid var(--line);border-radius:16px;padding:10px 12px;margin:0 0 12px;box-shadow:0 6px 18px #1f5f5018;backdrop-filter:blur(6px)}
.selection{margin:0 0 8px;font-size:13px;font-weight:700;color:var(--accent-dk);overflow-wrap:anywhere}
.ab-row{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-end}
.ab-pick{flex:1 1 200px;min-width:0}
.ab-pick label{display:block;font-size:12px;font-weight:800;color:var(--mute);margin:0 0 3px}
.ab-btns{display:flex;flex-wrap:wrap;gap:8px}
.tables{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;--sw:96px;--sh:62px}
.tables[data-size=s]{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));--sw:78px;--sh:52px}
.tables[data-size=l]{grid-template-columns:repeat(auto-fill,minmax(360px,1fr));--sw:116px;--sh:76px}
.tables:has(.empty){display:block}
.table-card{margin:0;padding:14px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(#fbfffd,#f4faf7);min-width:0}
.table-heading{align-items:flex-start}
.table-heading h3{margin:0;font-size:1rem;overflow-wrap:anywhere}
.t-note{display:inline-block;background:#fff4d6;color:#8a6a1f;border-radius:8px;padding:1px 8px;font-size:12px;font-weight:700;vertical-align:middle}
.t-btns{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.fill{font-size:12px;font-weight:800;color:var(--mute);background:#fff;border:1px solid var(--line);border-radius:999px;padding:3px 9px}
.fill.full{background:#dff3e8;color:#1d6a4f;border-color:#a9d9c4}
.table-center{width:112px;height:112px;margin:8px auto 12px;border:0;border-radius:50%;background:url(art/tb-round.webp) center/contain no-repeat;display:grid;place-items:center;font-weight:800;font-size:12px;color:#1f5f50;text-align:center;padding:30px 22px;overflow:hidden;word-break:break-all;line-height:1.25;text-shadow:0 1px 0 #fffc}
.shape-rect .table-center{width:150px;height:96px;border-radius:0;background-image:url(art/tb-rect.webp);padding:26px 22px}
.shape-long .table-center{width:100%;max-width:240px;height:84px;border-radius:0;background-image:url(art/tb-long.webp);padding:22px 30px}
.seats{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--sw),1fr));gap:8px}
.seat{position:relative;flex-direction:column;align-items:flex-start;justify-content:center;gap:1px;min-height:var(--sh);padding:7px 9px;text-align:left;white-space:normal;overflow-wrap:anywhere;font-size:13px;background:#fff;border:2px dashed #b9d4c9;color:#5c746b}
.seat .s-no{font-size:11px;font-weight:600;opacity:.8}
.seat .s-name{font-weight:800;line-height:1.25}
.seat .s-note{font-size:11px;font-weight:600;color:#8a6a1f;line-height:1.2}
.seat.assigned{background:#eaf7f1;border:2px solid var(--gc,#a7d0b3);color:#1d4a3a;border-left-width:6px}
.seat.assigned.gx{border-color:#a7d0b3}
.seat.locked{background-image:repeating-linear-gradient(135deg,#0000 0 8px,#f3e7c4 8px 10px)}
.seat.selected{outline:3px solid var(--accent);outline-offset:1px;background:#d9f2e8}
.seat.flash{animation:seatflash 1.4s ease-out}
@keyframes seatflash{0%,60%{box-shadow:0 0 0 6px #f7d66b}100%{box-shadow:0 0 0 0 #f7d66b00}}
.t-edit{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0 12px;padding:12px;background:#fff;border:1px solid var(--line);border-radius:14px}
.t-edit label{display:block;font-size:12px;font-weight:800;color:var(--mute)}
.t-edit .input,.t-edit select{margin-top:4px}
.t-edit .actions{grid-column:1/-1;margin:2px 0 0}
.empty{background:#f6fbf8;border-color:#cfe5db}
.empty img{display:block;margin:0 auto 8px}
.opts{margin-top:14px}
.opts-body{display:grid;gap:10px;padding-bottom:6px}
.opts-body .check,.check{display:flex;gap:10px;align-items:flex-start;min-height:44px;font-size:14px;line-height:1.5;cursor:pointer}
.opts-body .check input{margin-top:2px;flex:none}
/* conflicts and exports */
.conflict-list li{font-size:14px;line-height:1.55}
.c-item{width:100%;min-height:44px;text-align:left;padding:8px 12px;border-radius:12px;border:1px solid #efc2bd;background:#fff3f1;color:#8c2f29;font-weight:600;font-size:14px;overflow-wrap:anywhere}
.conflict-list .ok{background:#eaf7f1;border:1px solid #a9d9c4;color:#1d6a4f;border-radius:12px;padding:10px 12px;font-weight:700}
.conflict-list .info{background:#f6f8fb;border:1px solid #dde5ee;color:#4b5d73;border-radius:12px;padding:10px 12px}
.exports .actions{margin-top:12px}
/* dialogs */
dialog{border:0;border-radius:20px;padding:0;max-width:min(520px,calc(100vw - 24px));width:100%;box-shadow:0 20px 60px #10302733;color:var(--ink)}
dialog::backdrop{background:#10302755}
.dlg{padding:20px}
.dlg h3{margin:0 0 6px}
.dlg p{margin:0 0 8px;line-height:1.6}
/* steps strip */
.steps-strip{margin-bottom:18px}
.steps{list-style:none;margin:12px 0 0;padding:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;counter-reset:st}
.steps li{display:flex;flex-direction:column;align-items:center;text-align:center;gap:4px;padding:10px 6px;background:#f6fbf8;border:1px solid var(--line);border-radius:16px;counter-increment:st;position:relative}
.steps li::before{content:counter(st);position:absolute;top:6px;left:8px;width:22px;height:22px;border-radius:50%;background:var(--accent);color:#fff;font-size:12px;font-weight:800;display:grid;place-items:center}
.steps img{width:64px;height:64px;object-fit:contain}
.steps b{font-size:.92rem}
.steps small{font-size:.76rem;line-height:1.45;color:var(--mute)}
@media(max-width:1000px){.steps{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:520px){.steps{grid-template-columns:repeat(2,minmax(0,1fr))}}/* misc */
#printArea{display:none}
[data-tool=seating-planner] .guide{margin-top:22px}
@media(max-width:1000px){.layout{grid-template-columns:minmax(0,1fr)}.layout>.board{order:-1}.hero{grid-template-columns:minmax(0,1fr)}.hero-art{max-width:360px;justify-self:center;order:-1}.scene-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:820px){
 .scene{grid-template-columns:56px 1fr;min-height:76px}.scene img{width:56px;height:56px}
 .dash{grid-template-columns:72px minmax(0,1fr)}.coach{width:72px;height:72px}.badge-btn{grid-column:1/-1}
 .tables,.tables[data-size=s],.tables[data-size=l]{grid-template-columns:minmax(0,1fr)}
 .action-bar{position:fixed;left:8px;right:8px;bottom:8px;top:auto;z-index:30;margin:0;transform:translateY(130%);transition:transform .2s}
 .chart.in-view .action-bar{transform:none}
 main{padding-bottom:150px}
 .ab-pick{flex-basis:100%}.ab-btns{width:100%}.ab-btns .btn{flex:1 1 auto;padding:8px 6px;font-size:13px}
 .gnames{grid-template-columns:1fr}
}
@media(max-width:520px){.scene-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.scene{grid-template-columns:1fr;grid-template-areas:"i" "b";justify-items:center;text-align:center;min-height:0;padding:8px 6px;row-gap:2px}.scene small{display:none}.scene b{font-size:.9rem;align-self:start}.t-edit{grid-template-columns:minmax(0,1fr)}}
@media(max-width:820px){.steps-strip{display:none}}
@media(prefers-reduced-motion:reduce){.action-bar,.bar i{transition:none}.seat.flash{animation:none;box-shadow:0 0 0 6px #f7d66b}}
/* print: only #printArea (built by app.js for the chosen print mode) */
@media print{
 @page{size:A4;margin:10mm}
 html,body{background:#fff!important}
 [data-tool=seating-planner]::before,body[data-tool=seating-planner]::before{display:none}
 [data-tool=seating-planner] header,[data-tool=seating-planner] main>*:not(#printArea){display:none!important}
 [data-tool=seating-planner] main{padding:0;max-width:none}
 #printArea{display:block!important;color:#000;font-family:"Microsoft JhengHei",system-ui,sans-serif}
 .pr-h{font-size:20pt;margin:0 0 8mm}
 .pr-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6mm}
 .pr-table{break-inside:avoid;border:1.5pt solid #444;border-radius:3mm;padding:3mm 4mm}
 .pr-table h2{font-size:13pt;margin:0 0 2mm}
 .pr-table ol{list-style:none;margin:0;padding:0}
 .pr-table li{display:flex;align-items:center;gap:2mm;font-size:11pt;padding:.6mm 0;border-bottom:.5pt dotted #aaa}
 .pr-no{width:6mm;color:#666;font-size:9pt}
 .pr-n{flex:1}
 .pr-lookup{width:100%;border-collapse:collapse;font-size:15pt}
 .pr-lookup th,.pr-lookup td{border-bottom:.6pt solid #999;padding:2mm 3mm;text-align:left}
 .pr-lookup tr{break-inside:avoid}
 .pr-cards{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:66mm;gap:0}
 .pr-card{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3mm;border:.6pt dashed #888;text-align:center;break-inside:avoid;padding:4mm}
 .pr-cn{font-size:30pt;font-weight:800;overflow-wrap:anywhere}
 .pr-ct{font-size:14pt}
 .pr-cg{font-size:11pt;color:#444}
 #printArea .dot{-webkit-print-color-adjust:exact;print-color-adjust:exact;width:3mm;height:3mm}
}
