@font-face{font-family:Bachelorette;src:url(/fonts/Bachelorette-Personal.otf)format("opentype");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:Imbue;src:url(/fonts/Imbue-Variable.ttf)format("truetype");font-style:normal;font-weight:100 900;font-display:swap}:root{color:#000;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;background:#5c7750;font-family:Imbue,serif}*{box-sizing:border-box}html,body{overscroll-behavior:none;overflow-x:clip}body{min-width:280px;margin:0}html{scrollbar-width:none}html::-webkit-scrollbar{display:none}::selection{color:#10291b;background:#d8ffd0}.campus-map-board{background:#fffaf0;min-width:0;margin-top:3.3cqw;padding:6px;position:relative;box-shadow:5px 5px #c02135}.campus-map-board .map-zoom-link{color:inherit;text-decoration:none;display:block;position:relative}.campus-map-board img{width:100%;height:auto;display:block}.campus-map-board .map-open-label{color:#fff;background:#003367e8;padding:7px 9px;font:700 9px/1.4 system-ui,sans-serif;position:absolute;bottom:6px;right:6px}.campus-map-board .directions-tape{z-index:3;clip-path:polygon(4% 2%,98% 0,95% 96%,1% 100%);background:#eca825cc;width:70px;height:20px;position:absolute;top:-9px}.campus-map-board .tape-left{left:12%;transform:rotate(-3deg)}.campus-map-board .tape-right{right:11%;transform:rotate(3deg)}:where(.campus-map-board) .animated-campus-map{isolation:isolate;background:#e7ddcb;overflow:hidden}:where(.campus-map-board) .animated-campus-map>img{z-index:1;position:relative}:where(.campus-map-board) .route-overlay{z-index:2;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}:where(.campus-map-board) .route-halo,:where(.campus-map-board) .route-path{fill:none;stroke-linecap:round;stroke-linejoin:round}:where(.campus-map-board) .route-halo{stroke:#fffdf4;stroke-width:17px;opacity:.92}:where(.campus-map-board) .route-path{stroke-width:8px;stroke-dasharray:21 16;filter:drop-shadow(0 3px 2px #001b3580);animation:1s linear infinite campus-route-guidance}:where(.campus-map-board) .route-path-red{stroke:#d52235}:where(.campus-map-board) .route-path-blue{stroke:#1764c0}:where(.campus-map-board) .route-traveller circle{fill:#fffdf4;stroke-width:6px}:where(.campus-map-board) .route-traveller use{color:inherit}:where(.campus-map-board) .traveller-red{color:#d52235}:where(.campus-map-board) .traveller-red circle{stroke:#d52235}:where(.campus-map-board) .traveller-blue{color:#1764c0}:where(.campus-map-board) .traveller-blue circle{stroke:#1764c0}:where(.campus-map-board) .destination-marker>circle:not(.destination-pulse){fill:#c02135;stroke:#fffdf4;stroke-width:7px}:where(.campus-map-board) .destination-pulse{fill:#c02135;opacity:.45;transform-box:fill-box;transform-origin:50%;animation:1.7s ease-out infinite campus-destination-pulse}:where(.campus-map-board) .animated-campus-map>span{z-index:4}:where(.campus-map-board) .animated-campus-map:after{content:"Hai lối đi · Một điểm hẹn";z-index:3;color:#003367;letter-spacing:.1em;text-transform:uppercase;background:#fffaf0e8;padding:8px 11px;font:900 9px system-ui,sans-serif;position:absolute;top:14px;left:14px;box-shadow:3px 3px #c02135}:where(.campus-map-board) .parking-marker{color:#003367}:where(.campus-map-board) .parking-pin{fill:#fffaf0;stroke:#003367;stroke-width:7px}:where(.campus-map-board) .parking-marker use{color:#003367}:where(.campus-map-board) .parking-callout-line{fill:none;stroke:#003367;stroke-width:5px;stroke-linecap:round}:where(.campus-map-board) .parking-label-bg{fill:#fffaf0;stroke:#003367;stroke-width:4px}:where(.campus-map-board) .parking-label{fill:#003367;letter-spacing:.01em;font:900 24px system-ui,sans-serif}:where(.campus-map-board) .parking-spot circle{fill:#003367;stroke:#fffaf0;stroke-width:5px}:where(.campus-map-board) .parking-spot>path{fill:none;stroke:#003367;stroke-width:5px;stroke-linecap:round}:where(.campus-map-board) .parking-spot rect{fill:#fffaf0;stroke:#003367;stroke-width:4px}:where(.campus-map-board) .parking-p{fill:#fff;font:900 23px system-ui,sans-serif}:where(.campus-map-board) .parking-spot-label{fill:#003367;font:900 18px system-ui,sans-serif}:where(.campus-map-board) .gate-marker circle{stroke:#fffaf0;stroke-width:5px}:where(.campus-map-board) .gate-marker path{fill:none;stroke-width:5px;stroke-linecap:round}:where(.campus-map-board) .gate-marker rect{fill:#fffaf0;stroke-width:4px}:where(.campus-map-board) .gate-marker text{font:900 19px system-ui,sans-serif}:where(.campus-map-board) .gate-marker-red circle{fill:#d52235}:where(.campus-map-board) .gate-marker-red path,:where(.campus-map-board) .gate-marker-red rect{stroke:#d52235}:where(.campus-map-board) .gate-marker-red text{fill:#d52235}:where(.campus-map-board) .gate-marker-blue circle{fill:#1764c0}:where(.campus-map-board) .gate-marker-blue path,:where(.campus-map-board) .gate-marker-blue rect{stroke:#1764c0}:where(.campus-map-board) .gate-marker-blue text{fill:#1764c0}@keyframes campus-route-guidance{to{stroke-dashoffset:-42px}}@keyframes campus-destination-pulse{0%{opacity:.7;transform:scale(.55)}85%,to{opacity:0;transform:scale(1.55)}}@media (width<=560px){:where(.campus-map-board) .route-halo{stroke-width:21px}:where(.campus-map-board) .route-path{stroke-width:11px;stroke-dasharray:26 20}:where(.campus-map-board) .animated-campus-map:after{padding:6px 8px;font-size:6px;top:8px;left:8px}:where(.campus-map-board) .map-zoom-link.animated-campus-map>span{z-index:4}}@media (prefers-reduced-motion:reduce){:where(.campus-map-board) .route-path,:where(.campus-map-board) .destination-pulse{animation:none}:where(.campus-map-board) .route-traveller{display:none}}@media (width<=560px){.campus-map-board .directions-tape{display:none}.campus-map-board .map-open-label{padding:5px 7px;font-size:7px}}body{background:linear-gradient(#ffffff21,#ffffff21),url(/assets/bg-quan.jpg) 50%/cover no-repeat}@keyframes float-in{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:none}}.float-line{animation:.7s ease-out both float-in}@media (prefers-reduced-motion:reduce){.float-line,.directions-column{animation:none}}.invitation-page{--card-max:500px;--maps-max:500px;--columns-gap:clamp(20px, 2.5vw, 36px);place-items:start center;min-height:100svh;padding:24px;display:grid}.invitation{width:var(--card-max);max-width:100%;margin:0}.invitation-artwork{aspect-ratio:1240/2340;width:100%;height:auto;display:block}.invitation-script{fill:#000;stroke:#000;stroke-width:1.5px;stroke-linejoin:round;paint-order:stroke fill;font-family:Bachelorette,cursive;font-weight:400}.invitation-display{letter-spacing:-.035em;font-optical-sizing:none;font-variation-settings:"opsz" 10;fill:url(#invitation-green);font-family:Imbue,Times New Roman,serif;font-weight:420}.invitation-name{font-family:Imbue;font-weight:400}.invitation-address-number{font-synthesis:style;font-family:Imbue;font-size:1.15em;font-style:italic}.directions-column{width:min(100%, var(--card-max));min-width:0;margin-top:60px;animation:.7s ease-out 1.2s both float-in;container-type:inline-size}.directions{text-align:center;padding-bottom:8cqw}.directions-heading h2,.directions-heading p,.invitation-footer p{margin:0;font-weight:400}.gradient-text{color:#0000;background:linear-gradient(#7cce6b,#d8ffd0);-webkit-background-clip:text;background-clip:text;font-family:Imbue,serif}.directions-heading h2{letter-spacing:-.035em;font-size:8.3cqw;line-height:1.25}.script-text{color:#000;-webkit-text-stroke:.07cqw currentColor;paint-order:stroke fill;font-family:Bachelorette,cursive}.directions-heading p{z-index:1;font-size:5.9cqw;line-height:1.35;position:relative}.directions-maps{width:80%;margin:0 auto}.google-map{aspect-ratio:4/3;border:0;width:100%;min-height:260px;display:block}.invitation-footer{padding:1.8cqw 0 0}.farewell{letter-spacing:-.035em;font-size:7.1cqw;line-height:1.2}.contact-line{justify-content:center;align-items:baseline;gap:1cqw;font-size:4.6cqw;line-height:1.2;display:flex}.contact-phone{color:#000;align-items:center;min-height:44px;font-family:Imbue,serif;font-size:1.2em;text-decoration:none;display:inline-flex}.contact-phone:hover{text-underline-offset:4px;text-decoration:underline}.directions a:focus-visible{outline-offset:5px;outline:2px solid #10291b}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media screen and (width>=1024px){.invitation-page{grid-template-columns:minmax(0, var(--card-max)) 1px minmax(320px, 1fr);column-gap:var(--columns-gap);max-width:calc(48px + var(--card-max) + 1px + var(--maps-max) + var(--columns-gap) * 2);justify-content:center;justify-items:stretch;margin-inline:auto}.invitation-page:before{content:"";background:#fff;grid-area:1/2;align-self:center;height:85%}.invitation{grid-area:1/1}.directions-column{grid-area:1/3;width:100%;min-width:320px}.directions-maps{width:100%}}@media (width<=600px){.invitation-page{padding:0}.invitation{width:100%}}@media print{@page{size:A4 portrait;margin:0}.invitation-page{-webkit-print-color-adjust:exact;print-color-adjust:exact;min-height:auto;padding:0;display:block}.invitation{width:100%}.directions{break-before:page}}.creator-page{color:#edf5e9;background:linear-gradient(#18312238,#18312238),url(/assets/bg-quan.jpg) 50%/cover no-repeat;place-items:center;min-height:100svh;padding:40px 20px;font-family:system-ui,sans-serif;display:grid}.creator-panel{text-align:center;background:#142d24e8;border:1px solid #d8ffd036;border-radius:24px;width:min(100%,460px);padding:38px 32px 28px;box-shadow:0 24px 80px #10201835}.creator-eyebrow{color:#c8d9bf;letter-spacing:.16em;text-transform:uppercase;margin:0 0 16px;font-size:11px}.creator-panel h1,.creator-guest-name{color:#0000;background:linear-gradient(#7cce6b,#d8ffd0);-webkit-background-clip:text;background-clip:text;margin:0;font-family:Imbue,serif;font-weight:400;line-height:1.15}.creator-panel h1{font-size:clamp(40px,9vw,58px)}.creator-intro{color:#d0ddc9;margin:16px 0 24px;font-size:14px;line-height:1.65}.creator-panel input,.creator-panel button,.creator-secondary{min-height:48px;font:inherit;border:1px solid #d8ffd036;border-radius:10px}.creator-panel input{color:#f3faef;background:#0d211bb3;width:100%;padding:13px 15px}.creator-panel input::placeholder{color:#a1b39b}.creator-panel input[aria-invalid=true]{border-color:#ffc2af}.creator-panel input.creator-pin{letter-spacing:14px;text-align:center;width:190px;margin:0 auto 20px;padding-left:28px;font-size:26px;display:block}.creator-keypad{grid-template-columns:repeat(3,1fr);gap:10px;max-width:280px;margin:0 auto;display:grid}.creator-keypad button{color:#f3faef;cursor:pointer;background:#d8ffd00a;min-height:58px;font-size:23px}.creator-keypad .keypad-action{color:#d0ddc9;font-size:13px}.creator-keypad button:hover{background:#d8ffd020}.creator-keypad button:active{transform:translateY(1px)}.creator-panel :is(input,button,a):focus-visible{outline-offset:4px;outline:2px solid #b6eca7}.creator-feedback{color:#ffd0be;min-height:20px;margin:12px 0;font-size:12px;line-height:1.6}.creator-form{text-align:left}.creator-form label{margin-bottom:10px;font-size:13px;display:block}.creator-primary,.creator-secondary{cursor:pointer;justify-content:center;align-items:center;gap:8px;padding:12px 18px;text-decoration:none;display:inline-flex}.creator-panel .creator-primary{color:#152d20;background:linear-gradient(135deg,#7cce6b,#d8ffd0);border-color:#0000;font-size:14px;font-weight:600}.creator-primary:hover{filter:brightness(1.07)}.creator-form>button{width:100%}.creator-secondary{color:#edf5e9;background:0 0;font-size:14px}.creator-result{border-top:1px solid #d8ffd02e;margin-top:28px;padding-top:24px}.creator-result-label{color:#d0ddc9;margin:0 0 10px;font-size:12px}.creator-guest-name{overflow-wrap:anywhere;margin-bottom:18px;font-size:36px}.creator-result input{font-size:12px}.creator-result-actions{grid-template-columns:1fr 1fr;gap:10px;margin-top:12px;display:grid}.creator-copy-status{color:#c3efb6;min-height:20px;margin:12px 0 0;font-size:12px;line-height:1.6}.creator-home{color:#bed3b5;text-underline-offset:4px;align-items:center;min-height:44px;margin-top:18px;font-size:12px;display:inline-flex}@media (width<=400px){.creator-page{padding:20px 12px}.creator-panel{padding:28px 20px 20px}.creator-result-actions{grid-template-columns:1fr}}
