:root{--ivory:#f5f0e8;--paper:#fcfaf6;--sand:#d7c7b4;--accent:#9c7858;--ink:#2b2824;--muted:#746e66;--line:rgba(43,40,36,.15);--deep:#24211e;--max:1080px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--ivory);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;line-height:1.55}body.zh{font-family:"PingFang TC","Microsoft JhengHei",system-ui,sans-serif}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}.wrap{width:min(var(--max),calc(100% - 34px));margin:auto}.top{position:sticky;top:0;z-index:50;background:rgba(245,240,232,.94);backdrop-filter:blur(14px);height:64px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 max(17px,calc((100vw - var(--max))/2))}.home-link{justify-self:start;border:1px solid var(--line);background:var(--paper);border-radius:999px;padding:9px 13px;font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;font-weight:600}.brand{font-family:Georgia,serif;font-size:1.15rem;justify-self:center}.lang-switch{justify-self:end;border:1px solid var(--line);border-radius:999px;padding:9px 13px;font-size:.66rem;white-space:nowrap}.hero{padding:66px 0 34px;text-align:center}.eyebrow{font-size:.64rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}h1,h2,h3{font-family:Georgia,serif;font-weight:400}.zh h1,.zh h2,.zh h3{font-family:"Songti TC","Noto Serif TC","PMingLiU",Georgia,serif}.hero h1{font-size:clamp(3.3rem,8vw,6rem);line-height:.94;letter-spacing:-.05em;margin:12px 0 14px}.hero p{color:var(--muted);max-width:690px;margin:auto}.primary-actions{display:grid;grid-template-columns:.7fr 1.3fr;gap:14px;margin:26px 0 36px}.find-action,.share-action{border:1px solid var(--line);padding:24px;text-align:left;display:flex;justify-content:space-between;align-items:center;gap:20px;min-height:130px}.find-action{background:var(--paper)}.share-action{background:var(--deep);color:white;border-color:var(--deep)}.find-action strong,.share-action strong{font-family:Georgia,serif;font-size:1.55rem;font-weight:400;display:block}.find-action span,.share-action span{font-size:.8rem;color:var(--muted);display:block;margin-top:5px}.share-action span{color:#c9c0b7}.arrow{font-size:1.5rem}.seat-shell{display:grid;grid-template-columns:.85fr 1.15fr;gap:20px;align-items:start;margin-bottom:48px}.panel,.floor{background:var(--paper);border:1px solid var(--line);padding:28px}.panel h2,.floor h2{font-size:2rem;margin:8px 0 10px}.note{font-size:.78rem;color:var(--muted)}.search{width:100%;border:0;border-bottom:1px solid var(--ink);background:transparent;padding:14px 2px;outline:none;font-size:1.05rem}.results{display:grid;gap:7px;margin-top:12px}.result{border:1px solid var(--line);background:white;padding:11px 13px;display:flex;justify-content:space-between;text-align:left;cursor:pointer}.result small{color:var(--muted)}.selected{display:none;background:#e8dfd3;padding:22px;margin-top:16px}.selected.show{display:block}.selected .big{font-family:Georgia,serif;font-size:3rem;line-height:1}.row-buttons{display:flex;gap:9px;margin-top:16px;flex-wrap:wrap}.mini{border:1px solid var(--line);background:transparent;padding:9px 11px;cursor:pointer}.browse{display:none;max-height:360px;overflow:auto;margin-top:12px;border-top:1px solid var(--line)}.browse.show{display:block}.browse-row{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line)}.browse-row button{background:transparent;border:0;padding:0;cursor:pointer;text-align:left}.room{position:relative;min-height:590px;background:#ede6dc;border:1px solid var(--line);margin-top:15px;padding:92px 24px 30px}.couple{position:absolute;top:24px;left:50%;transform:translateX(-50%);background:var(--deep);color:white;padding:10px 24px;font-size:.65rem;letter-spacing:.12em;white-space:nowrap}.table-map{display:grid;grid-template-columns:repeat(3,minmax(105px,1fr));gap:28px 20px;align-items:center;justify-items:center}.table{position:static;width:105px;height:105px;border-radius:50%;border:1px solid #9c8976;background:#faf7f2;cursor:pointer;display:grid;place-items:center;text-align:center;transition:.2s}.table strong{font-family:Georgia,serif;font-size:1.6rem;font-weight:400}.table small{display:block;font-size:.55rem;color:var(--muted);max-width:88px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table.active{background:var(--deep);color:white;transform:scale(1.06)}.table.active small{color:#ddd}.occupants{margin-top:14px;display:grid;grid-template-columns:1fr 1fr;gap:6px}.occupants button{border:1px solid var(--line);background:white;padding:8px;text-align:left;cursor:pointer}.share-promo{margin:0 0 20px;background:linear-gradient(135deg,#9f8266,#6e5540);color:white;padding:34px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:28px}.share-promo h2{font-size:2.3rem;margin:5px 0 8px}.share-promo p{color:#eee7df;margin:0}.share-promo a{border:1px solid rgba(255,255,255,.65);padding:11px 14px;font-size:.66rem;letter-spacing:.08em;text-transform:uppercase}.secondary-tools{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0 0 72px}.tool{background:var(--paper);border:1px solid var(--line);padding:22px;min-height:140px;display:flex;flex-direction:column;justify-content:space-between}.tool strong{font-family:Georgia,serif;font-weight:400;font-size:1.35rem}.tool span{font-size:.78rem;color:var(--muted)}.page{padding:54px 0 80px}.page h1{font-size:clamp(2.8rem,7vw,5.2rem);line-height:.95;margin:12px 0 18px}.lead{color:var(--muted);max-width:720px}.timeline{max-width:820px;margin-top:34px;border-top:1px solid var(--line)}.item{display:grid;grid-template-columns:150px 1fr;gap:28px;padding:24px 0;border-bottom:1px solid var(--line)}.item time{font-family:Georgia,serif;font-size:1.3rem}.item h3{font-size:1.5rem;margin:0 0 4px}.item p{margin:0;color:var(--muted);white-space:pre-line}.photo-grid{columns:3 240px;column-gap:14px;margin-top:34px}.ph{break-inside:avoid;margin:0 0 14px;background:linear-gradient(135deg,#c5ae97,#75665b);height:280px;position:relative}.ph.portrait{height:430px}.ph.wide{height:220px}.ph:after{content:attr(data-label);position:absolute;left:14px;bottom:12px;color:#fff;font-size:.55rem;letter-spacing:.11em;text-transform:uppercase}.menu-card{max-width:720px;margin:32px auto 0;background:var(--paper);border:1px solid var(--line);padding:44px}.menu-card h2{text-align:center;font-size:2.5rem;margin:5px 0 30px}.course{text-align:center;padding:24px 0;border-top:1px solid var(--line)}.course:first-of-type{border-top:0}.course strong{font-size:.65rem;letter-spacing:.16em;text-transform:uppercase}.course p{color:var(--muted);margin:10px 0;white-space:pre-line}.upload{max-width:720px;margin:32px auto;background:var(--paper);border:1px solid var(--line);padding:30px}.drop{border:1px dashed #a18d78;padding:32px;text-align:center;position:relative}.drop input{position:absolute;inset:0;opacity:0;width:100%;cursor:pointer}.field{display:block;margin-top:18px}.field span{display:block;font-size:.64rem;letter-spacing:.09em;text-transform:uppercase;margin-bottom:6px}.field input,.field textarea{width:100%;border:1px solid var(--line);background:white;padding:12px}.field textarea{min-height:120px;resize:vertical}.primary{width:100%;margin-top:20px;border:0;background:var(--deep);color:white;padding:13px;cursor:pointer}.success{display:none;margin-top:14px;background:#e0eadb;padding:13px}.success.show{display:block}.bottom-home{display:block;width:max-content;margin:50px auto 0;border:1px solid var(--line);background:var(--paper);border-radius:999px;padding:11px 15px;font-size:.68rem;letter-spacing:.08em;text-transform:uppercase}
@media(max-width:800px){.primary-actions{grid-template-columns:1fr}.seat-shell{grid-template-columns:1fr}.secondary-tools{grid-template-columns:1fr}.share-promo{grid-template-columns:1fr}.item{grid-template-columns:1fr;gap:4px}.room{min-height:auto}.table-map{grid-template-columns:repeat(3,1fr)}}@media(max-width:520px){.top{grid-template-columns:1fr auto}.brand{display:none}.home-link{font-size:.6rem;padding:8px 10px}.lang-switch{font-size:.6rem;padding:8px 10px}.hero{padding-top:48px}.panel,.floor,.upload,.menu-card{padding:20px}.occupants{grid-template-columns:1fr}.room{min-height:auto;padding:90px 14px 24px}.table-map{grid-template-columns:repeat(2,1fr);gap:22px 12px}.table{width:92px;height:92px}.photo-grid{columns:2 140px}.share-promo{padding:26px}.share-promo h2{font-size:2rem}}
.photo-grid.managed-album{columns:3 240px}.album-media{break-inside:avoid;margin:0 0 14px;background:#ddd2c5;position:relative;overflow:hidden}.album-media img,.album-media video{display:block;width:100%;height:auto}.album-media figcaption{position:absolute;left:10px;bottom:10px;background:rgba(30,26,22,.58);color:white;padding:5px 7px;font-size:.55rem;letter-spacing:.08em;text-transform:uppercase}.album-media.portrait img,.album-media.portrait video{aspect-ratio:4/5;object-fit:cover}.album-media.landscape img,.album-media.landscape video{aspect-ratio:3/2;object-fit:cover}@media(max-width:600px){.photo-grid.managed-album{columns:2 140px}}


/* FINAL V2 — simple two-column interactive seating plan. */
.seat-shell{grid-template-columns:minmax(330px,.86fr) minmax(0,1.14fr)}
.room.simple-seating{padding:28px!important;background:#ede6dc!important;min-height:0!important;overflow:visible}
.room.simple-seating .table-map{display:grid!important;grid-template-columns:repeat(2,minmax(190px,1fr));gap:34px 28px;width:100%;overflow:visible;align-items:center;justify-items:center}
.simple-table{width:min(100%,240px);aspect-ratio:1;position:relative;cursor:pointer;outline:none;transition:transform .2s ease}
.simple-table:last-child:nth-child(odd){grid-column:1/-1;justify-self:center;width:min(50%,240px);min-width:190px}
.seat-ring{position:absolute;inset:0}
.seat-dot{position:absolute;left:var(--x);top:var(--y);width:24px;height:24px;border-radius:50%;background:#fffdf9;border:1px solid #a29487;transform:translate(-50%,-50%);transition:.18s}
.table-core{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:58%;aspect-ratio:1;border-radius:50%;background:#faf7f2;border:1.5px solid #8c7c6d;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:10px;transition:.2s}
.table-core strong{font:34px Georgia,serif;font-weight:400;line-height:1}
.table-core small{display:block;margin-top:7px;font-size:.62rem;color:var(--muted);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.simple-table:hover .table-core,.simple-table:focus .table-core{border-width:3px;border-color:#4d4034}.simple-table:hover{transform:translateY(-2px)}
.simple-table.active .table-core{background:var(--deep);border-color:var(--deep);color:#fff}.simple-table.active .table-core small{color:#ddd}.simple-table.active .seat-dot{border-color:#76614f}.seat-dot.seat-active{background:#9c7858;border:3px solid #6c4e36;transform:translate(-50%,-50%) scale(1.16)}
.album-media.image-lightbox-ready,.managed-media.image-lightbox-ready{cursor:zoom-in}
/* Shared photo lightbox */
.wedding-lightbox{position:fixed;inset:0;z-index:1000;display:none;align-items:center;justify-content:center;background:rgba(16,14,12,.94);padding:28px}.wedding-lightbox.open{display:flex}.wedding-lightbox-stage{position:relative;max-width:94vw;max-height:92vh;display:flex;flex-direction:column;align-items:center;justify-content:center}.wedding-lightbox img{display:block;max-width:92vw;max-height:84vh;width:auto;height:auto;object-fit:contain;box-shadow:0 18px 60px rgba(0,0,0,.28)}.wedding-lightbox-caption{color:#eee7df;margin-top:10px;text-align:center;font-size:.76rem;max-width:760px}.wedding-lightbox-close,.wedding-lightbox-prev,.wedding-lightbox-next{position:fixed;border:1px solid rgba(255,255,255,.42);background:rgba(20,18,16,.48);color:white;cursor:pointer;display:grid;place-items:center;z-index:2}.wedding-lightbox-close{right:22px;top:20px;width:44px;height:44px;border-radius:50%;font-size:26px}.wedding-lightbox-prev,.wedding-lightbox-next{top:50%;transform:translateY(-50%);width:48px;height:64px;font-size:31px;border-radius:8px}.wedding-lightbox-prev{left:18px}.wedding-lightbox-next{right:18px}.wedding-lightbox.single .wedding-lightbox-prev,.wedding-lightbox.single .wedding-lightbox-next{display:none}
@media(max-width:800px){.seat-shell{grid-template-columns:1fr}.room.simple-seating .table-map{grid-template-columns:repeat(2,minmax(150px,1fr));gap:26px 16px}.simple-table{width:min(100%,220px)}.simple-table:last-child:nth-child(odd){width:min(50%,220px);min-width:170px}}
@media(max-width:520px){.room.simple-seating{padding:20px 10px!important}.room.simple-seating .table-map{grid-template-columns:repeat(2,minmax(125px,1fr));gap:20px 8px}.simple-table{width:min(100%,170px)}.simple-table:last-child:nth-child(odd){width:min(50%,170px);min-width:145px}.seat-dot{width:18px;height:18px}.table-core strong{font-size:28px}.table-core small{font-size:.54rem}.wedding-lightbox{padding:14px}.wedding-lightbox img{max-width:94vw;max-height:78vh}.wedding-lightbox-prev,.wedding-lightbox-next{top:auto;bottom:18px;transform:none;width:52px;height:46px}.wedding-lightbox-prev{left:calc(50% - 62px)}.wedding-lightbox-next{right:calc(50% - 62px)}.wedding-lightbox-close{right:12px;top:12px}}
