@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:oklch(90.5% .03 62);--surface:oklch(99.5% .006 80);--ink:oklch(26% .02 55);--grey:oklch(46% .022 55);--accent:oklch(46% .075 52);--accent-deep:oklch(38% .07 50);--accent-soft:oklch(93% .038 62);--divider:oklch(86% .028 62);--field-border:oklch(64.5% .04 60);--danger:oklch(50% .15 30);--danger-bg:oklch(94% .04 30);--pending:oklch(48% .1 70);--pending-bg:oklch(94% .05 75);--success:oklch(50% .12 150);--on-accent:oklch(99.5% .006 80);--shadow-card:0 1px 2px oklch(26% .02 55/.06), 0 10px 28px oklch(26% .02 55/.09);--focus-ring:color-mix(in oklch, var(--accent) 32%, transparent);--font-display:"Fraunces Variable", Georgia, "Times New Roman", serif;--font-body:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.25rem;--text-hero:2.125rem;--ease-standard:cubic-bezier(.4, 0, .2, 1);font-family:var(--font-body);font-size:var(--text-base);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;line-height:1.5}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);margin:0}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{background:var(--accent);color:var(--on-accent);z-index:100;transition:top .15s var(--ease-standard);border-radius:8px;padding:10px 16px;position:absolute;top:-48px;left:8px}.skip-link:focus{top:8px}.page{max-width:1100px;margin:0 auto;padding:32px 24px 64px}.centered-page{justify-content:center;align-items:center;min-height:100dvh;padding:24px;display:flex}h1{font-family:var(--font-display);font-size:var(--text-hero);color:var(--accent-deep);margin:0;font-weight:600;line-height:1.15}h2{font-family:var(--font-display);font-size:var(--text-lg);margin:0;font-weight:600}.muted{color:var(--grey);font-size:var(--text-sm)}.field-help{color:var(--grey);font-size:var(--text-xs);font-weight:400}.error{color:var(--danger);font-size:var(--text-sm)}.success{color:var(--success);font-size:var(--text-sm)}.card{background:var(--surface);border:1px solid var(--divider);max-width:560px;box-shadow:var(--shadow-card);border-radius:14px;flex-direction:column;gap:16px;padding:24px;display:flex}.centered-page .card{max-width:420px}label{font-size:var(--text-sm);flex-direction:column;gap:6px;font-weight:600;display:flex}input,select{font:inherit;border:1px solid var(--field-border);background:var(--surface);color:var(--ink);min-height:44px;transition:border-color .15s var(--ease-standard), outline-color .15s var(--ease-standard);border-radius:8px;padding:10px 12px}input:focus-visible,select:focus-visible{border-color:var(--accent);outline:2px solid var(--focus-ring);outline-offset:1px}.switch-row{flex-direction:row;align-items:center;gap:10px;font-weight:600}.switch-row input{width:20px;height:20px;min-height:0}.fieldset{border:1px solid var(--divider);border-radius:10px;flex-direction:column;gap:8px;margin:0;padding:12px 14px 14px;display:flex}.fieldset legend{font-size:var(--text-sm);padding:0 6px;font-weight:600}.button{min-height:44px;font:inherit;cursor:pointer;text-align:center;transition:background-color .15s var(--ease-standard);border:none;border-radius:8px;justify-content:center;align-items:center;padding:10px 16px;font-weight:600;text-decoration:none;display:inline-flex}.button.primary{background:var(--accent);color:var(--on-accent)}.button.primary:hover:not(:disabled){background:var(--accent-deep)}.button.ghost{background:var(--accent-soft);color:var(--accent-deep)}.button.ghost:hover:not(:disabled){background:color-mix(in oklch, var(--accent-soft) 80%, var(--accent) 20%)}.button:disabled{opacity:.55;cursor:not-allowed}.button:focus-visible{outline:2px solid var(--accent-deep);outline-offset:2px}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.topbar-actions{flex-wrap:wrap;gap:8px;display:flex}.badge{font-size:var(--text-xs);white-space:nowrap;border-radius:999px;padding:3px 10px;font-weight:600}.badge-pending{background:var(--pending-bg);color:var(--pending)}.empty-state{text-align:center;flex-direction:column;align-items:center;gap:12px;padding:64px 24px;display:flex}.empty-title{font-family:var(--font-display);font-size:var(--text-lg);margin:0}.event-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.event-row{background:var(--surface);border:1px solid var(--divider);cursor:pointer;width:100%;font:inherit;color:inherit;text-align:left;box-shadow:var(--shadow-card);transition:border-color .15s var(--ease-standard);border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:16px 18px;display:flex}.event-row:hover{border-color:var(--accent)}.event-row:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.event-row-main{flex-direction:column;gap:2px;display:flex}.event-name{font-family:var(--font-display);font-size:var(--text-lg)}.tabs{border-bottom:1px solid var(--divider);gap:4px;margin-bottom:16px;display:flex}.tab{min-height:44px;font:inherit;font-size:var(--text-sm);color:var(--grey);cursor:pointer;transition:color .15s var(--ease-standard), border-color .15s var(--ease-standard);background:0 0;border:none;border-bottom:2px solid #0000;padding:10px 14px;font-weight:600}.tab-active{color:var(--accent-deep);border-bottom-color:var(--accent)}.tab:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.filters{flex-wrap:wrap;gap:8px;display:flex}.chip{border:1px solid var(--divider);background:var(--surface);min-height:44px;color:var(--ink);font:inherit;font-size:var(--text-sm);cursor:pointer;transition:background-color .15s var(--ease-standard), color .15s var(--ease-standard), border-color .15s var(--ease-standard);border-radius:999px;padding:8px 14px}.chip-active{background:var(--accent);color:var(--on-accent);border-color:var(--accent);font-weight:600}.chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.gallery-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;display:flex}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;margin:0;padding:0;list-style:none;display:grid}.photo-cell{flex-direction:column;gap:4px;display:flex}.photo-frame{aspect-ratio:1;background:var(--accent-soft);box-shadow:var(--shadow-card);border:2px solid #0000;border-radius:10px;position:relative;overflow:hidden}.photo-cell-selected .photo-frame{border-color:var(--accent)}.photo-open{cursor:pointer;background:0 0;border:none;padding:0;position:absolute;inset:0}.photo-open img{object-fit:cover;width:100%;height:100%;display:block}.photo-open:focus-visible{outline:2px solid var(--accent);outline-offset:-4px}.photo-placeholder{background:var(--accent-soft);width:100%;height:100%;display:block}.photo-select{margin:0;position:absolute;top:6px;left:6px}.photo-select input{cursor:pointer;width:22px;height:22px;min-height:0}.photo-actions{gap:4px;display:flex;position:absolute;top:6px;right:6px}.icon-button{width:34px;height:34px;color:var(--on-accent);cursor:pointer;transition:background-color .15s var(--ease-standard);background:oklch(26% .02 55/.55);border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1rem;line-height:1;display:inline-flex}.icon-button:hover{background:oklch(26% .02 55/.78)}.icon-button:focus-visible{outline:2px solid var(--on-accent);outline-offset:1px}.icon-button-fav{color:oklch(65% .2 25)}.photo-caption{font-size:var(--text-xs);color:var(--grey);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.viewer-backdrop{z-index:50;background:oklch(18% .015 55/.94);flex-direction:column;display:flex;position:fixed;inset:0}.viewer-bar{color:var(--on-accent);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.viewer-caption{font-size:var(--text-sm)}.viewer-actions{gap:8px;display:flex}.viewer-stage{flex:1;justify-content:center;align-items:center;gap:8px;min-height:0;padding:0 12px 24px;display:flex}.viewer-image{object-fit:contain;border-radius:6px;max-width:100%;max-height:100%}.viewer-status{color:var(--on-accent);font-size:var(--text-sm)}.viewer-nav{width:48px;height:48px;color:var(--on-accent);cursor:pointer;background:oklch(99.5% .006 80/.14);border:none;border-radius:50%;flex:none;font-size:1.75rem;line-height:1}.viewer-nav:hover:not(:disabled){background:oklch(99.5% .006 80/.26)}.viewer-nav:disabled{opacity:.3;cursor:not-allowed}.viewer-nav:focus-visible{outline:2px solid var(--on-accent);outline-offset:2px}.qr-panel{background:var(--surface);border:1px solid var(--divider);box-shadow:var(--shadow-card);border-radius:14px;flex-direction:column;align-items:center;gap:14px;padding:32px 24px;display:flex}.qr-image{border-radius:8px;width:min(320px,70vw);height:auto}.qr-code-text{font-family:var(--font-display);font-size:var(--text-lg);letter-spacing:.08em;margin:0}.qr-subtitle{margin-top:8px}.qr-sizes{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.link-row{font:inherit;font-size:var(--text-sm);color:var(--accent-deep);cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:6px;text-decoration:underline;display:inline-flex}.link-row:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.qr-join-url{overflow-wrap:anywhere}@media (width<=640px){.page{padding:24px 16px 48px}h1{font-size:1.6rem}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}.topbar-actions{width:100%}}
