@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/fonts/inter/inter-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/fonts/inter/inter-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/fonts/inter/inter-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:300 700;font-display:swap;src:url(/assets/fonts/cormorant-garamond/cormorant-garamond-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:300 700;font-display:swap;src:url(/assets/fonts/cormorant-garamond/cormorant-garamond-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:300 700;font-display:swap;src:url(/assets/fonts/cormorant-garamond/cormorant-garamond-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cormorant Garamond;font-style:italic;font-weight:300 700;font-display:swap;src:url(/assets/fonts/cormorant-garamond/cormorant-garamond-italic-vietnamese.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Cormorant Garamond;font-style:italic;font-weight:300 700;font-display:swap;src:url(/assets/fonts/cormorant-garamond/cormorant-garamond-italic-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Cormorant Garamond;font-style:italic;font-weight:300 700;font-display:swap;src:url(/assets/fonts/cormorant-garamond/cormorant-garamond-italic-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-size:15px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--color-text-primary);background:var(--color-background-primary)}:root{color-scheme:light;--color-text-primary: #111111;--color-text-secondary: #6b6b6b;--color-text-tertiary: #aaaaaa;--color-text-info: #2563eb;--color-text-danger: #a32d2d;--color-text-warning: #b45309;--color-background-primary: #ffffff;--color-background-secondary: #f5f5f4;--color-background-tertiary: #eeeeec;--color-background-info: #eff6ff;--color-background-warning: #fffbeb;--color-background-danger: #fcebeb;--color-border-primary: #111111;--color-border-secondary: #d4d4d0;--color-border-tertiary: #e8e8e5;--color-action-primary: #1a1a1a;--color-action-primary-hover: #333333;--color-action-primary-text: #ffffff;--color-brand: #c5394b;--color-brand-hover: #b02f40;--color-brand-text: #ffffff;--color-brand-ink: #c5394b;--color-preview-highlight: #c5394b;--font-sans: "Inter", -apple-system, sans-serif;--font-serif: "Cormorant Garamond", Georgia, serif;--font-mono: "SF Mono", "Fira Code", monospace;--border-radius-sm: 4px;--border-radius-md: 8px;--border-radius-lg: 12px;--border-radius-xl: 16px}:root[data-theme=dark]{color-scheme:dark;--color-text-primary: #f0f0ef;--color-text-secondary: #a0a09e;--color-text-tertiary: #606060;--color-text-info: #60a5fa;--color-text-danger: #f87171;--color-text-warning: #fbbf24;--color-background-primary: #1a1a19;--color-background-secondary: #222221;--color-background-tertiary: #2c2c2b;--color-background-info: #1e3a5f;--color-background-warning: #3d2e00;--color-background-danger: #3d1f1f;--color-border-primary: #f0f0ef;--color-border-secondary: #3a3a38;--color-border-tertiary: #2e2e2c;--color-action-primary: #f0f0ef;--color-action-primary-hover: #d8d8d6;--color-action-primary-text: #1a1a19;--color-brand-ink: #ef6b7c}h1,h2,h3,h4{font-weight:500;line-height:1.25}p{line-height:1.6}a{color:var(--color-text-info);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--color-text-info);outline-offset:2px}button,input,select,textarea{font-family:inherit}[data-template=classic]{--tpl-font-heading: "Cormorant Garamond", Georgia, serif;--tpl-font-body: "Inter", sans-serif;--tpl-color-primary: #c9a96e;--tpl-color-bg: #faf7f2;--tpl-color-surface: #f0ebe1;--tpl-color-text: #2c2416;--tpl-color-muted: #8a7560;font-family:var(--tpl-font-body);background:var(--tpl-color-bg);color:var(--tpl-color-text)}[data-template=classic] h1,[data-template=classic] h2,[data-template=classic] h3{font-family:var(--tpl-font-heading);font-weight:400;letter-spacing:.02em}[data-template=dark]{--tpl-font-heading: "Cormorant Garamond", Georgia, serif;--tpl-font-body: "Inter", sans-serif;--tpl-color-primary: #e8c87a;--tpl-color-bg: #0f0f1a;--tpl-color-surface: #1a1a2e;--tpl-color-text: #e8e4da;--tpl-color-muted: #8884a0;font-family:var(--tpl-font-body);background:var(--tpl-color-bg);color:var(--tpl-color-text)}[data-template=dark] h1,[data-template=dark] h2,[data-template=dark] h3{font-family:var(--tpl-font-heading);font-weight:300;color:var(--tpl-color-primary)}[data-template=nature]{--tpl-font-heading: "Inter", sans-serif;--tpl-font-body: "Inter", sans-serif;--tpl-color-primary: #5d9e7a;--tpl-color-bg: #f2f7f3;--tpl-color-surface: #e4f0e8;--tpl-color-text: #1a2e22;--tpl-color-muted: #5a7a62;font-family:var(--tpl-font-body);background:var(--tpl-color-bg);color:var(--tpl-color-text)}[data-template=nature] h1,[data-template=nature] h2,[data-template=nature] h3{font-family:var(--tpl-font-heading);font-weight:500;color:var(--tpl-color-primary)}[data-template=classic] .event-section,[data-template=classic] .countdown-section,[data-template=dark] .event-section,[data-template=dark] .gallery-section,[data-template=dark] .countdown-section,[data-template=dark] .message-section,[data-template=nature] .event-section,[data-template=nature] .countdown-section{background:var(--tpl-color-surface)}[data-template] .section-title{font-family:var(--tpl-font-heading);color:var(--tpl-color-text)}::selection{background-color:var(--color-brand);color:#fff}[data-template] ::selection{background-color:var(--tpl-color-primary);color:var(--tpl-color-bg)}html{scrollbar-width:thin;scrollbar-color:var(--color-border-secondary) transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border-secondary);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-tertiary)}.btn-primary,.btn-secondary,.btn-danger,.btn-danger-ghost,.btn-brand{display:inline-flex;align-items:center;justify-content:center;gap:4px;font-family:inherit;font-size:13px;font-weight:500;padding:9px 16px;border-radius:8px;border:.5px solid transparent;cursor:pointer;white-space:nowrap;transition:opacity .15s,background .15s,border-color .15s}.btn-primary{background:var(--color-action-primary);color:var(--color-action-primary-text);border-color:var(--color-action-primary)}.btn-primary:hover:not(:disabled){background:var(--color-action-primary-hover);border-color:var(--color-action-primary-hover);text-decoration:none}.btn-secondary{background:var(--color-background-primary);color:var(--color-text-primary);border-color:var(--color-border-secondary)}.btn-secondary:hover:not(:disabled){background:var(--color-background-secondary);text-decoration:none}.btn-brand{background:var(--color-brand);color:var(--color-brand-text);border-color:var(--color-brand)}.btn-brand:hover:not(:disabled){background:var(--color-brand-hover);border-color:var(--color-brand-hover);text-decoration:none}.btn-danger{background:#a32d2d;color:#fff;border-color:#a32d2d}.btn-danger:hover:not(:disabled){background:#882424;border-color:#882424;text-decoration:none}.btn-danger-ghost{background:transparent;color:var(--color-text-danger);border-color:transparent}.btn-danger-ghost:hover:not(:disabled){background:var(--color-background-danger)}.btn-primary:disabled,.btn-secondary:disabled,.btn-danger:disabled,.btn-danger-ghost:disabled,.btn-brand:disabled{opacity:.6;cursor:not-allowed}.btn-primary.sm,.btn-secondary.sm,.btn-danger.sm,.btn-danger-ghost.sm,.btn-brand.sm{padding:6px 12px;font-size:12px}.badge{flex-shrink:0;font-size:10px;padding:2px 8px;border-radius:20px;background:var(--color-background-secondary);color:var(--color-text-secondary);white-space:nowrap}.badge-success{background:#eaf3de;color:#27500a}.spinner{width:24px;height:24px;border-radius:50%;border:2px solid var(--color-border-tertiary);border-top-color:var(--color-text-primary);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.state-box{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:80px 24px;background:var(--color-background-primary);border:.5px dashed var(--color-border-secondary);border-radius:12px}.state-emoji{font-size:32px;margin:0}.state-title{font-size:14px;font-weight:500;margin:0;color:var(--color-text-primary)}.state-desc{font-size:13px;color:var(--color-text-secondary);margin:0;max-width:420px}.state-box .btn-primary{margin-top:8px}.error-box{border-style:solid;border-color:#f5c0c0;background:#fcebeb}.error-box .state-title{color:#791f1f}.modal-backdrop{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100;padding:16px}.modal{background:var(--color-background-primary);border-radius:16px;padding:32px;max-width:440px;width:100%;box-shadow:0 20px 60px #0000002e}.modal h2{font-size:22px;font-weight:500;margin:0 0 8px}.modal-text{font-size:13px;color:var(--color-text-secondary);margin:0 0 16px;line-height:1.6}.modal-text strong{color:var(--color-text-primary);font-family:var(--font-mono);word-break:break-all}.modal-error{font-size:13px;color:#a32d2d;margin:0 0 12px}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;max-width:min(560px,calc(100vw - 32px));padding:10px 16px;border-radius:8px;font-size:13px;z-index:999;animation:toastSlideUp .2s cubic-bezier(.16,1,.3,1)}@keyframes toastSlideUp{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.toast.error{background:#fcebeb;color:#791f1f;border:.5px solid #f5c0c0}.toast-message{flex:1}.toast-action{font:inherit;font-weight:500;padding:4px 10px;border-radius:6px;border:.5px solid currentColor;background:transparent;color:inherit;cursor:pointer;white-space:nowrap}.toast-action:hover{background:#0000000f}.toast-close{font:inherit;line-height:1;padding:2px 6px;border:none;background:transparent;color:inherit;cursor:pointer;opacity:.7}.toast-close:hover{opacity:1}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;top:-100px;left:16px;background:var(--color-action-primary);color:var(--color-action-primary-text);padding:8px 16px;border-radius:6px;z-index:10000;font-weight:500;text-decoration:none;transition:top .15s ease-out}.skip-link:focus{top:16px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
