:root{--zone-a: oklch(64% .11 25);--zone-b: oklch(66% .1 80);--zone-c: oklch(60% .08 150);--zone-d: oklch(58% .1 250);--zone-e: oklch(58% .11 320);--zone-f: oklch(56% .09 200);--plan-ink: oklch(38% .02 40);--plan-line: oklch(72% .02 60);--plan-fill: oklch(97% .01 70);--plan-red: oklch(58% .16 25)}.seat-map{display:block;width:100%;height:auto;overflow:visible;touch-action:manipulation}.sm-shell-fill{fill:var(--surface)}.sm-shell-line{fill:none;stroke:var(--plan-ink);stroke-width:60}.sm-room{fill:none;stroke:var(--plan-line);stroke-width:40}.sm-opening{fill:var(--surface)}.sm-door-leaf{stroke:var(--plan-ink);stroke-width:40;fill:none}.sm-door-swing{stroke:var(--plan-line);stroke-width:30;fill:none;stroke-dasharray:120 90}.sm-sofa{fill:#e7dcd0;stroke:var(--plan-line);stroke-width:30}.sm-fixture{fill:#f0eae4;stroke:var(--plan-line);stroke-width:30}.sm-counter{fill:none;stroke:var(--plan-line);stroke-width:45}.sm-stage{fill:#e6d5bb;stroke:var(--gold);stroke-width:40}.sm-stage-step{stroke:var(--gold);stroke-width:30;fill:none;opacity:.7}.sm-tabletop{fill:#e1d1c0;stroke:var(--plan-ink);stroke-width:35}.sm-table-seam{fill:none;stroke:var(--plan-ink);stroke-width:18;opacity:.45}.sm-lbl{font-family:var(--sans);text-anchor:middle;dominant-baseline:central;fill:var(--plan-ink);pointer-events:none;user-select:none}.sm-lbl-room{font-size:420px;letter-spacing:60px;opacity:.55}.sm-lbl-room.tight{letter-spacing:20px;font-size:360px}.sm-lbl-stage{font-size:520px;letter-spacing:90px;fill:var(--gold)}.sm-lbl-tbl{font-size:400px;font-weight:600;letter-spacing:20px}.sm-dimline{stroke:var(--plan-red);stroke-width:22;fill:none;opacity:.8}.sm-witness{stroke:var(--plan-red);stroke-width:14;fill:none;opacity:.38}.sm-dimtext{font-family:var(--sans);font-size:300px;letter-spacing:14px;text-anchor:middle;dominant-baseline:central;fill:var(--plan-red);opacity:.9;pointer-events:none}.sm-seat{cursor:pointer}.sm-hit{fill:transparent}.sm-seat .sm-body,.sm-seat .sm-back{stroke:var(--plan-ink);stroke-width:30;transition:fill .15s var(--ease),stroke .15s var(--ease)}.sm-seat .sm-body{fill:var(--surface)}.sm-seat .sm-back{fill:#d3c9bd}.sm-seat[data-zone=A] .sm-body{fill:color-mix(in oklab,var(--zone-a) 14%,var(--surface))}.sm-seat[data-zone=B] .sm-body{fill:color-mix(in oklab,var(--zone-b) 14%,var(--surface))}.sm-seat[data-zone=C] .sm-body{fill:color-mix(in oklab,var(--zone-c) 14%,var(--surface))}.sm-seat[data-zone=D] .sm-body{fill:color-mix(in oklab,var(--zone-d) 14%,var(--surface))}.sm-seat[data-zone=E] .sm-body{fill:color-mix(in oklab,var(--zone-e) 14%,var(--surface))}.sm-seat[data-zone=F] .sm-body{fill:color-mix(in oklab,var(--zone-f) 14%,var(--surface))}.sm-seat[data-state=taken] .sm-body{fill:var(--rose)}.sm-seat[data-state=taken] .sm-back{fill:var(--rose-deep)}.sm-seat-initials{font-family:var(--sans);font-size:260px;font-weight:600;letter-spacing:10px;text-anchor:middle;dominant-baseline:central;fill:var(--surface);pointer-events:none;user-select:none}.sm-seat:hover .sm-body{stroke:var(--rose);stroke-width:60}.sm-seat:focus{outline:none}.sm-seat:focus-visible .sm-hit{fill:color-mix(in oklab,var(--rose) 16%,transparent);stroke:var(--rose);stroke-width:40}.sm-seat[data-selected=true] .sm-body{stroke:var(--gold);stroke-width:80}.seat-map[data-targeting=true] .sm-seat[data-target=true] .sm-body{stroke:var(--sage);stroke-width:55;stroke-dasharray:90 70}@media (prefers-reduced-motion: reduce){.roster-pick,.sm-seat .sm-body,.sm-seat .sm-back{transition:none}}@media (pointer: coarse){.sm-seat .sm-hit{transform:scale(1.3)}}.seat-stats{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);align-items:center;margin-bottom:var(--space-4);font-size:var(--text-sm);color:var(--ink-soft)}.seat-stats b{color:var(--ink);font-variant-numeric:tabular-nums}.seat-stat-zone{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;background:var(--surface);border:1px solid var(--line);font-size:var(--text-xs)}.seat-stat-zone:before{content:"";width:8px;height:8px;border-radius:2px;background:var(--zone-a)}.seat-stat-zone[data-zone=B]:before{background:var(--zone-b)}.seat-stat-zone[data-zone=C]:before{background:var(--zone-c)}.seat-stat-zone[data-zone=D]:before{background:var(--zone-d)}.seat-stat-zone[data-zone=E]:before{background:var(--zone-e)}.seat-stat-zone[data-zone=F]:before{background:var(--zone-f)}.seat-warn{border-left:3px solid var(--plan-red);color:var(--rose-deep);font-size:var(--text-sm);margin-bottom:var(--space-3)}.seating-layout{display:grid;grid-template-columns:minmax(210px,250px) minmax(0,1fr);gap:var(--space-4);align-items:start}@media (max-width: 900px){.seating-layout{grid-template-columns:1fr}}.seating-layout[data-wide=true]{grid-template-columns:minmax(0,1fr)}.seating-layout[data-wide=true] .seat-roster{position:static;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(280px,100%),1fr));gap:0 var(--space-5);align-items:start;padding-bottom:var(--space-3);border-bottom:1px solid var(--line)}.seating-layout[data-wide=true] .roster-group h4{margin-top:0}.seating-layout[data-wide=true] .roster-list{max-height:19vh}.seat-roster{position:sticky;top:var(--space-4)}.seat-roster h4{font-family:var(--serif);font-style:italic;font-size:var(--text-lg);margin:var(--space-4) 0 var(--space-2);display:flex;justify-content:space-between;align-items:baseline}.roster-group:first-child h4{margin-top:0}.seat-map-expand{flex-shrink:0;padding:4px 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink-soft);font:inherit;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;cursor:pointer;transition:border-color .15s var(--ease),color .15s var(--ease)}.seat-map-expand:hover{border-color:var(--rose);color:var(--rose)}.seat-map-expand[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--cream)}.seat-map-expand:focus-visible{outline:2px solid var(--rose);outline-offset:2px}.roster-list{list-style:none;padding:0;margin:0;font-size:var(--text-sm);max-height:40vh;overflow-y:auto}.roster-list li{display:flex;align-items:center;gap:var(--space-2);border-bottom:1px dashed var(--line)}.roster-list li:last-child{border-bottom:none}.roster-empty{padding:8px 0}.roster-pick{flex:1;min-width:0;display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2);padding:8px var(--space-2);margin:0;background:none;border:none;border-radius:var(--radius-sm);font:inherit;text-align:left;color:var(--ink-soft);cursor:pointer;transition:background var(--duration, .15s) var(--ease),color .15s var(--ease)}.roster-pick:hover{background:var(--cream);color:var(--ink)}.roster-pick:focus-visible{outline:2px solid var(--rose);outline-offset:-2px}.roster-list li[data-selected=true] .roster-pick{background:var(--rose);color:var(--surface);box-shadow:var(--shadow-card)}.roster-list li[data-selected=true] .roster-name{color:var(--surface)}.roster-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink)}.roster-tag{margin-left:6px;font-size:var(--text-xs);opacity:.7;letter-spacing:.04em}.roster-note{flex-shrink:0;font-size:var(--text-xs);line-height:1;color:var(--rose);cursor:help}.roster-list li[data-selected=true] .roster-note{color:var(--surface)}.roster-seat{flex-shrink:0;font-size:var(--text-xs);font-variant-numeric:tabular-nums;letter-spacing:.04em;opacity:.85}.roster-seat.is-stray{color:var(--plan-red)}.roster-list li[data-selected=true] .roster-seat.is-stray{color:var(--surface)}.roster-clear{flex-shrink:0;width:26px;height:26px;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--ink-soft);font-size:15px;line-height:1;cursor:pointer;transition:border-color .15s var(--ease),color .15s var(--ease)}.roster-clear:hover{border-color:var(--rose);color:var(--rose)}.roster-clear:focus-visible{outline:2px solid var(--rose);outline-offset:2px}.seat-map-wrap{background:var(--plan-fill);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-3);box-shadow:var(--shadow-card);min-width:0}.seat-map-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2) var(--space-3);padding:0 var(--space-1) var(--space-2);font-size:var(--text-sm);min-height:28px}.seat-map-notice{color:var(--ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seat-map-controls{display:inline-flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);min-width:0}.seat-map-toggle{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;font-size:var(--text-xs);color:var(--ink-soft);cursor:pointer;text-transform:uppercase;letter-spacing:.08em}.seat-zoom{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--line);border-radius:999px;background:var(--surface);padding:2px}.seat-zoom button{width:24px;height:24px;padding:0;border:none;border-radius:50%;background:none;color:var(--ink);font-size:15px;line-height:1;cursor:pointer;transition:background .15s var(--ease)}.seat-zoom button:hover:not(:disabled){background:var(--cream-deep)}.seat-zoom button:disabled{opacity:.32;cursor:default}.seat-zoom button:focus-visible{outline:2px solid var(--rose);outline-offset:1px}.seat-zoom output{min-width:3.4em;text-align:center;font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--ink-soft)}.seat-map-scroll{overflow-x:auto;overflow-y:hidden}.seat-map-scroll[data-zoomed=true]{cursor:grab}.seat-map-scroll[data-zoomed=true] .seat-map{max-width:none}@media (max-width: 520px){.seat-map-wrap{padding:var(--space-2)}.seat-map-bar{justify-content:flex-start}.seat-map-notice{flex-basis:100%;order:2;white-space:normal}.roster-list{max-height:30vh}.seat-stats{font-size:var(--text-xs)}}@media (pointer: coarse){.roster-pick{min-height:44px}.roster-clear{width:40px;height:40px;font-size:18px}.seat-zoom button{width:40px;height:40px;font-size:17px}.seat-map-expand{min-height:40px;padding:6px 14px}.seat-map-toggle{min-height:44px}.seat-map-toggle input{width:24px;height:24px}}.kiosk{position:fixed;inset:0;display:grid;place-items:center;padding:var(--space-5);background:radial-gradient(1200px 700px at 50% -10%,oklch(91% .05 35 / .55),transparent 65%),radial-gradient(900px 600px at 50% 110%,oklch(91% .06 80 / .4),transparent 65%),var(--cream);color:var(--ink);overflow:hidden;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;cursor:default}.kiosk:not([data-state=idle]){cursor:pointer}.kiosk .blossoms{z-index:0}.kiosk-corner{z-index:2}.kiosk-manual{z-index:3}.kiosk-stage{position:relative;z-index:1;width:100%;max-width:680px;display:grid;place-items:center;gap:var(--space-6);text-align:center}.kiosk-cam{width:min(72vw,420px);aspect-ratio:1;border-radius:var(--radius-lg);overflow:hidden;background:#e0d6ca;box-shadow:var(--shadow-lift);transition:opacity .3s var(--ease)}.kiosk-cam video,.kiosk-cam canvas{width:100%!important;height:100%!important;object-fit:cover}.kiosk:not([data-state=idle]) .kiosk-cam{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.kiosk-eyebrow{font-family:var(--sans);font-size:clamp(.875rem,.6rem + 1vw,1.125rem);letter-spacing:.36em;text-transform:uppercase;color:var(--rose-deep)}.kiosk-title{font-family:var(--serif);font-style:italic;font-size:clamp(2rem,1rem + 5vw,3.5rem);line-height:1.05;margin-top:var(--space-3)}.kiosk-sub{margin-top:var(--space-4);color:var(--ink-soft);font-size:clamp(1rem,.8rem + 1vw,1.375rem);max-width:34ch;margin-inline:auto}.kiosk-name{font-family:var(--serif);font-style:italic;font-size:clamp(3rem,1rem + 11vw,6rem);line-height:.95;margin-top:var(--space-2)}.kiosk-seat{margin-top:var(--space-6)}.kiosk-table{display:inline-grid;gap:var(--space-1);padding:var(--space-4) var(--space-8);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-card)}.kiosk-table-label{font-size:clamp(.75rem,.6rem + .5vw,1rem);letter-spacing:.3em;text-transform:uppercase;color:var(--ink-soft)}.kiosk-table-value{font-family:var(--serif);font-size:clamp(4rem,2rem + 14vw,9rem);line-height:1;font-variant-numeric:tabular-nums}.kiosk-seat-line{margin-top:var(--space-4);font-family:var(--serif);font-size:clamp(1.25rem,.9rem + 2vw,2rem)}.kiosk-noseat{margin-top:var(--space-6);font-family:var(--serif);font-style:italic;font-size:clamp(1.25rem,.9rem + 2vw,2rem);color:var(--rose-deep)}.kiosk-plusone{margin-top:var(--space-4);color:var(--ink-soft);font-size:clamp(.95rem,.8rem + .8vw,1.25rem)}.kiosk-hint{margin-top:var(--space-6);font-size:var(--text-xs);letter-spacing:.24em;text-transform:uppercase;color:var(--ink-soft)}.kiosk-unknown .kiosk-title{color:var(--rose-deep)}.kiosk-unknown .btn{margin-top:var(--space-5)}.kiosk-spinner{width:48px;height:48px;border:3px solid var(--line);border-top-color:var(--rose);border-radius:50%;margin:0 auto;animation:kioskSpin .9s linear infinite}@keyframes kioskSpin{to{transform:rotate(360deg)}}.kiosk-corner{position:fixed;right:0;bottom:0;width:72px;height:72px;padding:0;border:none;background:transparent;opacity:0}.kiosk-corner:focus-visible{opacity:1;outline:2px solid var(--rose)}.kiosk-manual{position:fixed;inset:0;display:grid;place-items:center;background:#2318148c;padding:var(--space-5)}.kiosk-manual form{background:var(--surface);border-radius:var(--radius-md);padding:var(--space-5);width:min(100%,380px);display:grid;gap:var(--space-2);box-shadow:var(--shadow-lift)}.kiosk-manual label{font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft)}.kiosk-manual-actions{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.kiosk-manual-actions .btn{flex:1}@media (orientation: landscape) and (max-height: 620px){.kiosk-stage{max-width:900px}.kiosk-cam{width:min(38vw,300px)}}@media (prefers-reduced-motion: reduce){.kiosk-spinner{animation-duration:2s}}.agenda{position:relative;min-height:100dvh;padding:var(--space-8) var(--space-5) var(--space-10);background:radial-gradient(1200px 700px at 50% -10%,oklch(91% .05 35 / .55),transparent 65%),radial-gradient(900px 600px at 50% 110%,oklch(91% .06 80 / .4),transparent 65%),var(--cream);color:var(--ink)}.agenda .blossoms{z-index:0}.agenda-frame{position:relative;z-index:1;width:min(100%,40rem);margin-inline:auto}.agenda-head{text-align:center}.agenda-eyebrow{color:var(--rose-deep);letter-spacing:.3em}.agenda-title{margin-top:var(--space-3);font-family:var(--serif);font-style:italic;font-size:clamp(2.25rem,1.4rem + 4vw,3.75rem);line-height:1.02}.agenda-divider{width:3.5rem;height:1px;margin:var(--space-5) auto;background:linear-gradient(90deg,transparent,var(--gold),transparent)}.agenda-intro{max-width:34rem;margin-inline:auto;color:var(--ink-soft);font-size:var(--text-base)}.agenda-list{list-style:none;margin:var(--space-8) 0 0;padding:0}.agenda-item{position:relative;padding:0 0 var(--space-6) var(--space-6);border-left:1px solid var(--line)}.agenda-item:last-child{padding-bottom:0;border-left-color:transparent}.agenda-item:before{content:"";position:absolute;left:-.3125rem;top:.45rem;width:.5625rem;height:.5625rem;border-radius:50%;background:var(--rose);box-shadow:0 0 0 4px var(--cream)}.agenda-time{font-family:var(--serif);font-size:var(--text-lg);font-variant-numeric:tabular-nums;letter-spacing:.02em;color:var(--rose-deep)}.agenda-body{margin-top:var(--space-1)}.agenda-event{font-family:var(--serif);font-size:clamp(1.375rem,1.1rem + 1.2vw,1.875rem);line-height:1.15}.agenda-details{margin-top:var(--space-2);max-width:38ch;color:var(--ink-soft);font-size:var(--text-sm);line-height:1.6}.agenda-notes{margin-top:var(--space-8);padding:var(--space-5);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-card)}.agenda-notes ul{margin:var(--space-3) 0 0;padding-left:var(--space-4);display:grid;gap:var(--space-2);color:var(--ink-soft);font-size:var(--text-sm);line-height:1.6}.agenda-notes li::marker{color:var(--gold)}.agenda-foot{margin-top:var(--space-8);text-align:center}.agenda-home{font-size:var(--text-xs);letter-spacing:.22em;text-transform:uppercase;color:var(--rose-deep);border-bottom:1px solid transparent;padding-bottom:2px;transition:border-color .2s var(--ease),color .2s var(--ease)}.agenda-home:hover,.agenda-home:focus-visible{border-bottom-color:var(--rose)}@media (min-width: 40rem){.agenda-item{display:grid;grid-template-columns:10.5rem 1fr;gap:var(--space-5);padding-left:var(--space-8)}.agenda-time{padding-top:.15rem;white-space:nowrap}.agenda-body{margin-top:0}.agenda-item:before{top:.6rem}}@media (prefers-reduced-motion: reduce){.agenda-home{transition:none}}.wedding-card{--paper: #FFFBF4;--wall: #F7EDD5;--wall-far: #FFF6EC;--card-ink: #4A3B31;--ink-soft: #6F5B4C;--rule: #E8D6C3;--accent: #E1904F;--accent-deep: #B9662F;--blush: #FBEADD;--placeholder: #F1D9C3;--btn: #A49284;--btn-deep: #8B7A6B;--btn-tint: #F1ECE7;--r-pill: 999px;--r-control: 16px;--r-block: 24px;--r-card: 32px;--page-pad: 20px;--art-top: clamp(24px, 6vw, 48px);--rose: #F2C4CE;--rose-deep: #E4A3B3;--sage: #A9C0A2;--sage-soft: #C9D9C4;--sky: #BCD3E8;--gold: #D9C48A;--card-gutter: clamp(24px, 13vw, 108px);--motif: clamp(34px, 9vw, 84px);--motif-inset: calc((var(--card-gutter) - var(--motif)) / 2);--card-display: "Noto Sans Thai", system-ui, sans-serif;--card-script: "Caveat", "Noto Sans Thai", cursive;--card-code: "Quicksand", "Noto Sans Thai", system-ui, sans-serif;--card-text: "Noto Sans Thai", system-ui, sans-serif;display:flex;flex-direction:column;align-items:center;min-height:100%;padding:var(--art-top) var(--page-pad) 48px;background:linear-gradient(180deg,var(--wall) 0%,var(--wall-far) 46%,var(--wall-far) 100%);color:var(--card-ink)}.card-art{width:min(100%,660px);margin-inline:auto;line-height:0}.card-art.is-loading,.card-art--placeholder{background-color:var(--placeholder);background-image:linear-gradient(90deg,transparent 20%,rgb(255 255 255 / 55%) 50%,transparent 80%);background-size:220% 100%;background-repeat:no-repeat;animation:card-shimmer 1.8s var(--ease) infinite;border-radius:var(--r-card);-webkit-mask-image:linear-gradient(to bottom,#000 78%,transparent 100%);mask-image:linear-gradient(to bottom,#000 78%,transparent 100%)}.card-art--placeholder{aspect-ratio:1536 / 1161}.card-art-img{display:block;width:100%;height:auto;-webkit-mask-image:linear-gradient(to bottom,#000 94%,transparent 100%);mask-image:linear-gradient(to bottom,#000 94%,transparent 100%);will-change:transform;opacity:0;transition:opacity .5s var(--ease)}.card-art-img.is-loaded{opacity:1}.card-paper{position:relative;overflow:hidden;width:100%;max-width:780px;padding:44px var(--card-gutter) 44px;margin-top:clamp(-64px,-6vw,-32px);border-radius:var(--r-card);background:var(--paper);box-shadow:0 2px 6px #5a371e14,0 20px 48px #5a371e24;text-align:center}.card-paper--message{margin-top:48px;padding:64px 32px}.card-display{margin:0;font-family:var(--card-script);font-size:clamp(3rem,1.7rem + 4.6vw,4.5rem);font-weight:600;line-height:1.02;letter-spacing:0}.card-title{margin:0;font-family:var(--card-display);font-size:clamp(1.375rem,1.2rem + .8vw,1.75rem);font-weight:600;line-height:1.3}.card-tagline{margin:6px 0 0;font-family:var(--card-display);font-size:clamp(1.0625rem,.9rem + .7vw,1.3125rem);font-weight:500;color:var(--btn)}.card-heading{margin:26px 0 10px;font-family:var(--card-display);font-size:1.25rem;font-weight:600;letter-spacing:0}.card-body{margin:14px 0 0;font-family:var(--card-text);font-size:1rem;line-height:1.75}.card-body--tight{line-height:1.7}.card-body--prose{max-width:44ch;margin-inline:auto;white-space:pre-line}.card-countdown{display:inline-block;margin:20px 0 0;padding:7px 18px;border-radius:var(--r-pill);background:var(--blush);color:var(--btn);font-family:var(--card-text);font-size:.875rem;font-weight:600;letter-spacing:.6px}.card-fineprint{margin:10px 0 0;font-family:var(--card-text);font-size:.875rem;line-height:1.7;color:var(--ink-soft)}.card-foot{margin-top:48px;font-family:var(--card-text);font-size:1rem;font-weight:400;line-height:1.7;color:var(--card-ink)}.card-cats{display:flex;flex-wrap:wrap;gap:clamp(6px,2vw,14px);justify-content:center;margin-top:22px;opacity:.7}.card-cat{width:clamp(38px,9vw,56px);height:auto}.card-foot-name{display:inline-block;margin-top:2px;font-family:var(--card-script);font-size:1.625rem;line-height:1.2}.card-section{margin-top:8px}.card-pass-note{font-size:.75rem;line-height:1.7}.card-dress-theme{margin:8px 0 0;font-family:var(--card-script);font-size:1.75rem;line-height:1.2;color:var(--accent-deep)}.card-dress-palette{margin:4px 0 0;font-family:var(--card-text);font-size:.75rem;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:var(--ink-soft)}.card-dress-note{font-size:.75rem;line-height:1.8;color:var(--ink-soft);max-width:27rem}.card-skeleton{display:flex;flex-direction:column;align-items:center;gap:14px}.card-skeleton-line,.card-skeleton-pill{background:linear-gradient(90deg,var(--blush) 25%,var(--paper) 50%,var(--blush) 75%);background-size:300% 100%;animation:card-shimmer 1.4s var(--ease) infinite;border-radius:var(--r-pill)}.card-skeleton-line{width:min(100%,32ch);height:14px}.card-skeleton-line--title{width:min(70%,16ch);height:42px}.card-skeleton-line--tagline{width:min(52%,14ch);height:20px}.card-skeleton-line--short{width:min(70%,22ch)}.card-skeleton-actions{display:flex;gap:8px;margin-top:10px}.card-skeleton-pill{width:132px;height:var(--control-h);border-radius:var(--r-control)}@keyframes card-shimmer{0%{background-position:150% 0}to{background-position:-150% 0}}.card-divider{display:flex;align-items:center;gap:14px;max-width:300px;margin:34px auto 0}.card-divider-rule{flex:1;height:1px;background:linear-gradient(to right,transparent,var(--rule),transparent)}.card-divider .card-motif{flex:none;width:32px;height:32px}.motif-flower{object-fit:contain}.card-hero .card-body{margin-top:18px}.card-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:24px 0 0}.card-btn{display:inline-block;min-height:var(--control-h);padding:0 20px;border:1.5px solid var(--btn);border-radius:var(--r-control);background:var(--paper);color:var(--card-ink);font-family:var(--card-text);font-size:.9375rem;font-weight:600;letter-spacing:.2px;line-height:var(--control-h);text-decoration:none;cursor:pointer;transition:transform .2s var(--ease),background-color .2s var(--ease),border-color .2s var(--ease),box-shadow .2s var(--ease)}.card-btn:hover{transform:translateY(-2px);background:var(--btn-tint);border-color:var(--btn-deep);box-shadow:0 6px 14px #a4928442}.card-rsvp{display:grid;gap:12px;grid-template-columns:1fr 1fr;margin-top:18px}.card-choice{min-height:56px;padding:14px 16px;border:1.5px solid var(--btn);border-radius:var(--r-control);background:var(--paper);color:var(--card-ink);font-family:var(--card-text);font-size:.9375rem;font-weight:600;cursor:pointer;transition:transform .2s var(--ease),background-color .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease)}.card-choice:hover:not(:disabled):not(.is-active){transform:translateY(-2px);background:var(--btn-tint);border-color:var(--btn-deep)}.card-choice.is-active{background:var(--btn);border-color:var(--btn);color:#fff}.card-choice:disabled{opacity:.45;cursor:not-allowed}.card-choice[aria-busy=true]:disabled{opacity:1;border-color:var(--btn-deep);background:var(--btn-tint);cursor:progress}.card-choice[aria-busy=true]:after{content:"";display:inline-block;width:12px;height:12px;margin-left:8px;border:2px solid var(--btn-deep);border-top-color:transparent;border-radius:50%;vertical-align:-1px;animation:card-spin .7s linear infinite}@keyframes card-spin{to{transform:rotate(360deg)}}.card-wishes{margin-top:20px}.card-wishes .card-btn{margin-top:12px}.wedding-card .field{margin-top:18px;text-align:left}.wedding-card .field>label{font-family:var(--card-text);font-size:.875rem;font-weight:600;letter-spacing:0;text-transform:none;color:var(--ink-soft)}.wedding-card .input,.wedding-card .select,.wedding-card .textarea{border:1.5px solid var(--rule);border-radius:var(--r-control);padding:12px 14px;background:var(--paper);color:var(--card-ink);font-family:var(--card-text);font-size:1rem}.wedding-card .input::placeholder{color:var(--ink-soft)}.wedding-card .chip{min-height:var(--control-h);padding:10px 18px;border:1.5px solid var(--btn);border-radius:var(--r-control);background:var(--paper);color:var(--card-ink);font-family:var(--card-text);font-size:.9375rem;font-weight:600;transition:transform .2s var(--ease),background-color .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease)}.wedding-card .chip:hover:not(.is-active){transform:translateY(-2px);background:var(--btn-tint);border-color:var(--btn-deep);color:var(--card-ink)}.wedding-card .chip.is-active{background:var(--btn);border-color:var(--btn);color:#fff}.wedding-card .btn{min-height:56px;padding:0 28px;border:1.5px solid var(--btn);border-radius:var(--r-control);background:var(--btn);color:#fff;font-family:var(--card-text);font-size:.9375rem;font-weight:600;transition:transform .2s var(--ease),background-color .2s var(--ease),border-color .2s var(--ease)}.wedding-card .btn:hover:not(:disabled){transform:translateY(-2px);background:var(--btn-deep);border-color:var(--btn-deep)}.wedding-card .btn:disabled{opacity:.5}.wedding-card .song-picked{gap:10px;min-height:50px;padding:8px 8px 8px 14px;border:1.5px solid var(--rule);border-radius:var(--r-control);background:var(--paper);color:var(--card-ink);font-family:var(--card-text);font-size:1rem}.wedding-card .song-clear{width:30px;height:30px;border:1.5px solid var(--btn);background:var(--paper);color:var(--ink-soft);font-size:17px}.wedding-card .song-clear:hover{border-color:var(--btn-deep);background:var(--btn-tint);color:var(--card-ink)}.wedding-card .song-results{border:1.5px solid var(--rule);border-radius:var(--r-control);background:var(--paper)}.wedding-card .song-results button{border-radius:calc(var(--r-control) - 6px);font-family:var(--card-text);font-size:.9375rem;color:var(--card-ink)}.wedding-card .song-results button:hover{background:var(--btn-tint)}.wedding-card .song-picked:focus-within,.wedding-card .song-clear:focus-visible{outline:2px solid var(--btn-deep);outline-offset:3px}.wedding-card .rsvp-deadline{margin:24px 0 0;font-family:var(--card-text);font-size:.8125rem;color:var(--ink-soft);text-align:center}.wedding-card .rsvp-save{font-family:var(--card-text);font-size:.875rem;color:var(--ink-soft);text-align:left}.wedding-card .rsvp-save .btn{margin-left:6px;min-height:34px;padding:0 14px;font-size:.8125rem}.wedding-card .card-btn:focus-visible,.wedding-card .card-choice:focus-visible,.wedding-card .chip:focus-visible,.wedding-card .btn:focus-visible,.wedding-card .input:focus-visible,.wedding-card .select:focus-visible,.wedding-card .textarea:focus-visible{outline:2px solid var(--btn-deep);outline-offset:3px}.wedding-card .input:focus,.wedding-card .select:focus,.wedding-card .textarea:focus{border-color:var(--btn-deep)}.card-pass{margin-top:16px;padding:22px 18px;border:2px dashed var(--rule);border-radius:var(--r-block);background:linear-gradient(180deg,var(--blush) 0%,transparent 70%)}.card-qr{display:block;margin:0 auto}.card-pass-code{margin:10px 0 0;font-family:var(--card-code);font-size:1rem;font-weight:700;letter-spacing:3px;color:var(--accent-deep)}.card-seating{display:grid;grid-template-columns:2fr 1fr 1fr;gap:8px;margin:16px 0 0;padding-top:12px;border-top:1px solid var(--rule);text-align:left}.card-seating div{margin:0}.card-seating div:nth-child(2),.card-seating div:nth-child(3){text-align:center}.card-seating dt{font-family:var(--card-text);font-size:.75rem;font-weight:600;letter-spacing:1.2px;text-transform:uppercase;color:var(--ink-soft)}.card-seating dd{margin:2px 0 0;font-family:var(--card-text);font-size:.875rem}.card-seating--plus-one{border-top-style:dotted}.card-motifs{position:absolute;inset:0;pointer-events:none}.card-motifs .card-motif{position:absolute}@media (max-width: 600px){.wedding-card{--page-pad: 0px;padding:var(--art-top) 0 0}.card-paper{max-width:none;padding:32px 20px 28px;margin-top:-28px;border-radius:28px 28px 0 0;box-shadow:none;flex-grow:1}.card-paper--message{margin-top:0;border-radius:0}.card-art-img{border-radius:0}.wedding-card .card-motif--wide{display:none}.card-body--prose{max-width:none}.card-rsvp{grid-template-columns:1fr}}@media (prefers-reduced-motion: no-preference){.card-paper{animation:card-rise .7s var(--ease) both}.card-hero>*{animation:card-rise .55s var(--ease) both}.card-hero .card-display{animation-delay:.1s}.card-hero .card-tagline{animation-delay:.2s}.card-hero .card-body{animation-delay:.3s}.card-hero .card-actions{animation-delay:.4s}.card-divider .card-motif{animation:card-bloom .7s var(--ease) .35s both}.card-countdown{animation:card-rise .5s var(--ease) .5s both}}@keyframes card-rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes card-bloom{0%{opacity:0;transform:scale(.6) rotate(-8deg)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){.card-btn,.card-choice{transition:none}.card-btn:hover,.card-choice:hover:not(:disabled):not(.is-active){transform:none}.card-skeleton-line,.card-skeleton-pill{background:var(--blush);animation:none}.card-art.is-loading,.card-art--placeholder{background-image:none;animation:none}.card-choice[aria-busy=true]:after{animation:none}.card-art-img{transition:none;will-change:auto}}.debug-panel{position:fixed;z-index:9999;top:8px;left:8px;right:8px;max-width:460px;font-family:ui-monospace,monospace;font-size:11px;line-height:1.5;color:#e8e3da;background:#1c1612f0;border-radius:10px;padding:8px 10px;box-shadow:0 6px 20px #0000004d}.debug-panel.is-closed{right:auto;padding:4px;background:#1c1612b3}.debug-toggle{border:0;background:none;color:#f0c48a;font:inherit;cursor:pointer;padding:2px 4px}.debug-row{display:flex;justify-content:space-between;gap:12px}.debug-row b{color:#f0c48a;text-align:right;word-break:break-all}.debug-errors{margin-top:6px;padding-top:6px;border-top:1px solid rgb(255 255 255 / 18%);color:#ffb4a2;word-break:break-word}.debug-none{color:#9c948a}.debug-ua{margin-top:6px;color:#9c948a;word-break:break-all}.motif-library{--paper: #FBF7EF;--rose: #F2C4CE;--rose-deep: #E4A3B3;--sage: #A9C0A2;--sage-soft: #C9D9C4;--sky: #BCD3E8;--gold: #D9C48A;--card-ink: #3B3A36;--sheet-ground: #E7E4DC;--sheet-surface: #F4F2EC;--sheet-ink: #23262B;--sheet-soft: #5C6169;--sheet-rule: #CFCBC1;--sheet-accent: #4E6E96;--sheet-serif: "Cormorant Garamond", Georgia, serif;--sheet-mono: ui-monospace, SFMono-Regular, Menlo, monospace;min-height:100%;padding:clamp(20px,4vw,56px);background:var(--sheet-ground);color:var(--sheet-ink);font-family:var(--sheet-mono);font-size:.875rem;line-height:1.6}.motif-wrap{display:flex;flex-direction:column;gap:40px;max-width:1080px;margin:0 auto}.motif-title{margin:0;font-family:var(--sheet-serif);font-size:clamp(2rem,1.2rem + 3vw,3rem);font-weight:400;line-height:1.1;text-wrap:balance}.motif-library h2{margin:0;font-family:var(--sheet-serif);font-size:1.375rem;font-weight:400}.motif-library h3{margin:0;font-family:var(--sheet-serif);font-size:1.0625rem;font-weight:400}.motif-eyebrow{margin:0 0 10px;color:var(--sheet-accent);font-size:.6875rem;letter-spacing:.18em;text-transform:uppercase}.motif-lede{max-width:62ch;margin:12px 0 0;color:var(--sheet-soft)}.motif-lede b{border-bottom:1px solid var(--sheet-accent);color:var(--sheet-ink);font-weight:400}.motif-note{margin:0;color:var(--sheet-soft);font-size:.75rem}.motif-note a{color:var(--sheet-accent)}.motif-foot{padding-top:14px;border-top:1px solid var(--sheet-rule);color:var(--sheet-soft);font-size:.75rem}.motif-block{display:flex;flex-direction:column;gap:20px;padding:clamp(18px,3vw,30px);background:var(--sheet-surface);border:1px solid var(--sheet-rule)}.motif-head{display:flex;flex-wrap:wrap;gap:10px;align-items:baseline;justify-content:space-between;padding-bottom:12px;border-bottom:1px solid var(--sheet-rule)}.motif-status{padding:3px 9px;border:1px solid var(--sheet-rule);color:var(--sheet-soft);font-size:.6875rem;letter-spacing:.14em;text-transform:uppercase}.motif-status.is-live{border-color:var(--sheet-accent);color:var(--sheet-accent)}.motif-set{display:flex;flex-direction:column;gap:14px}.motif-set-head{display:flex;align-items:baseline;gap:10px}.motif-set-head:after{content:"";flex:1;height:1px;background:var(--sheet-rule)}.motif-count{color:var(--sheet-soft);font-size:.6875rem;font-variant-numeric:tabular-nums}.motif-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(122px,1fr));gap:12px;align-items:start}.motif-tile{display:flex;flex-direction:column;gap:7px;margin:0}.motif-plate{position:relative;aspect-ratio:1;background:var(--paper);border:1px solid var(--sheet-rule)}.motif-plate .card-motif{position:absolute;inset:14px;width:auto;height:auto}.motif-plate img.card-motif{max-width:calc(100% - 28px);max-height:calc(100% - 28px)}.motif-tile figcaption{display:flex;flex-direction:column;gap:1px;font-size:.6875rem;line-height:1.45}.motif-tile figcaption b{font-family:var(--sheet-serif);font-size:.8125rem;font-weight:400}.motif-tile figcaption code{color:var(--sheet-soft);font-size:.65rem}.motif-tile figcaption em{color:var(--sheet-accent);font-size:.625rem;font-style:normal;letter-spacing:.08em;text-transform:uppercase}.motif-how{display:flex;flex-direction:column;gap:6px;padding-left:16px;border-left:2px solid var(--sheet-accent);color:var(--sheet-soft);font-size:.75rem}.motif-how b{color:var(--sheet-ink);font-weight:400}.motif-how ol{display:flex;flex-direction:column;gap:4px;margin:0;padding-left:18px}.motif-how code,.motif-foot code{color:var(--sheet-ink)}.slip-kiosk{min-height:100dvh;display:grid;place-items:center;padding:var(--space-6) var(--space-5);background:radial-gradient(1200px 700px at 50% -10%,oklch(91% .05 35 / .55),transparent 65%),radial-gradient(900px 600px at 50% 110%,oklch(91% .06 80 / .4),transparent 65%),var(--cream);color:var(--ink);-webkit-tap-highlight-color:transparent;touch-action:manipulation}.slip-kiosk[data-state=done]{cursor:pointer}.slip-kiosk .blossoms{z-index:0}.slip-stage{position:relative;z-index:1;width:min(100%,440px);text-align:center}.slip-panel{display:grid;gap:var(--space-3)}.slip-eyebrow{font-family:var(--sans);font-size:clamp(.8125rem,.7rem + .5vw,1rem);letter-spacing:.36em;text-transform:uppercase;color:var(--rose-deep)}.slip-title{font-family:var(--serif);font-style:italic;font-size:clamp(2rem,1.4rem + 3vw,3rem);line-height:1.05}.slip-name{font-family:var(--serif);font-style:italic;font-size:clamp(2rem,1.2rem + 4vw,3.25rem);line-height:1;overflow-wrap:anywhere}.slip-sub{color:var(--ink-soft);font-size:clamp(.95rem,.85rem + .5vw,1.125rem);max-width:34ch;margin-inline:auto}.slip-hint{font-size:var(--text-xs);letter-spacing:.24em;text-transform:uppercase;color:var(--ink-soft);margin-top:var(--space-2)}.slip-search{margin-top:var(--space-3);text-align:center}.slip-results{margin-top:var(--space-2);text-align:left}.slip-form{text-align:center}.slip-back{border:none;background:none;color:var(--rose-deep);font-size:var(--text-sm);text-decoration:underline;cursor:pointer;justify-self:center;padding:var(--space-1)}.slip-label{font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);text-align:left;margin-top:var(--space-3)}.slip-form .input{font-size:var(--text-lg)}.slip-amount-input{text-align:right;font-variant-numeric:tabular-nums}.slip-choose{margin-top:var(--space-2)}.slip-preview{width:100%;max-height:40dvh;object-fit:contain;border-radius:var(--radius-md);border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow-card)}.slip-amount{font-family:var(--serif);font-size:clamp(2.25rem,1.5rem + 4vw,3.5rem);font-variant-numeric:tabular-nums;line-height:1}.slip-spinner{width:48px;height:48px;border:3px solid var(--line);border-top-color:var(--rose);border-radius:50%;margin:0 auto;animation:slipSpin .9s linear infinite}@keyframes slipSpin{to{transform:rotate(360deg)}}@media (pointer: coarse){.slip-results button{min-height:44px}}@media (prefers-reduced-motion: reduce){.slip-spinner{animation-duration:2s}}:root{--cream: oklch(95% .02 70);--cream-deep: oklch(91% .03 70);--ink: oklch(22% .02 40);--ink-soft: oklch(40% .02 40);--rose: oklch(58% .14 25);--rose-deep: oklch(48% .16 25);--gold: oklch(72% .12 80);--sage: oklch(62% .06 150);--line: oklch(82% .02 60);--surface: oklch(98% .01 70);--shadow-card: 0 1px 2px oklch(20% .02 40 / .04), 0 8px 24px oklch(20% .02 40 / .06);--shadow-lift: 0 2px 4px oklch(20% .02 40 / .06), 0 20px 40px oklch(20% .02 40 / .12);--serif: "Cormorant Garamond", "Times New Roman", serif;--sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--sans-thai: "Noto Sans Thai", "Inter", system-ui, -apple-system, sans-serif;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.5rem;--text-2xl: 2rem;--text-display: clamp(2.25rem, 1.1rem + 4.5vw, 4.5rem);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-8: 3rem;--space-10: 4rem;--space-12: 6rem;--radius-sm: 6px;--radius-md: 12px;--radius-lg: 20px;--control-h: 2.875rem;--ease: cubic-bezier(.16, 1, .3, 1)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--sans);font-size:var(--text-base);line-height:1.5;color:var(--ink);background:var(--cream);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{margin:0;font-weight:500;line-height:1.15}p{margin:0}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit;color:inherit}.serif{font-family:var(--serif);font-weight:500}.italic{font-style:italic}.muted{color:var(--ink-soft)}.center{text-align:center}.eyebrow{font-family:var(--sans);font-size:var(--text-xs);letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft)}.app{min-height:100%;min-height:100dvh}.shell{max-width:1100px;margin:0 auto;padding:var(--space-5)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--control-h);padding:.5rem 1.5rem;font-size:var(--text-sm);font-weight:500;letter-spacing:.04em;border-radius:999px;border:1px solid transparent;background:var(--ink);color:var(--cream);transition:transform .2s var(--ease),background-color .2s var(--ease),border-color .2s var(--ease)}.btn:hover{transform:translateY(-1px);background:var(--rose-deep)}.btn:active{transform:translateY(0)}.btn:focus-visible{outline:2px solid var(--rose);outline-offset:3px}.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none}.btn.ghost{background:transparent;color:var(--ink);border-color:var(--line)}.btn.ghost:hover{background:var(--surface);border-color:var(--ink-soft)}.btn.rose{background:var(--rose)}.btn.rose:hover{background:var(--rose-deep)}.btn.danger{background:transparent;color:var(--rose-deep);border-color:var(--rose)}.btn.danger:hover{background:var(--rose);color:var(--cream)}.btn.sm{min-height:0;padding:.5rem 1rem;font-size:var(--text-xs)}.toolbar .btn{min-height:var(--control-h)}.btn.block{width:100%}.btn{white-space:nowrap}.field{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.field-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));gap:var(--space-3);margin-top:var(--space-3)}.field>label{font-size:var(--text-xs);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft)}.input,.select,.textarea{font-family:var(--sans-thai);padding:.6rem 1.1rem;border:1px solid var(--line);background:var(--surface);border-radius:999px;min-height:var(--control-h);transition:border-color .2s var(--ease),box-shadow .2s var(--ease);min-width:0;max-width:100%}.select{appearance:none;-webkit-appearance:none;padding-right:2.5rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%235C554E' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center}@supports (-webkit-touch-callout: none){.input,.select,.textarea{font-size:max(1rem,var(--text-base))}}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--rose);box-shadow:0 0 0 3px #bf534e26}.textarea{min-height:80px;resize:vertical;border-radius:var(--radius-md);padding:.75rem 1rem}.input.block,.select.block,.textarea.block{width:100%;display:block}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-5);box-shadow:var(--shadow-card)}.card.flat{box-shadow:none}.card{min-width:0}.split-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:var(--space-5)}.blossoms{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:2}.petal-fall{position:absolute;top:-24px;animation:petalFall var(--fall-duration) linear var(--fall-delay) infinite}.petal{display:block;background:linear-gradient(135deg,oklch(93% .04 15),oklch(86% .09 20));border-radius:100% 6px;opacity:.75;animation:petalSway var(--sway-duration) ease-in-out var(--fall-delay) infinite alternate}@keyframes petalFall{0%{transform:translate3d(0,-4vh,0);opacity:0}8%{opacity:1}to{transform:translate3d(var(--drift),104vh,0);opacity:.9}}@keyframes petalSway{0%{transform:rotate(-35deg) translate(-7px)}to{transform:rotate(50deg) translate(7px)}}.dress-swatches{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 14px;margin:12px 0 4px}.dress-swatch-group{display:flex;flex-wrap:nowrap;gap:4px}.dress-swatch{width:14px;height:14px;border-radius:50%;box-shadow:inset 0 0 0 1px #4a3b3124}.chip-row{display:flex;flex-wrap:wrap;gap:8px}.chip{padding:.45rem 1.05rem;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-family:var(--sans-thai);font-size:var(--text-sm);color:var(--ink-soft);cursor:pointer;transition:border-color .15s var(--ease),color .15s var(--ease),background-color .15s var(--ease)}.chip:hover{border-color:var(--rose);color:var(--rose)}.chip.is-active{background:var(--ink);border-color:var(--ink);color:var(--cream)}.chip:focus-visible{outline:2px solid var(--rose);outline-offset:2px}@media (pointer: coarse){.chip{min-height:42px}}.song-results{list-style:none;margin:6px 0 0;padding:6px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-card);max-height:240px;overflow-y:auto}.song-results button{border-radius:999px}.song-results button{display:block;width:100%;padding:8px 10px;border:none;border-radius:6px;background:none;font:inherit;font-family:var(--sans-thai);font-size:var(--text-sm);text-align:left;color:var(--ink);cursor:pointer}.song-results button:hover{background:var(--cream)}.song-results button:focus-visible{outline:2px solid var(--rose);outline-offset:-2px}.song-picked{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:var(--control-h);padding:.4rem .5rem .4rem 1.1rem;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-family:var(--sans-thai);font-size:var(--text-base)}.song-picked-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.song-clear{flex-shrink:0;width:26px;height:26px;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--ink-soft);font-size:15px;line-height:1;cursor:pointer;transition:border-color .15s var(--ease),color .15s var(--ease)}.song-clear:hover{border-color:var(--rose);color:var(--rose)}.song-clear:focus-visible{outline:2px solid var(--rose);outline-offset:2px}.ticket{--stub-w: 170px;position:relative;display:grid;grid-template-columns:minmax(0,1fr) var(--stub-w);max-width:480px;margin-inline:auto;background:linear-gradient(180deg,var(--surface),var(--cream-deep));border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-lift);text-align:left;overflow:hidden}.ticket-stub{position:relative}.ticket-stub:before,.ticket-stub:after{content:"";position:absolute;width:22px;height:22px;border-radius:50%;background:var(--cream);border:1px solid var(--line)}.ticket-stub:before{top:-12px;left:-12px}.ticket-stub:after{bottom:-12px;left:-12px}.ticket-main{padding:var(--space-4);min-width:0}.ticket-eyebrow{color:var(--rose-deep)}.ticket-title{font-family:var(--serif);font-style:italic;font-size:var(--text-2xl);line-height:1.15;margin:4px 0 6px}.ticket-when{font-size:var(--text-sm)}.ticket-venue{font-size:var(--text-sm);margin-bottom:var(--space-3)}.ticket-stub{border-left:2px dashed var(--line);padding:var(--space-4) var(--space-3);display:grid;place-content:center;justify-items:center;gap:var(--space-2);text-align:center}.ticket .qr{background:#fff;padding:var(--space-2);border-radius:var(--radius-sm);display:inline-block;line-height:0}.ticket .pass-code{font-family:var(--serif);font-style:italic;font-size:var(--text-lg);letter-spacing:.1em;font-variant-numeric:lining-nums}.ticket-scan{font-size:10px;text-transform:uppercase;letter-spacing:.18em;color:var(--ink-soft)}.ticket-people{display:grid;gap:var(--space-2);padding-top:var(--space-3);border-top:1px dashed var(--line)}.ticket-person{display:grid;grid-template-columns:minmax(0,1fr) 52px 52px;gap:var(--space-3);align-items:center}.ticket-person .eyebrow{display:block;margin-bottom:2px}.ticket-person .v{font-family:var(--serif);font-size:var(--text-lg);font-variant-numeric:lining-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 430px){.ticket{grid-template-columns:1fr}.ticket-stub{border-left:none;border-top:2px dashed var(--line)}.ticket-stub:before{top:-12px;left:-12px}.ticket-stub:after{inset:-12px -12px auto auto}}.admin-shell,.login-page{--sans: "Noto Sans Thai", "Inter", system-ui, -apple-system, sans-serif;--serif: "Noto Sans Thai", "Inter", system-ui, -apple-system, sans-serif;font-family:var(--sans)}.admin-shell :is(h1,h2,h3,h4,.eyebrow),.login-page :is(h1,h2,h3,h4,.eyebrow){font-style:normal}.admin-shell{min-height:100dvh;background:var(--cream)}.skeleton{display:inline-block;height:14px;max-width:100%;border-radius:6px;background:linear-gradient(90deg,var(--cream-deep) 25%,var(--surface) 37%,var(--cream-deep) 63%);background-size:400% 100%;animation:skeleton-shimmer 1.4s ease infinite}@keyframes skeleton-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.page-enter{animation:page-enter .26s var(--ease)}@keyframes page-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){.skeleton,.page-enter{animation:none}}.admin-header{flex-wrap:wrap;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--line);background:var(--surface);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:10;backdrop-filter:blur(8px)}.admin-header h1{font-family:var(--serif);font-style:italic;font-size:var(--text-xl)}.admin-nav{display:flex;gap:var(--space-2);flex-wrap:wrap}.admin-nav a{padding:.5rem .9rem;border-radius:999px;font-size:var(--text-sm);color:var(--ink-soft)}.admin-nav a.active{background:var(--ink);color:var(--cream)}.admin-nav a:hover:not(.active){color:var(--ink);background:var(--cream-deep)}.subnav{display:flex;gap:var(--space-4);flex-wrap:wrap;margin-bottom:var(--space-4);border-bottom:1px solid var(--line)}.subnav a{padding:.45rem 0;border-bottom:2px solid transparent;font-size:var(--text-sm);color:var(--ink-soft);margin-bottom:-1px}.subnav a.active{color:var(--ink);border-bottom-color:var(--ink)}.subnav a:hover:not(.active){color:var(--ink)}@media (pointer: coarse){.subnav a{min-height:44px;display:inline-flex;align-items:center}}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr));gap:var(--space-3);margin-bottom:var(--space-6)}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);min-width:0}.stat .label{font-size:var(--text-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft)}.stat .value{font-family:var(--serif);font-size:var(--text-2xl);margin-top:var(--space-2)}.stat .sub{font-size:var(--text-xs);color:var(--ink-soft);margin-top:2px}.guest-count{font-size:var(--text-sm);margin:calc(var(--space-2) * -1) 0 var(--space-3)}.bulk-bar{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin:0 0 var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--rose);border-radius:var(--radius-sm);background:#bf534e0f}.bulk-count{font-size:var(--text-sm);font-weight:600}.guest-table .cell-select{width:1%;padding-right:0;vertical-align:top}.guest-table .cell-select input{margin:0;cursor:pointer}.guest-table thead .cell-select{vertical-align:middle}.guest-table tr.is-selected{background:#bf534e0d}.pager{display:flex;align-items:center;justify-content:center;gap:var(--space-4);margin-top:var(--space-4)}.pager .muted{font-size:var(--text-sm)}.pager .btn[disabled]{opacity:.45;cursor:not-allowed}.toolbar{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-bottom:var(--space-4)}.toolbar .grow{flex:1 1 min(200px,100%);min-width:0}.toolbar--filters{margin-bottom:var(--space-3)}.toolbar--filters .select{flex:0 1 auto;min-width:0}.toolbar--actions{justify-content:space-between}.toolbar-cluster{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}@media (max-width: 560px){.toolbar--actions>.btn{flex:1 1 100%}}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--radius-md)}.table-scroll .guest-table{min-width:520px}.guest-table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);overflow:hidden}.guest-table .cell-name{max-width:240px}.guest-table .cell-sub{font-size:var(--text-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.guest-table th,.guest-table td{text-align:left;padding:.75rem 1rem;border-bottom:1px solid var(--line);font-size:var(--text-sm);vertical-align:middle}.guest-table th{background:var(--cream-deep);font-weight:500;font-size:var(--text-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}.guest-table tr:last-child td{border-bottom:none}.guest-table tr:hover td{background:var(--cream)}.slip-thumb-btn{padding:0;border:none;background:none;cursor:pointer;line-height:0;border-radius:var(--radius-sm)}.slip-thumb-btn:focus-visible{outline:2px solid var(--rose);outline-offset:2px}.slip-thumb{width:56px;height:56px;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--cream-deep)}.modal.slip-view{max-width:min(960px,92vw)}.slip-modal-img{display:block;max-width:100%;max-height:80dvh;object-fit:contain;border-radius:var(--radius-sm);border:1px solid var(--line);margin-inline:auto}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:999px;font-size:var(--text-xs);letter-spacing:.06em;border:1px solid currentColor;white-space:nowrap}.badge.yes{color:var(--sage)}.badge.no{color:var(--rose-deep)}.badge.pending{color:var(--ink-soft)}.badge.checked{background:var(--sage);color:#fff;border-color:var(--sage)}.modal-backdrop{position:fixed;inset:0;background:#1e130f80;display:flex;align-items:center;justify-content:center;padding:var(--space-4);z-index:50;animation:fade .2s var(--ease)}.modal{background:var(--surface);border-radius:var(--radius-lg);padding:var(--space-6);max-width:480px;width:100%;margin:auto;max-height:calc(100dvh - 2 * var(--space-4));overflow:auto;-webkit-overflow-scrolling:touch;box-shadow:var(--shadow-lift)}@media (max-width: 640px){.modal{padding:var(--space-4)}}.modal h3{font-family:var(--serif);font-style:italic;font-size:var(--text-xl);margin-bottom:var(--space-4)}.name-link{padding:0;border:none;background:none;font:inherit;color:var(--ink);text-align:left;cursor:pointer}.name-link:hover{color:var(--rose)}.name-link:focus-visible{outline:2px solid var(--rose);outline-offset:2px;border-radius:4px}.detail-list{margin:0}.detail-row{display:grid;grid-template-columns:120px minmax(0,1fr);gap:var(--space-3);padding:8px 0;border-bottom:1px dashed var(--line)}.detail-row:last-child{border-bottom:none}.detail-row dt{align-self:baseline;padding-top:2px}.detail-row dd{margin:0;overflow-wrap:break-word;white-space:pre-line}.modal .field+.field{margin-top:var(--space-3)}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes pulse{0%,to{opacity:.5}50%{opacity:1}}.loader{width:36px;height:36px;border:2.5px solid var(--cream-deep);border-top-color:var(--rose);border-radius:50%;animation:spin .8s linear infinite}.loader-block{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-10) 0;color:var(--ink-soft);font-size:var(--text-sm)}.loader-block .label{animation:pulse 1.5s ease-in-out infinite}.dashboard-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);margin-bottom:var(--space-6)}@media (max-width: 960px){.dashboard-grid{grid-template-columns:1fr 1fr}}@media (max-width: 720px){.dashboard-grid{grid-template-columns:1fr}}.chart-card{min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-5);animation:fadeUp .4s var(--ease) backwards}.chart-card+.chart-card{animation-delay:80ms}.chart-card--wide{grid-column:1 / -1}.chart-card h3{font-family:var(--sans);font-size:var(--text-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:var(--space-4)}.donut-wrap{display:flex;flex-wrap:wrap;gap:var(--space-4) var(--space-5);align-items:center;justify-content:center}.donut-wrap>svg{flex-shrink:0}.donut-wrap svg circle{transition:stroke-dasharray .4s var(--ease),stroke-dashoffset .4s var(--ease)}.donut-legend{list-style:none;padding:0;margin:0;display:grid;gap:8px;flex:1;font-size:var(--text-sm)}.donut-legend li{display:flex;justify-content:space-between;align-items:center;gap:8px}.donut-legend .dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;display:inline-block;margin-right:6px}.donut-legend .count{font-family:var(--serif);font-style:italic;font-size:var(--text-lg)}.group-bars{display:grid;gap:var(--space-3)}.group-bar{display:grid;grid-template-columns:72px 1fr;align-items:center;gap:var(--space-3)}.group-bar-label{font-size:var(--text-sm);color:var(--ink-soft)}.group-bar-track{display:flex;height:28px;border-radius:999px;overflow:hidden;background:var(--cream-deep)}.group-bar-track .seg{display:flex;align-items:center;justify-content:center;font-size:var(--text-xs);font-weight:600;color:#fff;transition:flex-basis .5s var(--ease);min-width:0;overflow:hidden}.group-bar-track .seg.yes{background:var(--sage)}.group-bar-track .seg.pending{background:var(--ink-soft)}.group-bar-track .seg.no{background:var(--rose)}.group-bar-track .seg.empty{background:transparent;color:var(--ink-soft);flex-basis:100%;font-weight:400}.stat{animation:fadeUp .4s var(--ease) backwards}.stat:nth-child(2){animation-delay:60ms}.stat:nth-child(3){animation-delay:.12s}.stat:nth-child(4){animation-delay:.18s}.stat:nth-child(5){animation-delay:.24s}.stat:nth-child(6){animation-delay:.3s}.scanner{background:#000;border-radius:var(--radius-md);overflow:hidden;max-width:400px;margin:0 auto;aspect-ratio:1}.scanner video{width:100%;height:100%;object-fit:cover}.notice{background:var(--cream-deep);border-left:3px solid var(--rose);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);font-size:var(--text-sm);margin-bottom:var(--space-4)}.notice.error{border-color:var(--rose-deep);color:var(--rose-deep)}.notice.success{border-color:var(--sage);color:#2f5136}.login-page{min-height:100dvh;display:grid;place-items:center;padding:var(--space-5);background:radial-gradient(800px 400px at 50% 10%,oklch(91% .05 35 / .4),transparent 60%),var(--cream)}.login-card{max-width:380px;width:100%}.login-card h1{font-family:var(--serif);font-style:italic;font-size:var(--text-2xl);margin-bottom:var(--space-2);text-align:center}.login-card p{text-align:center;color:var(--ink-soft);margin-bottom:var(--space-5);font-size:var(--text-sm)}.login-card .field+.field{margin-top:var(--space-3)}.login-card .btn{margin-top:var(--space-4)}@media (max-width: 640px){.guest-table{font-size:var(--text-xs)}.guest-table th,.guest-table td{padding:.5rem}.admin-header{gap:var(--space-2) var(--space-3);padding:var(--space-3) var(--space-4)}.admin-header h1{font-size:var(--text-lg)}.admin-header span.muted{display:none}.admin-nav{order:3;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;min-width:0;max-width:100%;flex-basis:100%;mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent)}.admin-nav::-webkit-scrollbar{display:none}.admin-nav a{flex-shrink:0}.table-scroll{mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent)}.guest-table .badge .badge-text{display:none}.guest-table .badge{padding:5px}.guest-table .btn-label{display:none}.guest-table td .btn.sm{padding:.45rem .6rem}.table-scroll .guest-table{min-width:430px}}@media (max-width: 400px){.shell{padding:var(--space-4) var(--space-3)}.card{padding:var(--space-4)}.stat{padding:var(--space-3) var(--space-4)}.chart-card{padding:var(--space-4)}}@media (pointer: coarse){.btn{min-height:44px}.btn.sm{min-height:44px;padding:.5rem .9rem}.admin-nav a{min-height:44px;display:inline-flex;align-items:center}.guest-table td .btn.sm{min-height:36px}input[type=checkbox],input[type=radio]{width:24px;height:24px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}.blossoms{display:none}}
