@font-face{font-family:'DM Sans';src:url('fonts/dm-sans.ttf') format('truetype');font-display:swap;font-weight:400}
@font-face{font-family:Fraunces;src:url('fonts/fraunces.ttf') format('truetype');font-display:swap;font-weight:400}
:root{color-scheme:light;--bg:#F8F4EF;--surface:#FFFDF9;--nav:#CCBEB1;--ink:#2C2926;--muted:#524B45;--line:#CCBEB1;--accent:#FFDBBB;--accent-text:#2C2926;--tint:#F7E8DA;--sand:#FFDBBB;--outline:#997E67;--error:#9d3d36;--shadow:0 14px 40px #2c29261a;--font:'DM Sans',sans-serif}
:root[data-theme=dark]{color-scheme:dark;--bg:#45413D;--surface:#514B46;--nav:#3E3B38;--ink:#FFF8F0;--muted:#E0D2C6;--line:#997E67;--accent:#FFDBBB;--accent-text:#2C2926;--tint:#64594F;--sand:#675C52;--outline:#CCBEB1;--error:#ffb2a8;--shadow:0 14px 40px #24222033}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.65 var(--font);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{cursor:wait;opacity:.58}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--outline);outline-offset:4px}[hidden]{display:none!important}h1,h2,h3,p{margin-top:0}h1,h2,.serif{font-family:Fraunces,Georgia,serif;font-weight:400}h1{letter-spacing:-.055em;line-height:1.08}h2{line-height:1.2}p{margin-bottom:1.2em}.skip{position:fixed;top:-80px;left:20px;z-index:200;padding:14px;background:var(--surface)}.skip:focus{top:10px}.eyebrow,.nav-heading{font-size:14px;font-weight:600;letter-spacing:.18em}.eyebrow{color:var(--muted);display:block;margin-bottom:14px}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;font-family:Fraunces,Georgia,serif;font-size:27px;line-height:1.1;letter-spacing:-.04em}.brand img{flex-shrink:0}.brand small{display:block;font:14px/1.5 var(--font);letter-spacing:.16em;margin-top:7px}.muted,.help{color:var(--muted)}.help{font-size:14px;line-height:1.6}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:12px 21px;border-radius:7px;border:1px solid transparent;font-size:14px;font-weight:600;transition:transform .15s,background .15s}.button:hover:not(:disabled){transform:translateY(-1px)}.primary{background:var(--accent);color:var(--accent-text)}.secondary{background:transparent;border-color:var(--line)}.text-button,.icon-button,.theme-button{border:0;background:none}.text-button{padding:12px 0;font-size:14px}.icon-button{width:40px;height:40px;font-size:25px;border-radius:7px}.icon-button:hover,.theme-button:hover{background:var(--tint)}.theme-button{display:flex;align-items:center;gap:10px;padding:10px;border-radius:7px;font-size:14px}.form-error{font-size:14px;color:var(--error);padding:12px 14px;border:1px solid var(--error);border-radius:6px;background:var(--surface)}label{display:block;font-size:14px;font-weight:600;margin-bottom:18px}input,select,textarea{display:block;width:100%;min-height:46px;margin-top:8px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink);padding:10px 12px;font-weight:400}input:focus,select:focus,textarea:focus{border-color:var(--accent)}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--surface);padding:14px 24px;max-width:90vw;z-index:100;border-radius:8px;box-shadow:var(--shadow);font-size:14px}
.access-screen{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.access-story{padding:52px 64px;display:flex;flex-direction:column;justify-content:space-between;gap:80px;background:var(--nav);position:relative;overflow:hidden}.access-story:after{content:'';position:absolute;width:450px;height:450px;border:1px solid var(--line);border-radius:50%;bottom:-260px;right:-80px;box-shadow:0 0 0 42px var(--nav),0 0 0 43px var(--line);pointer-events:none}.access-story h1{font-size:clamp(42px,4.9vw,76px);margin-bottom:25px}.access-story p{font-size:15px;color:var(--muted)}.place{font-size:14px;letter-spacing:.18em;display:flex;align-items:center;gap:18px;z-index:1}.place span{font-size:25px;color:#aa7b44}.access-form-wrap{display:flex;align-items:center;justify-content:center;padding:100px 40px;position:relative}.access-theme{position:absolute;right:35px;top:30px}.access-form{width:100%;max-width:340px}.access-form h2{font-size:35px;letter-spacing:-.045em;margin-bottom:16px}.access-form>p{color:var(--muted);font-size:14px;margin-bottom:30px}.access-form .button{width:100%;margin:7px 0 22px}.access-form label{margin-top:22px}.access-form .form-error{color:var(--error)}
.app-shell{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh}.sidebar{display:flex;flex-direction:column;position:sticky;top:0;height:100vh;padding:36px 24px 22px;border-right:1px solid var(--line);background:var(--nav)}.sidebar .brand{font-size:25px}.nav-heading{color:var(--muted);font-size:14px;margin:56px 12px 14px}.nav-list{display:grid;gap:6px}.nav-list button{border:0;background:none;min-height:46px;text-align:left;border-radius:7px;padding:10px 13px;color:var(--muted);font-size:14px}.nav-list button span{display:inline-block;font-size:19px;width:28px;vertical-align:middle}.nav-list button.active{background:var(--surface);color:var(--accent);font-weight:600;box-shadow:0 2px 3px #00000004}.sidebar-note{margin:55px 12px 25px;color:var(--muted);font-size:14px}.sidebar-note>span{font-size:32px;color:#ac885b;display:block;margin-bottom:10px}.sidebar-bottom{margin-top:auto;border-top:1px solid var(--line);padding-top:15px}.sidebar-bottom>.theme-button{font-size:14px;padding-left:0}.profile{display:flex;width:100%;gap:10px;align-items:center;text-align:left;border:0;background:none;padding:16px 0 0;font-size:14px}.profile strong{font-weight:500;display:block;overflow-wrap:anywhere}.profile small{display:block;font-size:14px;color:var(--muted)}.avatar{display:inline-grid;place-items:center;width:34px;height:34px;border:1px solid var(--line);border-radius:50%;font-family:Fraunces,serif;font-size:19px;flex-shrink:0}.logout{color:var(--muted);font-size:14px;margin-left:44px}.main{padding:0 46px;min-width:0;max-width:1700px;width:100%;margin:auto}.topline{display:flex;justify-content:space-between;gap:15px;padding:25px 0;border-bottom:1px solid var(--line);font-size:14px;letter-spacing:.14em;color:var(--muted)}.location{letter-spacing:.03em;font-size:14px}.location span{padding:0 6px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:25px;padding:44px 0 34px}.page-heading h1{font-size:49px;margin:0 0 14px}.page-heading .eyebrow{font-size:14px;margin-bottom:13px}.page-heading p{font-size:14px;color:var(--muted);margin:0}.calendar-toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px;margin-bottom:20px}.month-navigation{display:flex;align-items:center;gap:4px}.month-navigation h2{font-family:var(--font);font-size:16px;font-weight:500;min-width:140px;text-align:center;margin:0;text-transform:capitalize}.month-navigation .icon-button{font-size:23px;width:28px}.today-button{border:1px solid var(--line);border-radius:5px;background:none;font-size:14px;padding:6px 12px;margin-left:8px;min-height:32px}.legend{display:flex;gap:15px;font-size:14px;color:var(--muted)}.legend span{display:flex;align-items:center;gap:6px}.dot{width:7px;height:7px;border-radius:2px;display:inline-block;border:1px solid var(--line)}.dot.available{background:var(--surface)}.dot.reserved{background:var(--sand);border-color:#b58b58}.dot.selected{background:var(--accent);border-color:var(--accent)}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line);background:var(--surface);border-radius:8px;overflow:hidden}.weekday{text-align:center;padding:12px 0;border-bottom:1px solid var(--line);border-right:1px solid var(--line);font-size:14px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);background:var(--nav)}.day{min-height:94px;padding:9px 10px 7px;text-align:left;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:none;position:relative;display:flex;flex-direction:column;gap:9px;min-width:0}.day:not(:disabled):hover{background:var(--tint)}.day .number{font-size:14px;line-height:21px;width:23px;height:23px;display:grid;place-items:center}.day.is-today .number{background:var(--accent);color:var(--accent-text);border-radius:50%}.day.outside{background:var(--bg);opacity:.45}.day.is-selected{background:var(--tint);box-shadow:inset 0 0 0 1px var(--outline)}.day.is-start,.day.is-end{box-shadow:inset 0 0 0 2px var(--outline)}.occupant{display:block;font-size:14px;line-height:1.4;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;padding:5px 6px;border-radius:3px;background:var(--sand)}.day.is-selected .occupant{background:var(--accent);color:var(--accent-text)}.calendar-foot{display:flex;justify-content:space-between;gap:15px;color:var(--muted);font-size:14px;margin-top:13px}.reservations-section{margin-top:38px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.section-heading h2{font-size:24px;letter-spacing:-.025em;margin:0}.count-label{font-size:14px;color:var(--muted)}.reservation-card{padding:19px 0;border-top:1px solid var(--line);display:flex;gap:18px;align-items:center}.date-tile{width:48px;flex-shrink:0;text-align:center;border:1px solid var(--line);border-radius:6px;padding:4px}.date-tile small{display:block;font-size:14px;text-transform:uppercase;color:var(--muted)}.date-tile strong{font-size:22px;line-height:1.3;font-family:Fraunces,serif;font-weight:400}.reservation-card h3{font:500 14px var(--font);margin:0 0 5px}.reservation-card p{font-size:14px;color:var(--muted);margin:0}.reservation-info{flex:1;min-width:0;overflow-wrap:anywhere}.status-label{font-size:14px;padding:5px 9px;border-radius:4px;background:var(--tint);white-space:nowrap}.status-label.cancelled{background:var(--nav);color:var(--muted)}.manage-button{font-size:14px;color:var(--accent);padding:8px 0 8px 12px;border:0;background:none;min-height:36px}.empty-state{padding:32px 20px;text-align:center;border:1px dashed var(--line);border-radius:8px;color:var(--muted);font-size:14px}.empty-state strong{display:block;font:25px Fraunces,serif;color:var(--ink);margin-bottom:8px}.inline-status{padding:15px;border:1px solid var(--line);border-radius:7px;font-size:14px;margin-bottom:16px}.inline-status button{margin-left:10px}.page-footer{display:flex;justify-content:space-between;align-items:center;gap:15px;border-top:1px solid var(--line);padding:25px 0;margin-top:45px;color:var(--muted);font-size:14px}.page-footer .serif{font-size:19px;color:var(--ink)}.user-row{display:flex;align-items:center;gap:16px;padding:20px 0;border-bottom:1px solid var(--line)}.user-row h3{font-size:14px;font-weight:500;margin:0 0 3px}.user-row p{font-size:14px;margin:0;color:var(--muted)}.user-row .user-actions{display:flex;gap:12px}.user-row .text-button{font-size:14px}.user-list{margin-top:28px}
dialog{color:var(--ink);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow-y:auto;padding:32px;border-radius:12px}dialog::backdrop{background:rgb(44 41 38 / .16)}dialog h2{font-size:34px;letter-spacing:-.04em;margin:10px 0 14px}dialog .button{width:100%;margin:6px 0}.small-dialog{width:440px}.drawer{width:440px;max-height:100dvh;height:100dvh;border-radius:0;border-width:0 0 0 1px;margin:0 0 0 auto;padding:35px}.dialog-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:15px}.dialog-top .eyebrow{margin:0;font-size:14px}.dialog-top .icon-button{margin-right:-12px}.date-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:30px}.stay-summary{background:var(--tint);padding:22px;border-radius:7px;margin:26px 0}.stay-summary .eyebrow{font-size:14px;margin-bottom:7px}.stay-summary strong{display:block;font:31px Fraunces,serif;letter-spacing:-.04em}.stay-summary p{font-size:14px;line-height:1.6;margin:12px 0 0;color:var(--muted)}.danger{color:var(--error)}.drawer .text-button{width:100%;margin-top:7px}.drawer .help{margin-top:25px;text-align:center;font-size:14px}.dialog-actions{display:flex;gap:12px;margin-top:28px}.dialog-actions .button{width:auto;flex:1}.small-dialog>form>label:first-of-type{margin-top:25px}#user-form input[readonly]{font-family:monospace;font-size:15px;letter-spacing:.03em}
@media(min-width:1600px){.main{padding:0 80px}.day{min-height:120px}.occupant{font-size:14px}}
@media(max-width:1150px){.app-shell{grid-template-columns:220px minmax(0,1fr)}.sidebar{padding:30px 18px}.sidebar .brand{font-size:22px;gap:8px}.sidebar .brand small{font-size:14px}.main{padding:0 25px}.legend{gap:9px}.day{padding:6px;min-height:85px}.page-heading h1{font-size:43px}.access-story{padding:45px 35px}.calendar-foot{font-size:14px}}
@media(max-width:780px){.app-shell{display:block}.sidebar{height:auto;position:relative;padding:20px 20px 0;border-right:0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto;align-items:center}.sidebar .brand{font-size:24px}.nav-heading,.sidebar-note{display:none}.nav-list{display:flex;gap:10px;grid-column:1/-1;order:3;margin-top:20px}.nav-list button{flex:1;text-align:center;border-radius:7px 7px 0 0;min-height:44px;font-size:14px}.nav-list button span{font-size:17px;width:23px}.sidebar-bottom{margin:0;padding:0;border:0;display:flex;align-items:center;gap:4px}.sidebar-bottom .theme-button{padding:8px;font-size:18px}.sidebar-bottom .theme-button span,.profile>span:not(.avatar),.logout{display:none}.profile{width:auto;padding:5px}.sidebar-bottom .avatar{width:33px;height:33px}.main{padding:0 20px}.topline{padding:18px 0;font-size:14px}.location{font-size:14px}.page-heading{padding:30px 0;align-items:flex-end;gap:12px}.page-heading h1{font-size:37px}.page-heading .eyebrow{font-size:14px}.page-heading p{font-size:14px}.page-heading>.button{font-size:14px;padding:10px 12px;min-height:40px;white-space:nowrap}.calendar-toolbar{gap:10px}.month-navigation h2{font-size:14px;min-width:126px}.legend{font-size:14px;gap:10px}.day{min-height:79px;padding:5px 3px;gap:6px}.day .number{font-size:14px}.occupant{font-size:14px;padding:4px 3px}.weekday{font-size:14px;letter-spacing:.04em}.calendar-foot{flex-direction:column;gap:2px;font-size:14px}.reservations-section{margin-top:28px}.section-heading h2{font-size:22px}.reservation-card{gap:12px;padding:17px 0;flex-wrap:wrap}.reservation-card .status-label{margin-left:auto}.reservation-info{min-width:130px}.reservation-card .manage-button{font-size:14px;padding-left:0}.page-footer{margin-top:30px;font-size:14px}.page-footer .serif{font-size:17px}.access-screen{grid-template-columns:1fr}.access-story{padding:25px;gap:32px;min-height:250px}.access-story h1{font-size:38px;margin-bottom:15px}.access-story .brand{font-size:23px}.access-story p,.place{display:none}.access-story .eyebrow{font-size:14px}.access-story:after{bottom:-330px}.access-form-wrap{padding:65px 25px 45px}.access-theme{top:15px;right:20px}.access-form h2{font-size:31px}.user-row{align-items:flex-start;gap:10px;flex-wrap:wrap}.user-row .user-actions{width:100%;padding-left:44px}.drawer{width:100%;max-width:100%;padding:25px}.drawer h2{font-size:32px}.small-dialog{padding:26px}.page-heading .button[hidden]{display:none}.section-heading .button{font-size:14px;padding:9px 12px}}
@media(prefers-reduced-motion:no-preference){.page-heading,.access-form{animation:arrive .45s ease both}@keyframes arrive{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}}

/* Legibilidad y selección */
label,input,select,textarea,.button,.nav-list button,.profile,.reservation-card h3,.user-row h3{font-size:16px}
.page-heading p,.access-form>p,.access-story p,.help,.reservation-card p,.user-row p{font-size:16px}
.day{min-height:118px;user-select:none}.day .number{font-size:20px;width:30px;height:30px}.occupant{font-size:14px;padding:5px}
.calendar-grid{touch-action:pan-y pinch-zoom;user-select:none}.calendar-grid.is-dragging,.calendar-grid.is-dragging .day{cursor:grabbing}
.day.is-selected{background:var(--tint);box-shadow:inset 0 0 0 2px var(--outline)}
.day.is-active{background:var(--accent);color:var(--accent-text);box-shadow:inset 0 0 0 3px var(--outline)}
.day.is-active .number{background:var(--accent-text);color:var(--accent);font-weight:700;border-radius:6px}
.day.is-today:not(.is-active) .number{outline:2px solid var(--outline);outline-offset:1px;background:transparent;color:var(--ink)}
.day.is-start,.day.is-end{box-shadow:inset 0 0 0 3px var(--outline)}
.selection-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--tint);padding:18px;border-radius:8px;margin-top:16px}.selection-bar p{margin:0;font-size:16px}.selection-bar>div{display:flex;gap:12px;flex-wrap:wrap}
#invite-link{font-size:15px}#users-view>.section-heading{flex-wrap:wrap}.topline{align-items:center}.topline .text-button{font-size:15px;letter-spacing:normal;padding:0}

@media(max-width:1150px){.main{padding:0 24px}.calendar-toolbar{align-items:flex-start}.legend{font-size:14px}.day{padding:7px 4px}.calendar-foot{font-size:14px}}
@media(max-width:780px){.day{min-height:92px;padding:6px 2px}.day .number{font-size:18px;width:28px;height:28px}.occupant{font-size:14px;padding:3px 2px}.weekday{font-size:14px;letter-spacing:0}.legend{gap:8px;font-size:14px;flex-wrap:wrap}.calendar-foot{font-size:14px}.page-heading{flex-wrap:wrap;align-items:flex-start}.page-heading>.button{font-size:16px;padding:12px 16px}.nav-list button{font-size:15px}.month-navigation h2{font-size:19px;min-width:150px}.today-button{font-size:15px}.selection-bar{align-items:stretch;flex-direction:column}.selection-bar .button{flex:1}.date-fields{grid-template-columns:1fr}.drawer,.small-dialog{padding:24px}.profile small,.user-row .text-button,.reservation-card p,.manage-button{font-size:15px}.location{font-size:14px}.page-footer{font-size:14px}.main{padding:0 14px}.reservation-info{min-width:140px}.calendar-toolbar{gap:16px}.topline{flex-wrap:wrap;gap:12px}}

.nav-list button.active,.manage-button{color:var(--ink)}.manage-button{text-decoration:underline;text-underline-offset:4px}.dot.selected{border-color:var(--outline)}
.tour-target{outline:3px solid var(--outline)!important;outline-offset:5px;border-radius:8px;scroll-margin-block:36px}
.tour-panel{position:fixed;right:16px;bottom:16px;width:min(440px,calc(100vw - 32px));z-index:30;padding:22px;background:var(--surface);color:var(--ink);border:2px solid var(--outline);border-radius:12px;box-shadow:var(--shadow);max-height:55dvh;overflow:auto}
.tour-panel-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.tour-panel-header .eyebrow{margin:0;font-size:14px;letter-spacing:.06em}.tour-panel-header .text-button{padding:6px 0;color:var(--muted)}
.tour-panel h2{font-size:26px;letter-spacing:-.025em;margin:15px 0 12px}.tour-panel p{font-size:17px;margin:0}.tour-panel .dialog-actions{margin-top:20px;flex-wrap:wrap}.tour-panel .button{min-width:110px;flex:1}.tour-panel #tour-skip{margin-top:8px}.tour-panel .dialog-actions .button{font-size:15px}
.tour-panel.in-dialog{position:static;width:100%;max-height:none;box-shadow:none;margin-bottom:24px;padding:16px}.tour-panel.in-dialog h2{font-size:23px}.tour-panel.in-dialog p{font-size:16px}
@media(min-width:1200px){body.has-tutorial .app-shell{padding-right:360px}.tour-panel:not(.in-dialog){width:328px;bottom:auto;max-height:calc(100dvh - 32px)}}
@media(max-width:780px){.tour-panel{padding:16px;max-height:45dvh}.tour-panel h2{font-size:23px}.tour-panel p{font-size:16px}.tour-panel .dialog-actions{margin-top:14px}}

.location{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-variant-numeric:tabular-nums}.location span{padding:0}.location time{white-space:nowrap}
.access-story>*{position:relative;z-index:1}.access-story:after{z-index:0}
.theme-button{min-width:44px;min-height:44px;flex-shrink:0;justify-content:center}.theme-icon{display:block;width:24px;height:24px;flex:0 0 24px}
#tutorial-button{border-color:var(--outline);background:var(--tint);color:var(--ink);letter-spacing:normal;white-space:nowrap;flex-shrink:0}
.day.is-past:not([data-reservation]){color:var(--muted);opacity:.5;cursor:default}.day:disabled{cursor:default}
.main{padding-bottom:28px}
.sidebar-bottom>.invite-button{width:100%;min-height:52px;margin:12px 0 4px;font-size:18px;font-weight:600}.invite-icon{display:none;width:24px;height:24px;flex:0 0 24px}
@media(max-width:780px){.sidebar-bottom>.invite-button{width:44px;min-width:44px;height:44px;min-height:44px;flex:0 0 44px;margin:0;padding:0}.invite-button .invite-label{display:none}.invite-button .invite-icon{display:block}}

textarea{min-height:112px;resize:vertical;line-height:1.6}#reservation-name-help{margin-top:-10px}.reservation-info h3{overflow-wrap:anywhere}.reservation-owner-label{margin-bottom:4px!important}
