:root{--ink:#152420;--ink-soft:#3f4f49;--teal-deep:#1c3833;--teal-mid:#2c544c;--clay:#b04b30;--clay-deep:#8f3a24;--gold:#c1923f;--paper:#f2ead9;--paper-2:#fffcf5;--surface:#fff;--line:#dbcda9;--line-soft:#e8ddc2;--success:#3c6e52;--success-bg:#e6efe4;--danger:#a6402c;--danger-bg:#f6e6e0;--focus:#2c544c;--font-serif:"Fraunces",Georgia,serif;--font-sans:"Public Sans",-apple-system,BlinkMacSystemFont,sans-serif;--shadow-card:0 1px 2px rgba(21,36,32,.06),0 8px 24px -12px rgba(21,36,32,.18)}@media (prefers-color-scheme:dark){:root{--ink:#f2ead9;--ink-soft:#c9bfa4;--paper:#132320;--paper-2:#182b27;--surface:#1b2f2a;--line:#2d443d;--line-soft:#25382f;--success-bg:#1b332580;--danger-bg:#3a231d80}}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;min-height:100vh}@media (prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}a{color:inherit}button{font-family:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:4px}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{justify-content:space-between;padding:20px clamp(20px,5vw,56px);border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;z-index:100;background:var(--paper)}.brand,.topbar{display:flex;align-items:center}.brand{gap:10px;font-family:var(--font-serif);font-weight:600;font-size:1.25rem;letter-spacing:.01em}.brand-mark{width:30px;height:30px;flex:none}.login-hero{flex:1 1 46%;background:radial-gradient(circle at 15% 20%,rgba(193,146,63,.18),transparent 45%),var(--teal-deep);color:#f2ead9;display:flex;flex-direction:column;justify-content:space-between;padding:clamp(28px,5vw,64px);position:relative;overflow:hidden;min-height:340px}.tile-pattern{position:absolute;inset:0;opacity:.5;pointer-events:none}.login-hero-content{position:relative;z-index:1}.login-hero .eyebrow{font-size:.95rem;color:#d7c9a3;margin:0 0 18px}.login-hero h1{font-family:var(--font-serif);font-weight:600;font-size:clamp(1.9rem,3.4vw,2.7rem);line-height:1.15;margin:0 0 20px;max-width:15ch}.login-hero p{max-width:36ch;line-height:1.6;color:#e3dac0;margin:0}.login-hero-foot{position:relative;z-index:1;display:flex;gap:28px;flex-wrap:wrap;padding-top:28px;margin-top:28px;border-top:1px solid hsla(41,49%,90%,.2)}.foot-stat b{display:block;font-family:var(--font-serif);font-size:1.5rem;font-weight:600}.foot-stat span{font-size:.85rem;color:#cabf9d}.login-form-side{flex:1 1 54%;display:flex;align-items:center;justify-content:center;padding:clamp(24px,5vw,64px);background:var(--paper-2)}.form-card{width:100%;max-width:420px}.form-card h2{font-family:var(--font-serif);font-weight:600;font-size:1.6rem;margin:0 0 8px}.form-card .sub{color:var(--ink-soft);margin:0 0 32px;line-height:1.55}.field{margin-bottom:18px}.field label{display:block;font-size:.88rem;margin-bottom:7px;color:var(--ink-soft)}.field input,.field select{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);font-size:1rem;font-family:inherit}.field input:focus,.field select:focus{border-color:var(--teal-mid)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 22px;border-radius:8px;border:1px solid transparent;font-size:.98rem;font-weight:600;cursor:pointer;transition:transform .08s ease,background .15s ease;font-family:inherit}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--clay);color:#fdf6ea;width:100%}.btn-primary:hover{background:var(--clay-deep)}.btn-primary:disabled{background:var(--line);color:var(--ink-soft);cursor:not-allowed}.btn-ghost{background:transparent;border-color:var(--line);color:var(--ink);width:auto}.btn-ghost:hover{border-color:var(--ink-soft)}.btn-text{background:none;border:none;color:var(--clay-deep);font-weight:600;cursor:pointer;padding:0}.btn-text:hover{color:var(--clay)}.btn-edit-soft{background:#fffcf5!important;border:1.5px solid #2f5f8a!important;color:#1c3550!important;padding:6px 14px;border-radius:8px;font-weight:600;font-size:.88rem;cursor:pointer}.btn-edit-soft:hover{background:#2f5f8a!important;color:#fff!important}.btn-delete-soft{background:#fffcf5!important;border:1.5px solid #a6402c!important;color:#a6402c!important;padding:6px 14px;border-radius:8px;font-weight:600;font-size:.88rem;cursor:pointer}.btn-delete-soft:hover{background:#a6402c!important;color:#fff!important}.error-banner{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger);padding:11px 14px;border-radius:8px;font-size:.88rem;margin-bottom:18px}.center-shell{flex:1 1;display:flex;justify-content:center;padding:clamp(24px,5vw,56px) 20px;background:var(--paper)}.shell-inner{width:100%;max-width:640px}.res-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:clamp(20px,4vw,32px);box-shadow:var(--shadow-card);margin-bottom:28px}.res-card .prop{font-family:var(--font-serif);font-weight:600;font-size:1.4rem;margin:0 0 4px}.res-card .loc{color:var(--ink-soft);margin:0 0 20px;font-size:.95rem}.res-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));grid-gap:16px;gap:16px;padding-top:18px;border-top:1px solid var(--line-soft)}.res-grid div span{display:block;font-size:.78rem;color:var(--ink-soft);margin-bottom:4px}.res-grid div b{font-size:1.02rem;font-weight:600}h2.section-title{font-family:var(--font-serif);font-weight:600;font-size:1.5rem;margin:0 0 10px}p.section-sub{color:var(--ink-soft);line-height:1.6;margin:0 0 24px}.progress-row{display:flex;align-items:center;gap:10px;margin-bottom:26px}.progress-dot{width:9px;height:9px;border-radius:50%;background:var(--line)}.progress-dot.done{background:var(--teal-mid)}.progress-dot.current{background:var(--clay);width:22px;border-radius:5px}.progress-label{font-size:.85rem;color:var(--ink-soft);margin-left:6px}.guest-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:clamp(20px,4vw,32px);box-shadow:var(--shadow-card)}.guest-card h3{font-family:var(--font-serif);font-weight:600;font-size:1.3rem;margin:0 0 22px}.field-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}@media (max-width:520px){.field-row{grid-template-columns:1fr}}.sig-wrap{margin-top:8px}.sig-box{border:1px solid var(--line);border-radius:8px;background:var(--paper-2);touch-action:none;width:100%;height:150px;display:block;cursor:crosshair}.sig-controls{display:flex;justify-content:space-between;align-items:center;margin-top:8px}.sig-controls span{font-size:.8rem;color:var(--ink-soft)}.consent-row{display:flex;gap:10px;align-items:flex-start;margin:22px 0;font-size:.9rem;line-height:1.5;color:var(--ink-soft)}.consent-row input{margin-top:3px}.step-actions{display:flex;justify-content:space-between;margin-top:26px;gap:12px}.step-actions .btn-primary{flex:1 1}.done-wrap{flex:1 1;flex-direction:column;text-align:center;padding:48px 20px}.done-icon,.done-wrap{display:flex;align-items:center;justify-content:center}.done-icon{width:64px;height:64px;border-radius:50%;background:var(--success-bg);color:var(--success);margin-bottom:22px}.done-wrap h2{font-family:var(--font-serif);font-weight:600;font-size:1.8rem;margin:0 0 12px}.done-wrap p{color:var(--ink-soft);max-width:44ch;line-height:1.6;margin:0 0 28px}.done-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.done-actions .btn{width:auto}.admin-wrap{flex:1 1;padding:clamp(24px,5vw,56px)}.admin-head{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:16px;margin-bottom:26px}.admin-table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--line);border-radius:12px;overflow:hidden}.admin-table td,.admin-table th{text-align:left;padding:13px 16px;border-bottom:1px solid var(--line-soft);font-size:.92rem}.admin-table th{color:var(--ink-soft);font-weight:600;font-size:.82rem;background:var(--paper-2)}.admin-table tr:last-child td{border-bottom:none}.badge{display:inline-block;padding:3px 10px;border-radius:20px;font-size:.78rem;background:var(--success-bg);color:var(--success)}.empty-state{text-align:center;padding:60px 20px;color:var(--ink-soft);border:1px dashed var(--line);border-radius:12px;background:var(--paper-2)}.empty-state strong{display:block;color:var(--ink);font-family:var(--font-serif);font-size:1.2rem;margin-bottom:8px}.admin-login{max-width:360px;margin:80px auto;padding:0 20px}footer.site-foot{text-align:center;padding:22px;font-size:.82rem;color:var(--ink-soft);border-top:1px solid var(--line)}.table-action-btn{background:#fff!important;border:1px solid #c7bda0!important;color:#152420!important;padding:5px 11px;border-radius:6px;font-size:.84rem;cursor:pointer;font-weight:600}.table-action-btn:hover{background:#f2ead9!important}.table-action-btn.danger{color:#a6402c!important;border-color:#e0b3a5!important}.badge-fixed{display:inline-block;padding:3px 10px;border-radius:20px;font-size:.78rem;background:#2c544c!important;color:#fff!important;font-weight:600}.modal-frame{position:relative}.modal-frame-close{position:absolute;top:10px;right:10px;width:30px;height:30px;border-radius:50%;background:#152420!important;color:#fff!important;border:none;cursor:pointer;font-size:1rem;z-index:2}.modal-frame-close.photo{top:-14px;right:-14px;background:#152420!important}.admin-modal-overlay{position:fixed;inset:0;background:rgba(10,18,16,.55);z-index:200;display:flex;align-items:center;justify-content:center;padding:20px}.admin-modal-box{position:relative;background:var(--paper-2);border:1px solid var(--line);border-radius:14px;padding:28px;width:100%;max-height:85vh;box-shadow:0 20px 60px rgba(0,0,0,.3);display:flex;flex-direction:column}.admin-modal-scroll{overflow-y:auto;padding-right:4px}.portal-nav{display:flex;gap:6px;flex:1 1;justify-content:center}.nav-link{background:none;border:none;color:var(--ink-soft);font-size:.94rem;font-weight:600;padding:8px 14px;border-radius:8px;cursor:pointer}.nav-link.active,.nav-link:hover{color:var(--ink);background:var(--paper-2)}.topbar-actions{display:flex;align-items:center;gap:16px}.lang-select{background:hsla(41,49%,90%,.1);color:#f2ead9;border:1px solid hsla(41,49%,90%,.3);border-radius:8px;padding:6px 10px;font-size:.88rem;cursor:pointer}.lang-select option{color:#152420}@media (max-width:720px){.topbar{flex-wrap:wrap;gap:12px}.portal-nav{order:3;width:100%;justify-content:flex-start}}.gallery{display:grid;grid-template-columns:1.6fr 1fr;grid-template-rows:1fr 1fr;grid-gap:8px;gap:8px;height:280px;margin-bottom:24px;border-radius:12px;overflow:hidden}.gallery-img{width:100%;height:100%;object-fit:cover;grid-row:span 2}.gallery-img:not(.main){grid-row:span 1}@media (max-width:560px){.gallery{grid-template-columns:1fr;grid-template-rows:auto;height:auto}.gallery-img{height:180px;grid-row:auto}}.prop-title{font-family:var(--font-serif);font-weight:600;font-size:clamp(1.5rem,3vw,2rem);margin:0 0 4px}.prop-loc{color:var(--ink-soft);margin:0 0 18px}.welcome-msg{background:var(--paper-2);border:1px solid var(--line);border-radius:10px;padding:16px 18px;line-height:1.6;margin:0 0 20px;white-space:pre-line}.checkin-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:var(--clay);color:#fdf6ea;border-radius:12px;padding:18px 22px;margin-bottom:24px}.checkin-banner.done{background:var(--success);color:#fff}.checkin-banner .banner-title{font-weight:700;margin:0 0 4px;font-size:1.02rem}.checkin-banner .banner-body{margin:0;font-size:.9rem;opacity:.92}.checkin-banner.done .banner-body{opacity:1}.extras-list{display:flex;flex-wrap:wrap;gap:8px}.extra-chip{background:var(--paper-2);border:1px solid var(--line);border-radius:20px;padding:6px 12px;font-size:.85rem;color:var(--ink)}.guest-list{margin:0;padding-left:18px;color:var(--ink-soft);line-height:1.9}.guest-list li{color:var(--ink)}.today-strip{margin-bottom:6px}.today-strip,.weather-strip{display:flex;gap:18px;flex-wrap:wrap;font-size:.85rem;color:var(--ink-soft)}.weather-strip{margin-bottom:14px}.access-code-card{background:var(--teal-deep);border-color:var(--teal-deep)}.access-code-card .prop,.access-code-card p{color:#f2ead9}.access-code-value{font-family:var(--font-serif);font-size:2rem;font-weight:600;letter-spacing:.05em;color:#fff;background:hsla(41,49%,90%,.12);border-radius:10px;padding:10px 18px;display:inline-block;margin:6px 0 0}.inline-form-row{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end}.inline-form-row .field{min-width:140px;margin-bottom:0}.explore-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:16px;gap:16px}.explore-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:20px;box-shadow:var(--shadow-card)}.explore-tag{display:inline-block;font-size:.75rem;font-weight:600;color:var(--teal-mid);background:var(--paper-2);border-radius:20px;padding:3px 10px;margin-bottom:10px}.explore-tag.partner{color:var(--clay)}.explore-name{font-family:var(--font-serif);font-weight:600;font-size:1.1rem;margin:0 0 6px}.explore-name-link{display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:var(--ink)}.explore-name-link:hover{color:var(--teal-mid)}.explore-name-icon{font-size:.85rem}.explore-blurb{color:var(--ink-soft);font-size:.92rem;line-height:1.5;margin:0}.topbar-dark{background:var(--teal-deep);border-bottom:none;position:-webkit-sticky;position:sticky;top:0;z-index:100}.topbar-dark .brand{color:#f2ead9}.topbar-dark .brand-mark{width:36px;height:auto;object-fit:contain}.topbar-dark .nav-link{color:#cfe0da}.topbar-dark .nav-link.active,.topbar-dark .nav-link:hover{color:#fff;background:hsla(41,49%,90%,.12)}.btn-text-dark{color:#cfe0da}.btn-text-dark:hover{color:#fff}.gallery-viewer{position:relative;width:100%;height:400px;border-radius:12px;overflow:hidden;margin-bottom:24px;background:#0e1b18}.gallery-main-img{width:100%;height:100%;object-fit:cover;object-position:center center;cursor:zoom-in;display:block}.gallery-arrow{position:absolute;top:50%;transform:translateY(-50%);background:rgba(21,36,32,.55);color:#fff;border:none;width:36px;height:36px;border-radius:50%;font-size:1.4rem;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1}.gallery-arrow.left{left:12px}.gallery-arrow.right{right:12px}.gallery-arrow:hover{background:rgba(21,36,32,.8)}.gallery-counter{left:12px;font-size:.8rem;padding:3px 10px;border-radius:20px}.gallery-counter,.gallery-expand{position:absolute;bottom:12px;background:rgba(21,36,32,.6);color:#fff}.gallery-expand{right:12px;border:none;width:32px;height:32px;border-radius:8px;cursor:pointer;font-size:1rem}.gallery-modal{position:fixed;inset:0;background:rgba(10,18,16,.92);z-index:1000;display:flex;align-items:center;justify-content:center}.gallery-modal-img{max-width:90vw;max-height:85vh;object-fit:contain;border-radius:6px}.gallery-arrow.modal{width:48px;height:48px;font-size:1.8rem}.gallery-counter.modal{bottom:24px;left:50%;transform:translateX(-50%)}.gallery-close{position:absolute;top:20px;right:24px;background:none;border:none;color:#fff;font-size:1.6rem;cursor:pointer}@media (max-width:560px){.gallery-viewer{height:220px}}.faq-list{display:flex;flex-direction:column;gap:10px}.faq-item{background:var(--surface);border:1px solid var(--line);border-radius:10px;overflow:hidden}.faq-question{width:100%;text-align:left;background:none;border:none;padding:16px 18px;font-size:.98rem;font-weight:600;color:var(--ink);cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:12px}.faq-icon{color:var(--clay);font-size:1.2rem}.faq-answer{padding:0 18px 18px;margin:0;color:var(--ink-soft);line-height:1.6}.maps-btn{width:auto;text-decoration:none;display:inline-flex;align-items:center;gap:7px}.maps-icon{width:17px;height:17px;flex:none}.partner-card{display:flex;flex-direction:column}.partner-photos{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:2px;gap:2px;margin:-20px -20px 16px;border-radius:12px 12px 0 0;overflow:hidden}.partner-photos img{width:100%;aspect-ratio:1;object-fit:cover;object-position:center;display:block}@media (max-width:560px){.partner-photos{grid-template-columns:repeat(2,1fr)}}.partner-name{font-size:1.3rem}.partner-code-box{margin-top:14px;background:var(--paper-2);border:1px solid var(--line);border-radius:10px;padding:12px 14px}.partner-code{margin:0 0 6px;font-size:.95rem;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.partner-code-value{font-size:1.2rem;letter-spacing:.04em;color:var(--clay);background:var(--surface);border:1.5px solid var(--clay);border-radius:8px;padding:4px 12px}.partner-code-howto{margin:0;font-size:.85rem;color:var(--ink-soft);line-height:1.5}.contacts-list,.rules-list{margin:0;padding-left:20px;color:var(--ink-soft);line-height:1.9}.contacts-list{padding-left:0;list-style:none}.contacts-list li{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--line-soft)}.contacts-list li:last-child{border-bottom:none}.contacts-list a{color:var(--teal-mid);font-weight:600;text-decoration:none}.doc-preview{margin-top:10px}.doc-preview img{width:100%;max-width:360px;border-radius:8px;border:1px solid var(--line);display:block;margin-bottom:8px}.camera-capture{margin-top:4px}.camera-viewport{position:relative;width:100%;max-width:420px;aspect-ratio:4/3;background:#000;border-radius:10px;overflow:hidden}.camera-viewport video{width:100%;height:100%;object-fit:cover;display:block}.camera-guide{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:78%;aspect-ratio:1.586;border:2.5px dashed hsla(0,0%,100%,.85);border-radius:10px;box-shadow:0 0 0 999px rgba(0,0,0,.35)}.camera-hint{position:absolute;bottom:10px;left:0;right:0;text-align:center;color:#fff;font-size:.82rem;margin:0;text-shadow:0 1px 3px rgba(0,0,0,.6)}.camera-controls{display:flex;gap:10px;margin-top:10px;max-width:420px}.review-list{display:flex;flex-direction:column;gap:10px}.review-item{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 14px}.review-thumb{width:56px;height:56px;object-fit:cover;border-radius:8px;flex:none}.review-thumb-placeholder{display:flex;align-items:center;justify-content:center;background:var(--paper-2);border:1px solid var(--line);font-size:1.3rem}.review-info{flex:1 1;min-width:0}.review-name{margin:0;font-weight:600}.review-label{font-size:.8rem;color:var(--ink-soft)}