:root{--color-green:#009972;--color-green-dark:#007d5d;--color-green-bg:#e6f5f0;--color-text:#1a1a1a;--color-sub:#555;--color-border:#e8e8e4;--color-bg:#f8f8f6;--color-white:#fff;--fs-xs:.75rem;--fs-sm:.875rem;--fs-base:1rem;--fs-md:1.125rem;--fs-lg:1.5rem;--fs-xl:2rem;--fs-2xl:2.75rem;--gap-xs:.25rem;--gap-sm:.5rem;--gap-md:1rem;--gap-lg:1.5rem;--gap-xl:2.5rem;--gap-2xl:4rem;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-full:9999px;--shadow-sm:0 1px 3px #00000014;--shadow-md:0 4px 16px #00000014;--transition-fast:.15s ease;--transition-base:.25s ease;--ease-out:cubic-bezier(.16, 1, .3, 1);--duration-xs:.15s;--max-w-content:1600px;--sans:system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;--reserved-bg:#fffbeb;--reserved:#f59e0b;--reserved-text:#b45309;--mine-bg:#ecfdf5;--mine:#10b981;--mine-text:#047857;--blocked-bg:#f0f0ed;--blocked:#8a8a82;--blocked-text:#555;--error-bg:#fef2f2;--error:#e53e3e;--error-text:#b91c1c;--success-bg:#ecfdf5;--success:#10b981;--success-text:#047857;--room-1:#3b82f6;--room-2:#8b5cf6;--room-3:#ec4899}*{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);font:var(--fs-base)/1.6 var(--sans);-webkit-font-smoothing:antialiased;margin:0}h1,h2,h3,h4{font-weight:800;line-height:1.2}h1{font-size:var(--fs-2xl)}h2{font-size:var(--fs-xl)}h3{font-size:var(--fs-lg)}button,input,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}:focus-visible{outline:3px solid var(--color-green);outline-offset:3px;border-radius:var(--radius-sm)}::selection{background:var(--color-green-bg);color:var(--color-green-dark)}input,select,textarea{caret-color:var(--color-green)}.app-shell{max-width:var(--max-w-content);padding-inline:var(--gap-lg);margin:auto;overflow-x:clip}.detail-kind{margin:0 0 var(--gap-xs);color:var(--color-sub);font:600 var(--fs-xs) var(--sans)}.empty{color:var(--color-sub);font-size:var(--fs-sm)}.page-loading{padding:var(--gap-2xl) 0}.topbar{z-index:10;background:var(--color-white);border-bottom:1px solid var(--color-border);position:sticky;top:0}.topbar-inner{justify-content:space-between;align-items:center;gap:var(--gap-xs) var(--gap-md);min-height:68px;max-width:var(--max-w-content);padding-block:var(--gap-sm);padding-inline:var(--gap-lg);flex-wrap:wrap;margin:auto;display:flex}.brand{align-items:center;gap:var(--gap-md);text-decoration:none;display:flex}.brand-logo{width:auto;height:24px;transition:opacity var(--transition-fast);display:block}.brand:hover .brand-logo{opacity:.85}.brand-product{padding-left:var(--gap-md);border-left:1px solid var(--color-border);color:var(--color-green-dark);font:700 var(--fs-sm) var(--sans);letter-spacing:.12em;text-transform:uppercase}.topbar-actions{align-items:center;gap:var(--gap-md);flex-shrink:0;margin-left:auto;display:flex}.user-chip{border:1px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-bg);color:var(--color-sub);font:600 var(--fs-xs) var(--sans);padding:.3rem .75rem}.language-picker{align-items:center;gap:var(--gap-sm);display:inline-flex}.language-flag svg{border-radius:2px;width:21px;height:14px;display:block;box-shadow:inset 0 0 0 1px #00000026}.language-select{border:1px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-bg);color:var(--color-sub);font:600 var(--fs-xs) var(--sans);padding:.3rem .5rem}.text-link{color:var(--color-green-dark);font:600 var(--fs-sm) var(--sans);background:0 0;border:0;padding:0;text-decoration:none}.text-link:hover{text-decoration:underline}.hero{padding:var(--gap-xl) 0}.hero h1{margin:0}.hero-copy{max-width:460px;margin:var(--gap-md) 0 0;color:var(--color-sub);font-size:var(--fs-md);line-height:1.7}.surface{padding:var(--gap-xl);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-white)}.surface+.surface{margin-top:var(--gap-lg)}.surface-top{justify-content:space-between;align-items:end;gap:var(--gap-sm) var(--gap-lg);flex-wrap:wrap;display:flex}.surface-top h2,.section-heading h2{margin:0}.rule-note,.booking-count{color:var(--color-sub);font-size:var(--fs-sm)}.field{gap:var(--gap-xs);min-width:0;color:var(--color-text);font:600 var(--fs-sm) var(--sans);flex-direction:column;display:flex}.field input,.field select,.inline-input{width:100%;min-width:0;padding:var(--gap-md);border:2px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-white);color:var(--color-text);font:var(--fs-base) var(--sans);transition:border-color var(--transition-fast)}.field input:focus-visible,.field select:focus-visible,.inline-input:focus-visible{border-color:var(--color-green);box-shadow:0 0 0 3px var(--color-green-bg);outline:none}.primary-button{padding:.75rem var(--gap-lg);border-radius:var(--radius-full);background:var(--color-green);color:var(--color-white);font:600 var(--fs-sm) var(--sans);white-space:nowrap;transition:background-color var(--transition-fast), transform var(--duration-xs) var(--ease-out), box-shadow var(--transition-fast);border:2px solid #0000;justify-content:center;align-items:center;display:inline-flex}.primary-button:hover:not(:disabled){background:var(--color-green-dark);transform:translateY(-1px)scale(1.02);box-shadow:0 4px 14px #0000001f}.primary-button:active:not(:disabled){box-shadow:none;transform:translateY(0)scale(.98)}.action-group,.confirm-prompt{align-items:center;gap:var(--gap-sm) var(--gap-md);flex-wrap:wrap;display:flex}.action{color:var(--color-green-dark);font:600 var(--fs-sm) var(--sans);white-space:nowrap;background:0 0;border:0;padding:0;text-decoration:none}.action:hover{text-decoration:underline}.action.danger{color:var(--error-text)}.action.muted{color:var(--color-sub)}.confirm-prompt>span{color:var(--error-text);font-size:var(--fs-sm)}.confirm-prompt .action.danger{font-weight:700}.message{align-items:center;gap:var(--gap-sm);margin:var(--gap-md) 0 0;padding:.75rem var(--gap-md);border-radius:var(--radius-md);font-size:var(--fs-sm);display:flex}.message.success{background:var(--success-bg);color:var(--success-text)}.message.error{background:var(--error-bg);color:var(--error-text)}.message-icon{border-radius:var(--radius-full);width:20px;height:20px;color:var(--color-white);font:700 var(--fs-xs) var(--sans);flex-shrink:0;place-items:center;display:grid}.message.success .message-icon{background:var(--success)}.message.error .message-icon{background:var(--error)}.message-text{overflow-wrap:anywhere;flex:auto;min-width:0}.dismiss-message{padding:.75rem 4px .75rem var(--gap-md);color:inherit;font-size:var(--fs-lg);opacity:.7;background:0 0;border:0;flex-shrink:0;margin:-.75rem 0 -.75rem auto;line-height:1}.dismiss-message:hover,.dismiss-message:focus-visible{opacity:1}.page-notice{margin-top:var(--gap-md)}.access-code-notice{align-items:center;gap:var(--gap-sm) var(--gap-lg);margin:var(--gap-md) 0 0;padding:var(--gap-md) var(--gap-lg);border-radius:var(--radius-lg);background:var(--color-green-bg);font-size:var(--fs-sm);border:1px solid #00997233;flex-wrap:wrap;display:flex}.access-code-notice p{color:var(--color-text);flex:1 0 100%;margin:0}.access-code-details{gap:var(--gap-sm) var(--gap-xl);flex-wrap:wrap;margin:0;display:flex}.access-code-details dt{color:var(--color-sub);font:700 var(--fs-xs) var(--sans);letter-spacing:.1em;text-transform:uppercase}.access-code-details dd{margin:var(--gap-xs) 0 0;color:var(--color-green-dark);font:700 var(--fs-lg) ui-monospace, Menlo, Consolas, monospace;letter-spacing:.12em}.access-code-notice>.action{margin-left:auto}.week-navigation{justify-content:space-between;align-items:center;gap:var(--gap-sm) var(--gap-md);margin:var(--gap-lg) 0 var(--gap-xs);flex-wrap:wrap;display:flex}.week-navigation>button{padding:.4rem var(--gap-md);border:1px solid var(--color-border);border-radius:var(--radius-full);background:var(--color-white);color:var(--color-sub);font:600 var(--fs-sm) var(--sans);white-space:nowrap;transition:color var(--transition-fast), border-color var(--transition-fast)}.week-navigation>button:hover:not(:disabled){border-color:var(--color-green);color:var(--color-green-dark)}.week-label{align-items:center;gap:var(--gap-sm);display:flex}.week-label strong{color:var(--color-sub);font:700 var(--fs-xs) var(--sans);letter-spacing:.1em;text-transform:uppercase}.nav-label-short{display:none}.day-strip{gap:var(--gap-sm);padding:var(--gap-lg) 0 var(--gap-xl);grid-template-columns:repeat(7,1fr);display:grid}.day-card{gap:var(--gap-xs);min-width:0;padding:var(--gap-md);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-white);text-align:left;transition:border-color var(--transition-base), box-shadow var(--transition-base), transform var(--transition-base);flex-direction:column;display:flex}.day-card:hover{border-color:var(--color-green);box-shadow:var(--shadow-sm);transform:translateY(-2px)}.day-card span{color:var(--color-sub);font-size:var(--fs-xs);text-transform:uppercase}.day-card strong{font-size:var(--fs-xl);font-weight:800;line-height:1}.day-card small{color:var(--color-sub);font-size:var(--fs-xs)}.day-card.active{border-color:var(--color-green);background:var(--color-green-bg)}.day-card.active strong{color:var(--color-green-dark)}.overview-key{align-items:center;gap:var(--gap-sm) var(--gap-lg);padding:var(--gap-md) 0;border-top:1px solid var(--color-border);color:var(--color-sub);font-size:var(--fs-sm);flex-wrap:wrap;display:flex}.overview-key span{align-items:center;gap:var(--gap-xs);display:flex}.key-dot{border-radius:var(--radius-full);width:9px;height:9px;display:inline-block}.key-dot.reserved{background:var(--reserved)}.key-dot.mine{background:var(--mine)}.key-dot.blocked{background:var(--blocked)}.room-overview{border-top:1px solid var(--color-border)}.room-overview>.empty{margin:var(--gap-lg) 0}.room-row{gap:var(--gap-lg);border-bottom:1px solid var(--color-border);grid-template-columns:190px 1fr;align-items:center;min-height:92px;display:grid}.room-row-title{gap:var(--gap-sm);grid-template-columns:12px 1fr;align-items:center;display:grid}.room-row-title strong{font-size:var(--fs-base);font-weight:700}.room-row-title small{color:var(--color-sub);font-size:var(--fs-xs);grid-column:2}.room-swatch{border-radius:var(--radius-full);background:var(--room-1);width:10px;height:10px}.room-row:nth-child(3n+2) .room-swatch{background:var(--room-2)}.room-row:nth-child(3n+3) .room-swatch{background:var(--room-3)}.room-track{border:1px solid var(--color-border);border-radius:var(--radius-md);background:repeating-linear-gradient(90deg, transparent 0, transparent calc(25% - 1px), var(--color-border) calc(25% - 1px), var(--color-border) 25%);height:52px;position:relative}.track-hours{color:var(--color-sub);font-size:var(--fs-xs);justify-content:space-between;display:flex;position:absolute;top:-20px;left:0;right:0}.booking-block{min-width:62px;padding:var(--gap-xs) var(--gap-sm);border-radius:var(--radius-sm);text-align:left;border:0;border-left:3px solid;position:absolute;top:4px;bottom:4px;overflow:hidden}.booking-block.reserved{border-left-color:var(--reserved);background:var(--reserved-bg);color:var(--reserved-text)}.booking-block.mine{border-left-color:var(--mine);background:var(--mine-bg);color:var(--mine-text)}.booking-block.blocked{border-left-color:var(--blocked);background:var(--blocked-bg);color:var(--blocked-text)}.booking-block:hover,.booking-block:focus-visible,.booking-block[aria-pressed=true]{z-index:2;outline:2px solid var(--color-green);outline-offset:1px}.booking-block b,.booking-block small{text-overflow:ellipsis;white-space:nowrap;max-width:100%;display:block;overflow:hidden}.booking-block b{font:700 var(--fs-xs) var(--sans)}.booking-block small{font-size:var(--fs-xs);margin-top:1px}.booking-details{justify-content:space-between;align-items:start;gap:var(--gap-lg);margin-top:var(--gap-lg);padding:var(--gap-lg);border-radius:var(--radius-lg);background:var(--color-green-bg);border:1px solid #00997233;display:flex}.booking-details h3{margin:0 0 var(--gap-xs)}.booking-details p:not(.detail-kind){margin:0 0 var(--gap-sm);color:var(--color-sub);font-size:var(--fs-sm)}.booking-details strong,.booking-details small{font-size:var(--fs-sm);display:block}.booking-details small{margin-top:var(--gap-xs);color:var(--color-sub)}.booking-details .action-group,.booking-details .confirm-prompt{margin-top:var(--gap-md)}.close-button{color:var(--color-sub);font-size:var(--fs-lg);background:0 0;border:0;line-height:1}.reservation-form{align-items:end;gap:var(--gap-md);padding:var(--gap-lg) 0 var(--gap-xs);grid-template-columns:1.2fr 1.3fr 1fr 1fr 1fr auto;display:grid}.login-view{min-height:calc(100svh - 13rem);padding:var(--gap-xl) 0;place-items:center;display:grid}.login-card{border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-white);width:100%;max-width:30rem;box-shadow:var(--shadow-md);animation:login-card-in .5s var(--ease-out) both;padding:3rem}.login-card h1{font-size:var(--fs-xl);text-wrap:balance;margin:0}.login-copy{margin:var(--gap-sm) 0 var(--gap-xl);color:var(--color-sub);font-size:var(--fs-sm);line-height:1.7}.login-form{gap:var(--gap-lg);display:grid}.login-submit{width:100%;margin-top:var(--gap-xs);padding-block:.875rem}.field-hint{color:var(--color-sub);font:400 var(--fs-xs)/1.4 var(--sans)}.login-help{margin:var(--gap-xl) 0 0;padding-top:var(--gap-lg);border-top:1px solid var(--color-border);color:var(--color-sub);font-size:var(--fs-xs);line-height:1.6}@keyframes login-card-in{0%{opacity:0;transform:translateY(.75rem)}}.my-bookings{margin-bottom:var(--gap-lg)}.section-heading{justify-content:space-between;align-items:end;gap:var(--gap-md);padding-bottom:var(--gap-md);border-bottom:1px solid var(--color-border);display:flex}.booking-list{margin-top:var(--gap-lg)}.booking-row{align-items:center;gap:var(--gap-md);min-width:0;padding:var(--gap-md) var(--gap-sm);border-top:1px solid var(--color-border);border-radius:var(--radius-md);display:flex}.booking-row:first-child{border-top:0}.booking-row:has(.confirm-prompt){background:var(--error-bg);border-top-color:#0000}.card-date{color:var(--color-green-dark);font:700 var(--fs-xs) var(--sans);letter-spacing:.04em;text-transform:uppercase;flex:0 0 116px}.booking-row-text{gap:var(--gap-xs);flex-direction:column;flex:auto;min-width:0;display:flex}.booking-row-text strong{text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-md);font-weight:700;overflow:hidden}.booking-row-text span{color:var(--color-sub);font-size:var(--fs-sm)}.card-time{white-space:nowrap}footer{justify-content:space-between;gap:var(--gap-md);padding:var(--gap-lg) 0 var(--gap-xl);border-top:1px solid var(--color-border);color:var(--color-sub);font-size:var(--fs-sm);display:flex}.admin-page{padding:var(--gap-xl) 0 var(--gap-2xl)}.page-heading{margin-bottom:var(--gap-xl)}.page-heading h1{margin:0}.admin-page>.text-link{font-size:var(--fs-sm)}.admin-grid{gap:var(--gap-lg);grid-template-columns:repeat(auto-fit,minmax(280px,1fr));display:grid}.admin-card{min-width:0;padding:var(--gap-xl);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-white)}.admin-card h2{margin:0 0 var(--gap-lg);font-size:var(--fs-lg)}.admin-blocks{margin-top:var(--gap-lg)}.admin-users{margin-bottom:var(--gap-lg)}.card-hint{margin:-.75rem 0 var(--gap-lg);color:var(--color-sub);font-size:var(--fs-sm);line-height:1.6}.users-toolbar{justify-content:space-between;align-items:center;gap:var(--gap-sm) var(--gap-md);flex-wrap:wrap;display:flex}.users-toolbar .inline-input{flex:260px}.admin-users .stacked-form{margin-top:var(--gap-lg)}.list-section-label{margin:var(--gap-lg) 0 0;color:var(--color-sub);font:700 var(--fs-xs) var(--sans);letter-spacing:.1em;text-transform:uppercase}.admin-users .list{max-height:min(60vh,620px);overflow-y:auto}.stacked-form{gap:var(--gap-md);flex-direction:column;max-width:420px;display:flex}.stacked-form .primary-button{margin-top:var(--gap-xs)}.stacked-form .field input,.stacked-form .field select{padding:.625rem var(--gap-sm);font-size:var(--fs-sm)}.field-pair{gap:var(--gap-sm);grid-template-columns:1fr 1fr;display:grid}.list-row .field-pair{flex:1;min-width:0}.list{margin-top:var(--gap-lg);border-top:1px solid var(--color-border)}.list-row{justify-content:space-between;align-items:center;gap:var(--gap-sm) var(--gap-md);padding:var(--gap-sm) 0;border-bottom:1px solid var(--color-border);flex-wrap:wrap;display:flex}.list-row-text{flex-direction:column;gap:2px;min-width:0;display:flex}.list-row-text strong{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.list-row-text small{color:var(--color-sub);font-size:var(--fs-sm)}.list-row .inline-input{padding:.5rem var(--gap-sm);font-size:var(--fs-sm);flex:1}@media (prefers-reduced-motion:reduce){.primary-button:hover:not(:disabled),.primary-button:active:not(:disabled),.day-card:hover,.login-card{animation:none}*,:before,:after{transition-duration:.01ms}}@media (width>=1280px){.reservation-form{grid-template-columns:1.4fr 1.4fr 1fr 200px 200px auto}}@media (width<=1024px){.reservation-form{grid-template-columns:repeat(3,1fr)}.reservation-form .primary-button{grid-column:1/-1}}@media (width<=768px){.app-shell{padding-inline:var(--gap-md)}.topbar-inner{min-height:60px;padding-inline:var(--gap-md)}.brand-logo{height:20px}.hero{padding:var(--gap-lg) 0}.hero h1,.page-heading h1{font-size:var(--fs-xl)}.surface,.admin-card{padding:var(--gap-lg) var(--gap-md)}.surface-top h2,.section-heading h2{font-size:var(--fs-lg)}.day-strip{margin-inline:calc(var(--gap-md) * -1);padding:var(--gap-md) var(--gap-md) var(--gap-xl);display:flex;overflow-x:auto}.day-card{flex:0 0 92px}.room-row{padding:var(--gap-lg) 0 var(--gap-xl);display:block}.room-row-title{margin-bottom:var(--gap-lg)}.room-track{margin:0 4px}.reservation-form{grid-template-columns:1fr 1fr}.reservation-form .field:first-child{grid-column:1/-1}.login-view{min-height:0;padding:var(--gap-lg) 0 var(--gap-xl)}.login-card{padding:2rem}.my-bookings{padding-bottom:var(--gap-md)}.admin-page{padding:var(--gap-lg) 0 var(--gap-xl)}footer{gap:var(--gap-xs);flex-direction:column}}@media (width<=480px){.user-chip,.brand-product{display:none}.language-picker{gap:var(--gap-xs)}.language-flag svg{width:18px;height:12px}.language-select{padding:.25rem .35rem}.brand-logo{height:18px}.list-row .field-pair{flex-basis:100%;grid-template-columns:1fr;justify-items:start}.list-row .field-pair .inline-input{width:100%;max-width:280px}.week-navigation{justify-content:center;gap:var(--gap-sm);flex-wrap:nowrap}.nav-label-full{display:none}.nav-label-short{display:inline}.week-navigation>button{padding:.4rem var(--gap-sm)}.reservation-form{grid-template-columns:1fr}.reservation-form .field:first-child{grid-column:auto}.room-overview{overflow-x:auto}.room-row{min-width:620px}.room-track{min-width:500px}.action{min-height:38px;padding:9px 4px}.booking-row{align-items:flex-start;gap:var(--gap-sm) var(--gap-md);flex-wrap:wrap}.card-date{flex-basis:100%}.booking-row-text{flex:auto}.booking-row-text strong{white-space:normal;overflow:visible}.booking-row>.action-group{align-self:center}.booking-row>.confirm-prompt{flex:100%;margin-left:0}.confirm-prompt>span{flex:0 0 100%}}
