*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);height:100%;margin:0}body{color:var(--text);overscroll-behavior-y:none;font-family:Instrument Sans,system-ui,sans-serif}#root{min-height:100%}button{font:inherit}input::placeholder{color:#b8ad9c}.serif{font-family:Instrument Serif,serif}.app{background:var(--bg);flex-direction:column;max-width:480px;min-height:100dvh;margin:0 auto;display:flex;position:relative}.header{padding:calc(env(safe-area-inset-top) + 20px) 24px 14px}.header-row{justify-content:space-between;align-items:flex-end;display:flex}.header-eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:600}.header-title{margin-top:4px;font-size:38px;line-height:1}.header-badge{background:var(--accent-soft);width:44px;height:44px;color:var(--accent);cursor:pointer;border:none;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-size:20px;display:flex}.header-badge:active{background:var(--line2)}.month-nav{justify-content:space-between;align-items:center;padding:0 24px 12px;display:flex}.month-nav-btn{border:1px solid var(--line);background:var(--surface);width:36px;height:36px;color:var(--text);cursor:pointer;border-radius:999px;font-size:16px}.month-nav-label{font-size:22px}.calendar-card{background:var(--surface);box-shadow:0 1px 0 var(--line), 0 12px 30px -20px #2b26224d;border-radius:24px;margin:0 16px;padding:16px 14px 18px}.calendar-weekdays,.calendar-week{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.calendar-weekdays{margin-bottom:8px}.calendar-week{margin-bottom:2px}.calendar-weekday{text-align:center;color:var(--muted);font-size:11px;font-weight:600}.day-cell{aspect-ratio:1;cursor:pointer;background:0 0;border:none;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:3px;padding:0;display:flex;position:relative}.day-cell.is-blank{visibility:hidden;cursor:default}.day-num{font-size:14px;font-weight:500;line-height:1}.day-dots{align-items:center;gap:2px;height:6px;display:flex}.day-dot{border-radius:999px;width:5px;height:5px}.day-more{color:var(--muted);margin-left:1px;font-size:9px;font-weight:700;line-height:1}.day-reserved-mark{background:var(--reserved);border-radius:1px;width:5px;height:5px;position:absolute;top:5px;right:6px}.calendar-legend{border-top:1px solid var(--line);color:var(--muted);gap:16px;margin-top:12px;padding-top:12px;font-size:11px;display:flex}.calendar-legend-item{align-items:center;gap:6px;display:flex}.legend-dot-round{background:var(--muted);border-radius:999px;width:6px;height:6px}.legend-dot-square{background:var(--reserved);border-radius:1px;width:6px;height:6px}.stay-section{flex:1;padding:22px 24px 130px}.people-section-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.people-section-title{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-size:13px;font-weight:600}.people-section-count{background:var(--accent-soft);min-width:22px;height:22px;color:var(--accent);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;padding:0 7px;font-size:12px;font-weight:700;line-height:1;display:inline-flex}.people-list{flex-direction:column;gap:10px;display:flex}.people-row{background:var(--surface);box-shadow:0 1px 0 var(--line);border-radius:16px;align-items:center;gap:12px;padding:12px 14px;display:flex}.people-row-body{flex:1;min-width:0}.people-row-name{font-size:15px;font-weight:600}.people-row-range{color:var(--muted);gap:6px;font-size:13px;display:flex}.people-empty{text-align:center;color:var(--muted);padding:20px 12px;font-size:14px}.avatar{color:#fff;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-weight:600;display:flex}.chip{white-space:nowrap;border-radius:999px;padding:5px 10px;font-size:11px;font-weight:600}.bottom-bar{width:100%;max-width:480px;padding:16px 20px calc(env(safe-area-inset-bottom) + 20px);background:linear-gradient(to top, var(--bg) 70%, transparent);z-index:10;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.btn-primary-outline{border:1.5px solid var(--accent);background:var(--surface);width:100%;color:var(--accent);cursor:pointer;border-radius:16px;padding:15px;font-family:Instrument Sans,sans-serif;font-size:16px;font-weight:600}.btn-hint{border:1px dashed var(--line2);background:var(--surface);width:100%;color:var(--muted);cursor:default;border-radius:16px;padding:16px;font-family:Instrument Sans,sans-serif;font-size:15px;font-weight:500}.btn-primary-fill{background:var(--accent);color:#fff;cursor:pointer;width:100%;box-shadow:0 10px 24px -10px var(--accent);border:none;border-radius:16px;justify-content:space-between;align-items:center;padding:16px;font-family:Instrument Sans,sans-serif;font-size:16px;font-weight:600;display:flex}.btn-cancel{width:100%;color:var(--muted);cursor:pointer;background:0 0;border:none;margin-top:8px;font-family:Instrument Sans,sans-serif;font-size:14px;font-weight:500}.sheet-backdrop{z-index:20;background:#2b262266;position:fixed;inset:0}.sheet{z-index:21;background:var(--surface);width:100%;max-width:480px;padding:22px 24px calc(env(safe-area-inset-bottom) + 34px);border-radius:28px 28px 0 0;max-height:85vh;position:fixed;bottom:0;left:50%;overflow-y:auto;transform:translate(-50%);box-shadow:0 -20px 50px -20px #2b262280}.sheet-header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.sheet-heading{min-width:0}.peek-heading{align-items:center;gap:10px;margin-bottom:18px;display:flex}.peek-heading .sheet-title{margin-bottom:0}.sheet-close{background:var(--bg);width:32px;height:32px;color:var(--muted);cursor:pointer;border:none;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;font-size:15px;line-height:1;display:flex}.sheet-close:active{background:var(--line2)}.sheet-title{margin-bottom:18px;font-size:26px}.sheet-subtitle{color:var(--muted);margin-top:-14px;margin-bottom:18px;font-size:14px}.peek-empty{text-align:center;color:var(--muted);padding:24px 12px 32px}.peek-empty-icon{opacity:.5;margin-bottom:8px;font-size:34px}.peek-people{flex-direction:column;gap:10px;display:flex}.peek-group{background:var(--bg);border-radius:16px;padding:12px 14px}.peek-lead{align-items:center;gap:12px;display:flex}.peek-row-body{flex:1;min-width:0}.peek-row-name{font-size:15px;font-weight:600}.peek-row-sub{color:var(--muted);font-size:13px}.peek-sub-list{margin-top:2px}.peek-sub{align-items:center;gap:10px;min-width:0;padding:5px 0 5px 34px;display:flex;position:relative}.peek-sub-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:500;overflow:hidden}.peek-sub:before{content:"";background:var(--line2);width:2px;height:100%;position:absolute;top:0;left:18px}.peek-sub:first-child:before{height:calc(100% + 8px);top:-8px}.peek-sub:last-child:before{box-sizing:border-box;border-left:2px solid var(--line2);border-bottom:2px solid var(--line2);background:0 0;border-bottom-left-radius:9px;width:16px;height:calc(50% + 1px)}.peek-sub:first-child:last-child:before{height:calc(50% + 9px);top:-8px}.peek-sub:after{content:"";background:var(--line2);width:16px;height:2px;position:absolute;top:50%;left:18px}.peek-sub:last-child:after{display:none}.field-label{color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:10px;font-size:12px;font-weight:600}.who-list{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.who-chip{border:1.5px solid var(--line2);background:var(--surface);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:6px 12px 6px 6px;display:flex}.who-chip.is-selected{border-color:var(--accent);background:var(--accent-soft)}.who-chip-avatar{color:#fff;border-radius:999px;justify-content:center;align-items:center;width:26px;height:26px;font-size:12px;font-weight:600;display:flex}.who-chip-name{color:#5c554c;font-size:14px;font-weight:500}.who-chip.is-selected .who-chip-name{color:var(--text)}.who-chip-check{color:var(--accent);font-size:13px;font-weight:700}.add-person-row{gap:8px;margin-bottom:22px;display:flex}.add-person-input{border:1.5px solid var(--line2);background:var(--bg);color:var(--text);border-radius:12px;outline:none;flex:1;padding:11px 13px;font-family:Instrument Sans,sans-serif;font-size:14px}.add-person-btn{border:1.5px solid var(--line2);background:var(--bg);color:var(--text);cursor:pointer;border-radius:12px;padding:0 16px;font-family:Instrument Sans,sans-serif;font-size:14px;font-weight:600}.mode-options{flex-direction:column;gap:10px;margin-bottom:22px;display:flex}.mode-option{text-align:left;border:1.5px solid var(--line2);background:var(--surface);cursor:pointer;border-radius:16px;align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.mode-option.is-active-open{border-color:var(--mode-open-border);background:var(--mode-open-bg)}.mode-option.is-active-reserved{border-color:var(--reserved);background:var(--mode-reserved-bg)}.mode-option-icon{margin-top:1px;font-size:20px}.mode-option-body{flex:1}.mode-option-title{color:var(--text);font-size:15px;font-weight:600;display:block}.mode-option-desc{color:var(--muted);margin-top:2px;font-size:13px;display:block}.mode-option-dot{border:2px solid var(--line2);border-radius:999px;flex-shrink:0;width:20px;height:20px;margin-top:2px}.mode-option-dot.is-filled-open{border-color:var(--mode-open-border);background:var(--mode-open-border)}.mode-option-dot.is-filled-reserved{border-color:var(--reserved);background:var(--reserved)}.conflict-banner{background:var(--conflict-bg);border:1px solid var(--conflict-border);border-radius:14px;align-items:flex-start;gap:10px;margin-bottom:16px;padding:12px 14px;display:flex}.conflict-icon{color:var(--reserved);margin-top:1px;font-size:16px}.conflict-text{color:var(--conflict-text);font-size:13px;line-height:1.4}.offline-banner{background:var(--conflict-bg);border:1px solid var(--conflict-border);color:var(--conflict-text);border-radius:12px;margin:0 16px 12px;padding:10px 14px;font-size:12px;line-height:1.4}.peek-row-actions{flex-direction:column;flex-shrink:0;align-items:stretch;gap:6px;display:flex}.peek-row-edit{border:1px solid var(--line2);background:var(--surface);color:var(--accent);cursor:pointer;border-radius:999px;flex-shrink:0;padding:6px 12px;font-family:Instrument Sans,sans-serif;font-size:13px;font-weight:600}.manage-list{flex-direction:column;gap:8px;display:flex}.manage-row{background:var(--bg);border-radius:16px;align-items:center;gap:12px;padding:10px 12px;display:flex}.manage-row.is-hidden{opacity:.55}.manage-row-body{flex:1;min-width:0}.manage-row-name{font-size:15px;font-weight:600}.manage-row-sub{color:var(--muted);font-size:12px}.manage-icon-btn{border:1px solid var(--line2);background:var(--surface);color:#5c554c;cursor:pointer;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:16px;display:flex}.manage-eye-btn.is-hidden{color:#b3a996;background:#f0ebe1}.manage-eye{width:20px;height:13px;display:block;position:relative}.manage-eye-outline{border:1.6px solid;border-radius:50%;position:absolute;inset:0}.manage-eye-pupil{background:currentColor;border-radius:999px;width:5px;height:5px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.manage-eye-slash{background:currentColor;width:24px;height:1.6px;position:absolute;top:5px;left:-2px;transform:rotate(-22deg)}.manage-edit-input{border:1.5px solid var(--accent);background:var(--surface);min-width:0;color:var(--text);border-radius:10px;outline:none;flex:1;padding:8px 11px;font-family:Instrument Sans,sans-serif;font-size:14px}.manage-save{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:10px;flex-shrink:0;padding:9px 15px;font-family:Instrument Sans,sans-serif;font-size:13px;font-weight:600}.manage-note{color:var(--muted);margin-top:16px;font-size:12px;line-height:1.45}.btn-delete-stay{border:1px solid var(--conflict-border);width:100%;color:var(--conflict-text);cursor:pointer;background:0 0;border-radius:16px;margin-top:10px;padding:14px;font-family:Instrument Sans,sans-serif;font-size:15px;font-weight:600}.btn-delete-stay.is-confirming{background:var(--conflict-text);border-color:var(--conflict-text);color:#fff}
