:root{--ink: #0B1B2B;--ink-2: #1A2D44;--paper: #F5F1E8;--paper-2: #ECE5D5;--paper-3: #E0D6C0;--navy: #1E3A5F;--navy-2: #2C4F7C;--slate: #5B8DB8;--slate-2: #8AAFD0;--line: #C7BFAB;--line-2: #A89F88;--gold: #C9A961;--gold-2: #B8932F;--rust: #B5532A;--moss: #6B8E5A;--shadow: 0 1px 0 rgba(11, 27, 43, .06), 0 8px 24px rgba(11, 27, 43, .08);--shadow-lg: 0 2px 0 rgba(11, 27, 43, .04), 0 24px 60px rgba(11, 27, 43, .18);--radius: 4px;--nav-h: 68px}*{box-sizing:border-box}html,body{margin:0;padding:0;font-family:Inter,system-ui,sans-serif;background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased}body{overflow-x:hidden}a{color:inherit;text-decoration:none}button{font-family:inherit}.topnav{position:sticky;top:0;z-index:50;background:#f5f1e8eb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line);height:var(--nav-h);display:flex;align-items:center;padding:0 32px;gap:32px;font-size:14px}.brand{display:flex;align-items:center;gap:12px;font-family:Fraunces,serif;font-weight:600;font-size:19px;letter-spacing:-.01em;color:var(--navy);flex-shrink:0}.brand-mark{width:32px;height:32px;background:var(--navy);color:var(--paper);display:grid;place-items:center;border-radius:6px;font-family:Fraunces,serif;font-size:18px;font-weight:700;font-style:italic}.brand-sub{font-family:Inter,sans-serif;font-weight:400;font-size:11px;color:var(--ink-2);opacity:.6;letter-spacing:.08em;text-transform:uppercase;margin-top:2px}.brand-stack{display:flex;flex-direction:column;line-height:1}.nav-links{display:flex;align-items:center;gap:4px;flex:1}.nav-link{padding:8px 14px;border-radius:999px;color:var(--ink-2);font-weight:500;cursor:pointer;transition:all .15s;position:relative;white-space:nowrap;border:none;background:transparent;font-size:inherit}.nav-link:hover{background:#1e3a5f0f;color:var(--navy)}.nav-link.active{background:var(--navy);color:var(--paper)}.nav-link .count{display:inline-block;margin-left:6px;font-size:11px;opacity:.5;font-variant-numeric:tabular-nums}.nav-right{display:flex;align-items:center;gap:12px;margin-left:auto;flex-shrink:0}.nav-search{display:flex;align-items:center;gap:8px;padding:7px 12px;background:#fff9;border:1px solid var(--line);border-radius:999px;font-size:13px;color:var(--ink-2);cursor:text;min-width:200px}.nav-search input{border:none;background:transparent;outline:none;font:inherit;color:inherit;flex:1;min-width:0}.nav-btn{padding:8px 14px;background:var(--navy);color:var(--paper);border:none;border-radius:999px;font-weight:500;cursor:pointer;font-size:13px;display:flex;align-items:center;gap:6px;transition:background .15s}.nav-btn:hover{background:var(--ink)}.hero{position:relative;height:calc(100vh - var(--nav-h));min-height:640px;background:var(--paper-2);overflow:hidden}.hero-info{position:absolute;z-index:1000;top:32px;left:32px;right:32px;display:flex;justify-content:space-between;align-items:flex-start;gap:24px;pointer-events:none}.hero-info>*{pointer-events:auto}.hero-title{background:#f5f1e8db;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:12px;padding:22px 28px;max-width:460px;box-shadow:var(--shadow)}.hero-eyebrow{font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-2);margin-bottom:8px;display:flex;align-items:center;gap:8px}.hero-eyebrow:before{content:"";width:18px;height:1px;background:var(--gold-2)}.hero-h1{font-family:Fraunces,serif;font-weight:500;font-size:clamp(28px,3.4vw,44px);line-height:1.05;letter-spacing:-.02em;color:var(--navy);margin:0 0 10px}.hero-h1 em{font-style:italic;font-weight:400;color:var(--gold-2)}.hero-sub{font-size:14px;line-height:1.55;color:var(--ink-2);margin:0;opacity:.85}.hero-meta{display:flex;flex-direction:column;align-items:flex-end;gap:12px}.hero-pill{display:inline-flex;align-items:center;gap:8px;background:#f5f1e8db;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:999px;padding:7px 14px;font-size:12px;font-weight:500;color:var(--ink-2);box-shadow:var(--shadow)}.hero-pill .dot{width:7px;height:7px;border-radius:50%;background:var(--moss);animation:pulse 2s infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.3)}}.hero-stat{background:#f5f1e8db;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:12px;padding:14px 18px;text-align:right;min-width:200px;box-shadow:var(--shadow)}.hero-stat-row{display:flex;justify-content:space-between;gap:16px;font-size:12px}.hero-stat-row+.hero-stat-row{margin-top:6px;padding-top:6px;border-top:1px dashed var(--line)}.hero-stat-label{color:var(--ink-2);opacity:.65}.hero-stat-val{font-weight:600;color:var(--navy);font-variant-numeric:tabular-nums}.map-canvas{position:absolute;top:0;right:0;bottom:0;left:0}.leaflet-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background:#2a3b2d}.leaflet-pin-icon{background:transparent!important;border:none!important}.leaflet-pin{width:34px;height:42px;display:grid;place-items:center;cursor:pointer}.leaflet-pin .pin{filter:drop-shadow(0 3px 6px rgba(0,0,0,.5));transition:transform .2s cubic-bezier(.34,1.56,.64,1);transform-origin:center bottom}.leaflet-pin:hover .pin{transform:scale(1.18) translateY(-3px)}.leaflet-pin .pin-base{fill:#f5f1e8;stroke:#0b1b2b;stroke-width:1.5}.leaflet-pin .pin-pulse{fill:currentColor;opacity:.35}.leaflet-pin .pin-cafe{color:#b5532a}.leaflet-pin .pin-public{color:#1e3a5f}.leaflet-pin .pin-landmark{color:#c9a961}.leaflet-pin .pin-hotel{color:#6b8e5a}.leaflet-pin .pin-school{color:#8b4a88}.leaflet-pin .pin-pulse{animation:pinpulse 2.4s infinite;transform-origin:center;transform-box:fill-box}.leaflet-bar{border:1px solid var(--line)!important;box-shadow:var(--shadow)!important}.leaflet-bar a{background:#f5f1e8f2!important;color:var(--ink)!important;border-bottom-color:var(--line)!important}.leaflet-bar a:hover{background:var(--paper)!important}.leaflet-control-attribution{background:#f5f1e8d9!important;font-size:10px!important;color:var(--ink-2)!important}.pin{cursor:pointer;transition:transform .25s cubic-bezier(.34,1.56,.64,1);transform-origin:center bottom;transform-box:fill-box;filter:drop-shadow(0 2px 4px rgba(11,27,43,.18))}.pin:hover{transform:scale(1.18) translateY(-4px)}.pin-base{fill:var(--paper);stroke:var(--ink);stroke-width:1.5}.pin-cafe{color:#b5532a}.pin-public{color:#1e3a5f}.pin-landmark{color:#c9a961}.pin-hotel{color:#6b8e5a}.pin-school{color:#8b4a88}.pin-glow{fill:currentColor;opacity:0;transition:opacity .3s}.pin:hover .pin-glow{opacity:.18}.pin-pulse{animation:pinpulse 2.4s infinite;fill:currentColor;opacity:.35;transform-origin:center;transform-box:fill-box}@keyframes pinpulse{0%{transform:scale(1);opacity:.35}80%,to{transform:scale(2.6);opacity:0}}.pin-shadow{fill:#0b1b2b40;opacity:0;transition:opacity .3s}.pin-card{position:absolute;z-index:1000;background:var(--paper);border:1px solid var(--ink);border-radius:8px;padding:14px 16px;min-width:240px;box-shadow:var(--shadow-lg);pointer-events:none;transform:translate(-50%,calc(-100% - 16px));animation:cardIn .18s ease}@keyframes cardIn{0%{opacity:0;transform:translate(-50%,calc(-100% - 8px))}to{opacity:1;transform:translate(-50%,calc(-100% - 16px))}}.pin-card:after{content:"";position:absolute;bottom:-7px;left:50%;transform:translate(-50%) rotate(45deg);width:12px;height:12px;background:var(--paper);border-right:1px solid var(--ink);border-bottom:1px solid var(--ink)}.pin-card-cat{font-size:10px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;margin-bottom:4px}.pin-card-name{font-family:Fraunces,serif;font-size:18px;font-weight:500;color:var(--navy);margin-bottom:4px;line-height:1.15}.pin-card-meta{font-size:12px;color:var(--ink-2);opacity:.75;margin-bottom:8px}.pin-card-cta{font-size:11px;color:var(--gold-2);font-weight:600;letter-spacing:.1em;text-transform:uppercase;display:flex;align-items:center;gap:6px}.map-legend{position:absolute;z-index:1000;bottom:28px;left:32px;background:#f5f1e8eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:12px;padding:14px 16px;box-shadow:var(--shadow);font-size:12px}.map-legend-title{font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2);opacity:.6;margin-bottom:10px}.legend-row{display:flex;align-items:center;gap:10px;padding:5px 8px;border-radius:6px;cursor:pointer;transition:background .15s;-webkit-user-select:none;user-select:none}.legend-row:hover{background:#1e3a5f0f}.legend-row.off{opacity:.4}.legend-swatch{width:18px;height:22px;flex-shrink:0;display:grid;place-items:center}.legend-label{flex:1;color:var(--ink);font-weight:500}.legend-count{color:var(--ink-2);opacity:.55;font-variant-numeric:tabular-nums;font-size:11px}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;background:#0b1b2b73;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:grid;place-items:center;padding:24px;animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.dialog-card{width:100%;max-width:420px;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:22px 24px 24px;box-shadow:var(--shadow-lg);animation:dialogIn .18s cubic-bezier(.34,1.56,.64,1)}@keyframes dialogIn{0%{transform:translateY(8px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px}.dialog-coords{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--ink-2);opacity:.65;margin-top:4px;font-variant-numeric:tabular-nums}.dialog-close{width:28px;height:28px;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--ink-2);font-size:18px;line-height:1;cursor:pointer;display:grid;place-items:center;flex-shrink:0}.dialog-close:hover{background:var(--paper-2);color:var(--ink)}.long-press-hint{position:absolute;z-index:1000;bottom:28px;left:50%;transform:translate(-50%);background:#0b1b2bd9;color:var(--paper);font-size:12px;font-weight:500;letter-spacing:.04em;padding:8px 14px;border-radius:999px;pointer-events:none;box-shadow:var(--shadow)}.panel-toggle{position:absolute;z-index:1001;top:32px;right:32px;width:40px;height:40px;border-radius:999px;border:1px solid var(--line);background:#f5f1e8eb;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--ink);cursor:pointer;display:grid;place-items:center;box-shadow:var(--shadow);transition:background .15s,color .15s}.panel-toggle:hover{background:var(--paper);color:var(--navy)}.panel-toggle.active{background:var(--navy);color:var(--paper);border-color:var(--navy)}.module-page{min-height:calc(100vh - var(--nav-h));padding:0;background:var(--paper)}.module-hero{position:relative;height:320px;background:var(--navy);overflow:hidden;display:flex;align-items:flex-end;padding:32px 48px;color:var(--paper)}.module-hero-bg{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.25;background-image:linear-gradient(135deg,transparent 49.5%,var(--paper) 49.5%,var(--paper) 50.5%,transparent 50.5%);background-size:24px 24px}.module-hero-content{position:relative;max-width:1200px;width:100%;margin:0 auto}.module-back{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;letter-spacing:.06em;color:#f5f1e8b3;margin-bottom:16px;cursor:pointer;background:none;border:none;padding:0;transition:color .15s}.module-back:hover{color:var(--paper)}.module-cat{font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin-bottom:8px}.module-title{font-family:Fraunces,serif;font-weight:400;font-size:clamp(36px,4.5vw,56px);line-height:1;letter-spacing:-.02em;margin:0 0 12px}.module-title em{font-style:italic;color:var(--gold)}.module-tagline{font-size:15px;line-height:1.5;opacity:.85;max-width:640px;margin:0}.module-body{max-width:1200px;margin:0 auto;padding:56px 48px 96px;display:grid;grid-template-columns:1fr 360px;gap:48px}.module-body.single{grid-template-columns:1fr;max-width:880px}.module-section+.module-section{margin-top:56px}.section-label{font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-2);opacity:.6;margin-bottom:14px;display:flex;align-items:center;gap:10px}.section-label:after{content:"";flex:1;height:1px;background:var(--line)}.section-title{font-family:Fraunces,serif;font-size:28px;font-weight:500;color:var(--navy);margin:0 0 18px;letter-spacing:-.01em}.cafe-tables{display:grid;grid-template-columns:280px 1fr;gap:24px;background:var(--paper-2);border:1px solid var(--line);border-radius:10px;padding:24px}.cafe-floorplan{background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:16px;position:relative;height:320px}.cafe-floorplan-svg{width:100%;height:100%}.cafe-table{cursor:pointer;transition:transform .15s}.cafe-table:hover{transform:scale(1.05);transform-origin:center;transform-box:fill-box}.cafe-table.taken{cursor:not-allowed}.cafe-table.selected .table-circle{fill:var(--gold);stroke:var(--ink)}.table-circle{fill:var(--paper-3);stroke:var(--ink-2);stroke-width:1.5;transition:fill .15s}.cafe-table.taken .table-circle{fill:#c8b8b0;opacity:.6}.table-num{font-size:9px;font-weight:700;fill:var(--ink);text-anchor:middle;dominant-baseline:central;pointer-events:none}.cafe-booking-form{display:flex;flex-direction:column;gap:12px}.field-label{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);opacity:.7;margin-bottom:6px}.field-input,.field-select{width:100%;padding:10px 12px;background:var(--paper);border:1px solid var(--line);border-radius:6px;font:inherit;font-size:14px;color:var(--ink);outline:none;transition:border-color .15s}.field-input:focus,.field-select:focus{border-color:var(--navy)}.time-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.time-chip{padding:8px 4px;background:var(--paper);border:1px solid var(--line);border-radius:4px;font-size:12px;font-weight:500;color:var(--ink);cursor:pointer;text-align:center;font-variant-numeric:tabular-nums;transition:all .12s}.time-chip:hover{border-color:var(--navy)}.time-chip.selected{background:var(--navy);color:var(--paper);border-color:var(--navy)}.time-chip.disabled{opacity:.35;cursor:not-allowed;text-decoration:line-through}.btn-primary{width:100%;padding:14px;background:var(--navy);color:var(--paper);border:none;border-radius:6px;font-weight:600;font-size:14px;letter-spacing:.04em;cursor:pointer;transition:background .15s;margin-top:6px}.btn-primary:hover:not(:disabled){background:var(--ink)}.btn-primary:disabled{background:var(--line-2);cursor:not-allowed}.menu-list{border-top:1px solid var(--line)}.menu-item{display:grid;grid-template-columns:1fr auto;gap:16px;padding:16px 0;border-bottom:1px solid var(--line);align-items:baseline}.menu-item-name{font-family:Fraunces,serif;font-size:17px;font-weight:500;color:var(--ink);margin-bottom:2px}.menu-item-desc{font-size:12px;color:var(--ink-2);opacity:.7;line-height:1.45}.menu-item-price{font-family:Fraunces,serif;font-size:17px;font-weight:500;color:var(--gold-2);font-variant-numeric:tabular-nums;white-space:nowrap}.menu-cat-title{font-family:Fraunces,serif;font-size:13px;font-weight:600;font-style:italic;color:var(--navy);letter-spacing:.04em;margin:24px 0 8px;text-transform:lowercase}.menu-cat-title:first-child{margin-top:0}.info-card{background:var(--paper-2);border:1px solid var(--line);border-radius:10px;padding:22px;position:sticky;top:calc(var(--nav-h) + 24px)}.info-row{display:grid;grid-template-columns:24px 1fr;gap:12px;padding:12px 0;border-bottom:1px dashed var(--line);font-size:13px;align-items:flex-start}.info-row:last-child{border-bottom:none}.info-icon{width:24px;height:24px;display:grid;place-items:center;color:var(--navy)}.info-row-label{font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);opacity:.6;margin-bottom:2px}.info-row-val{color:var(--ink);line-height:1.45}.hours-table{width:100%;font-size:12px}.hours-table tr td{padding:4px 0;vertical-align:top}.hours-table tr td:first-child{color:var(--ink-2);opacity:.7;padding-right:12px}.hours-table tr td:last-child{font-variant-numeric:tabular-nums;text-align:right}.hours-table tr.today td{color:var(--navy);font-weight:600;opacity:1}.gallery{display:grid;grid-template-columns:2fr 1fr 1fr;grid-template-rows:1fr 1fr;gap:8px;height:360px;margin-bottom:32px}.gallery-img{background:var(--paper-2);border:1px solid var(--line);border-radius:6px;overflow:hidden;position:relative;background-image:repeating-linear-gradient(45deg,transparent 0 8px,rgba(11,27,43,.04) 8px 9px);display:grid;place-items:center;font-family:JetBrains Mono,monospace;font-size:11px;color:var(--ink-2);opacity:.6;letter-spacing:.04em}.gallery-img:nth-child(1){grid-row:span 2}.facts-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-bottom:32px}.fact{background:var(--paper);padding:22px}.fact-num{font-family:Fraunces,serif;font-size:32px;font-weight:500;color:var(--navy);letter-spacing:-.02em;line-height:1;margin-bottom:6px;font-variant-numeric:tabular-nums}.fact-num em{font-style:italic;color:var(--gold-2);font-weight:400}.fact-label{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);opacity:.65}.prose p{font-size:15px;line-height:1.7;color:var(--ink);margin:0 0 16px}.prose p:first-of-type:first-line{font-weight:500}.prose-lead{font-family:Fraunces,serif;font-size:22px!important;line-height:1.4!important;font-weight:400!important;color:var(--ink-2)!important;margin-bottom:24px!important;letter-spacing:-.005em}.rooms-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.room-card{background:var(--paper-2);border:1px solid var(--line);border-radius:10px;padding:20px;cursor:pointer;transition:border-color .15s;display:flex;flex-direction:column;gap:12px}.room-card:hover{border-color:var(--navy)}.room-img{height:140px;background:var(--paper-3);border-radius:6px;background-image:repeating-linear-gradient(45deg,transparent 0 8px,rgba(11,27,43,.05) 8px 9px);display:grid;place-items:center;font-family:JetBrains Mono,monospace;font-size:10px;color:var(--ink-2);opacity:.7}.room-name{font-family:Fraunces,serif;font-size:18px;font-weight:500;color:var(--navy)}.room-meta{display:flex;gap:14px;font-size:11px;color:var(--ink-2);font-weight:500;letter-spacing:.04em;text-transform:uppercase;opacity:.7}.room-meta span{display:flex;align-items:center;gap:4px}.room-price{display:flex;justify-content:space-between;align-items:baseline;margin-top:auto;padding-top:12px;border-top:1px dashed var(--line)}.room-price-num{font-family:Fraunces,serif;font-size:22px;font-weight:500;color:var(--gold-2);font-variant-numeric:tabular-nums}.room-price-unit{font-size:11px;color:var(--ink-2);opacity:.65}.admin-container{max-width:1200px;margin:0 auto;padding:48px}.admin-h{font-family:Fraunces,serif;font-size:36px;font-weight:500;letter-spacing:-.02em;color:var(--navy);margin:0 0 6px}.admin-sub{font-size:14px;color:var(--ink-2);opacity:.7;margin:0 0 32px}.admin-grid{display:grid;grid-template-columns:380px 1fr;gap:32px}.admin-card{background:var(--paper-2);border:1px solid var(--line);border-radius:10px;padding:24px}.admin-list{background:var(--paper);border:1px solid var(--line);border-radius:10px;overflow:hidden}.admin-row{display:grid;grid-template-columns:28px 1fr auto auto;gap:16px;padding:14px 20px;align-items:center;border-bottom:1px solid var(--line);cursor:pointer;transition:background .12s}.admin-row:last-child{border-bottom:none}.admin-row:hover{background:var(--paper-2)}.admin-row.head{background:var(--paper-2);cursor:default;font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);opacity:.65}.admin-row .swatch{width:22px;height:26px}.admin-row .row-name{font-weight:500;color:var(--ink)}.admin-row .row-cat{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);opacity:.7}.admin-row .row-status{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:500}.admin-row .row-status:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--moss)}.admin-row .row-status.draft:before{background:var(--gold-2)}.row-action{padding:6px 12px;background:transparent;border:1px solid var(--line);border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.04em;color:var(--navy);cursor:pointer;transition:all .12s;white-space:nowrap}.row-action:hover{background:var(--navy);color:var(--paper);border-color:var(--navy)}.row-action.danger{color:var(--rust);border-color:#b5532a66}.row-action.danger:hover{background:var(--rust);color:var(--paper);border-color:var(--rust)}.cat-picker{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:14px}.cat-chip{padding:10px 6px;background:var(--paper);border:1px solid var(--line);border-radius:6px;font-size:11px;font-weight:500;color:var(--ink);cursor:pointer;text-align:center;letter-spacing:.04em;display:flex;flex-direction:column;align-items:center;gap:4px;transition:all .12s}.cat-chip:hover{border-color:var(--navy)}.cat-chip.selected{background:var(--navy);color:var(--paper);border-color:var(--navy)}.cat-chip.selected svg .pin-base{stroke:var(--paper)}.edit-grid{display:grid;grid-template-columns:380px 1fr;gap:32px;align-items:start}.edit-grid .admin-card{position:relative}@media (max-width: 900px){.edit-grid{grid-template-columns:1fr}}.login-shell{min-height:calc(100vh - var(--nav-h));display:grid;place-items:center;padding:32px}.login-card{width:100%;max-width:360px;background:var(--paper-2);border:1px solid var(--line);border-radius:10px;padding:28px}.login-card h1{font-family:Fraunces,serif;font-size:24px;font-weight:500;color:var(--navy);margin:0 0 18px}.login-error{font-size:12px;color:var(--rust);margin-top:10px}.foot{border-top:1px solid var(--line);padding:32px 48px;text-align:center;font-size:12px;color:var(--ink-2);opacity:.7;letter-spacing:.04em}.module-page-extras{background:var(--paper);border-top:1px solid var(--line);padding:32px 48px 64px}.module-page-extras-inner{max-width:1200px;margin:0 auto}.social-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px;background:var(--paper-2);border:1px solid var(--line);border-radius:10px;margin-bottom:24px;flex-wrap:wrap}.social-stats{display:flex;gap:18px;font-size:13px;color:var(--ink-2)}.social-stat{display:inline-flex;align-items:center;gap:6px;color:var(--gold-2)}.social-actions{display:flex;gap:8px}.social-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--line-2);background:var(--paper);border-radius:999px;font-size:13px;font-weight:500;color:var(--ink);cursor:pointer;text-decoration:none;transition:background .12s,border-color .12s,color .12s}.social-btn:hover{border-color:var(--ink-2)}.social-btn:disabled{opacity:.6;cursor:default}.social-btn.active{background:var(--gold);color:var(--ink);border-color:var(--gold-2)}.comments-section{margin-top:8px}.comment-form{display:flex;flex-direction:column;gap:10px;padding:16px;background:var(--paper-2);border:1px solid var(--line);border-radius:8px;margin:16px 0 24px}.comment-form textarea{resize:vertical;font-family:inherit}.comment-login-prompt{padding:14px 16px;background:var(--paper-2);border:1px dashed var(--line-2);border-radius:8px;margin:16px 0 24px;font-size:13px;color:var(--ink-2)}.comments-list{display:flex;flex-direction:column;gap:14px}.comments-empty{padding:24px;text-align:center;color:var(--ink-2);opacity:.7;font-size:14px}.comment{padding:14px 16px;background:var(--paper);border:1px solid var(--line);border-radius:8px}.comment.reply{background:var(--paper-2);border-left:3px solid var(--gold)}.comment-head{display:flex;align-items:center;gap:10px;font-size:13px;margin-bottom:6px;flex-wrap:wrap}.comment-author{font-weight:600;color:var(--ink)}.comment-loc{font-weight:600;color:var(--navy);text-decoration:none}.comment-loc:hover{text-decoration:underline}.comment-rating{display:inline-flex;gap:1px;color:var(--gold-2)}.comment-date{color:var(--ink-2);opacity:.7;margin-left:auto;font-size:12px}.comment-owner-tag{font-size:10px;font-weight:600;padding:2px 6px;background:var(--gold);color:var(--ink);border-radius:999px;letter-spacing:.04em;text-transform:uppercase}.comment-body{font-size:14px;line-height:1.55;color:var(--ink);white-space:pre-wrap}.comment-reply-btn{margin-top:8px;background:none;border:none;font-size:12px;color:var(--ink-2);cursor:pointer;padding:0;text-decoration:underline}.comment-reply-form{margin-top:10px;display:flex;flex-direction:column;gap:8px}.comment-replies{margin-top:12px;padding-left:16px;display:flex;flex-direction:column;gap:8px}.star-picker{display:flex;align-items:center;gap:4px;color:var(--gold-2)}.star-btn{background:none;border:none;cursor:pointer;padding:2px;color:var(--line-2);transition:color .12s}.star-btn.on,.star-btn:hover{color:var(--gold-2)}.star-clear{margin-left:8px;background:none;border:none;cursor:pointer;font-size:11px;color:var(--ink-2);text-decoration:underline}.account-page{background:var(--paper);min-height:calc(100vh - 80px);padding:48px 48px 80px}.account-shell{max-width:960px;margin:0 auto}.account-shell h1{font-family:Fraunces,serif;font-weight:500;font-size:36px;letter-spacing:-.02em;margin:0}.account-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.account-meta{font-size:13px;color:var(--ink-2);margin-top:4px}.account-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:20px}.account-tab{background:none;border:none;padding:12px 16px;font-size:14px;font-weight:500;color:var(--ink-2);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.account-tab.active{color:var(--ink);border-bottom-color:var(--gold-2)}.account-favorites{display:flex;flex-direction:column;gap:10px}.favorite-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;background:var(--paper-2);border:1px solid var(--line);border-radius:8px}.favorite-link{display:flex;align-items:center;gap:14px;text-decoration:none;color:inherit;flex:1}.favorite-glyph{display:grid;place-items:center;width:36px;height:36px}.favorite-name{font-weight:600;font-size:15px;color:var(--ink)}.favorite-meta{font-size:12px;color:var(--ink-2);margin-top:2px}.account-comments{display:flex;flex-direction:column;gap:12px}.reservation-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:14px;padding:14px 16px;background:var(--paper);border:1px solid var(--line);border-radius:8px;border-left:3px solid var(--line-2)}.reservation-row.status-approved{border-left-color:var(--moss)}.reservation-row.status-declined,.reservation-row.status-cancelled{border-left-color:var(--rust);opacity:.85}.reservation-main{min-width:0}.reservation-status{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:4px 10px;border-radius:999px;background:var(--paper-2);color:var(--ink-2);border:1px solid var(--line);white-space:nowrap}.reservation-status.status-pending{color:var(--gold-2);border-color:var(--gold);background:#c9a9611a}.reservation-status.status-approved{color:var(--moss);border-color:var(--moss);background:#6b8e5a1a}.reservation-status.status-declined,.reservation-status.status-cancelled{color:var(--rust);border-color:var(--rust);background:#b5532a14}.reservation-actions{display:flex;gap:6px}.inbox-filter{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.floorplan{background:#f2ebda;border:1px solid var(--line-2);border-radius:8px;padding:12px;width:100%}.floorplan-svg{width:100%;height:auto;display:block;-webkit-user-select:none;user-select:none;touch-action:none}.floorplan-bg{fill:#f2ebda}.fp-table>rect,.fp-room>rect{fill:#e0d6c0;stroke:#5b6878;stroke-width:1;transition:fill .12s,stroke .12s}.fp-table.clickable,.fp-room.clickable{cursor:pointer}.fp-table.clickable:hover>rect,.fp-room.clickable:hover>rect{fill:#d8cdb2}.fp-table.taken>rect,.fp-room.taken>rect{fill:#c8b8b0;opacity:.55;stroke-dasharray:3 2}.fp-table.taken,.fp-room.taken{cursor:not-allowed}.fp-table.selected>rect,.fp-room.selected>rect{fill:#c9a961;stroke:#0b1b2b;stroke-width:1.5}.fp-label{font-family:Inter,sans-serif;font-size:11px;fill:#2a3441;pointer-events:none;font-weight:600}.fp-wall>rect{fill:#5b6878;stroke:#2a3441;stroke-width:.5}.fp-wall.selected>rect{fill:#c9a961}.fp-door circle{fill:#f2ebda;stroke:#5b6878;stroke-width:1.4}.fp-door line{stroke:#5b6878;stroke-width:1.4}.fp-door.selected circle{fill:#c9a961;stroke:#0b1b2b}.fp-handle{fill:var(--gold);stroke:var(--ink);stroke-width:1;cursor:nwse-resize}.floorplan-editor{display:flex;flex-direction:column;gap:14px}.floorplan-toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:10px 14px;background:var(--paper-2);border:1px solid var(--line);border-radius:8px}.floorplan-canvas-size{margin-left:auto;display:flex;gap:10px;align-items:center;font-size:12px;color:var(--ink-2)}.floorplan-canvas-size input{width:70px;padding:4px 6px;border:1px solid var(--line);background:var(--paper);border-radius:4px;font-family:inherit;font-size:12px;margin-left:4px}.floorplan-stage{display:grid;grid-template-columns:1fr 280px;gap:16px;align-items:start}.editor-canvas{padding:0;background:#f2ebda}.floorplan-side{background:var(--paper-2);border:1px solid var(--line);border-radius:8px;padding:16px;position:sticky;top:90px}.floorplan-side-empty{font-size:13px;color:var(--ink-2);line-height:1.55}.floorplan-side-empty ul{padding-left:18px;margin:4px 0 0}.floorplan-side-empty li{margin:4px 0}@media (max-width: 900px){.floorplan-stage{grid-template-columns:1fr}.floorplan-side{position:static}}.admin-tab{color:#f7f3e999}.admin-tab.active{color:var(--paper);border-bottom-color:var(--gold)}.users-tab{padding:8px 0}.users-list{display:flex;flex-direction:column;gap:8px}.user-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:14px;padding:12px 16px;background:var(--paper-2);border:1px solid var(--line);border-radius:8px}.user-owned{margin-top:6px;font-size:12px;color:var(--ink-2)}.user-owned-x{background:none;border:none;color:var(--rust);font-size:13px;cursor:pointer;padding:0 4px;margin-left:2px}.user-owned-x:hover{color:var(--ink)}@media (max-width: 900px){.module-body{grid-template-columns:1fr}.info-card{position:static}.facts-grid{grid-template-columns:repeat(2,1fr)}.rooms-grid{grid-template-columns:1fr}.gallery{grid-template-columns:1fr 1fr;height:auto}.gallery-img{height:160px}.gallery-img:nth-child(1){grid-row:span 1}.nav-search{display:none}.admin-grid,.cafe-tables{grid-template-columns:1fr}.module-body,.admin-container{padding:32px 20px 64px}.topnav{padding:0 16px;gap:16px}.nav-links{display:none}.hero-info{flex-direction:column}.hero-meta{align-items:flex-start}.module-page-extras{padding:24px 20px 48px}.account-page{padding:32px 20px 64px}.social-bar{flex-direction:column;align-items:stretch}.social-actions{justify-content:flex-end;flex-wrap:wrap}.reservation-row{grid-template-columns:1fr}.reservation-status{justify-self:start}.user-row{grid-template-columns:1fr}}
