:root{--color-bg:#f6f7f5;--color-surface:#fff;--color-text:#1b2420;--color-muted:#5f6b65;--color-primary:#2f7d57;--color-primary-contrast:#fff;--color-border:#d9dfda;--color-error:#b3261e;--color-success:#1f7a45;--radius:8px;--space:16px;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{background:var(--color-bg);color:var(--color-text);margin:0}h1{margin:0 0 var(--space);font-size:1.5rem}.shell{min-height:100vh}.topbar{align-items:center;gap:var(--space);padding:12px var(--space);background:var(--color-surface);border-bottom:1px solid var(--color-border);display:flex}.topbar nav{gap:12px;display:flex}.topbar nav a{color:var(--color-muted);border-radius:var(--radius);padding:4px 8px;text-decoration:none}.topbar nav a[aria-current=page]{color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 10%, transparent)}.spacer{flex:1}.who{color:var(--color-muted)}.content{padding:calc(var(--space) * 1.5);max-width:960px;margin:0 auto}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:calc(var(--space) * 1.5)}.auth-card{max-width:380px;margin:10vh auto 0}form{gap:var(--space);flex-direction:column;display:flex}label{color:var(--color-muted);flex-direction:column;gap:4px;font-size:.9rem;display:flex}input{font:inherit;border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-text);padding:8px 10px}button{font:inherit;border-radius:var(--radius);background:var(--color-primary);color:var(--color-primary-contrast);cursor:pointer;border:0;padding:8px 14px}button:disabled{opacity:.6;cursor:default}button.secondary{color:var(--color-muted);border:1px solid var(--color-border);background:0 0}.error{color:var(--color-error);margin:0}.success{color:var(--color-success);margin:0}.center{text-align:center;margin-top:20vh}a.button{border-radius:var(--radius);background:var(--color-primary);color:var(--color-primary-contrast);padding:8px 14px;text-decoration:none;display:inline-block}select{font:inherit;border:1px solid var(--color-border);border-radius:var(--radius);padding:8px 10px}fieldset{border:1px solid var(--color-border);border-radius:var(--radius);flex-direction:column;gap:12px;display:flex}.row{align-items:center;gap:8px;display:flex}.row h1{margin:0}.stack{gap:var(--space);flex-direction:column;display:flex}.table{border-collapse:collapse;text-align:left;width:100%}.table th,.table td{border-bottom:1px solid var(--color-border);padding:8px}.tabs{margin-bottom:var(--space);gap:8px;display:flex}.tabs [aria-selected=true]{background:var(--color-primary)}label.inline{color:var(--color-text);flex-direction:row;align-items:center;gap:8px}.feature{flex-direction:column;gap:12px;display:flex}.branding{gap:var(--space);grid-template-columns:1fr 280px;align-items:start;display:grid}.preview{top:var(--space);position:sticky}.preview-logo{max-width:100%;max-height:48px}@media (width<=720px){.branding{grid-template-columns:1fr}}.tabs button:not([aria-selected=true]){color:var(--color-muted);border:1px solid var(--color-border);background:0 0}.lang-switch{gap:4px;display:flex}.lang-switch [aria-pressed=true]{background:var(--color-primary);color:var(--color-primary-contrast);border-color:var(--color-primary)}.localized .localized-field{align-items:center;gap:8px;display:flex}.localized .localized-field input,.localized .localized-field textarea{font:inherit;border:1px solid var(--color-border);border-radius:var(--radius);flex:1;padding:8px 10px}.localized [aria-invalid=true]{border-color:var(--color-error)}.lang-tag{width:2em;color:var(--color-muted);font-size:.85rem}.field-flag{color:var(--color-error);font-size:.8rem}.asset-thumb{object-fit:cover;border-radius:var(--radius);max-width:160px;max-height:64px}.room-editor{gap:var(--space);grid-template-columns:1fr 260px;align-items:start;display:grid}@media (width<=720px){.room-editor{grid-template-columns:1fr}}.room-map{flex-direction:column;align-items:center;gap:8px;display:flex;overflow-x:auto}.room-middle{align-items:stretch;gap:8px;display:flex}.room-grid{gap:6px;display:grid}.room-landmarks{background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius);color:var(--color-muted);align-self:stretch;padding:4px 8px;font-size:.85rem;display:flex}.room-landmarks-top,.room-landmarks-bottom{flex-direction:row;gap:12px}.room-landmarks-left,.room-landmarks-right{flex-direction:column;align-self:stretch;gap:12px}.room-landmarks-left .room-landmark{writing-mode:vertical-rl;transform:rotate(180deg)}.room-landmarks-right .room-landmark{writing-mode:vertical-rl}.room-landmark.align-start{margin-bottom:auto;margin-right:auto}.room-landmark.align-center{margin:auto}.room-landmark.align-end{margin-top:auto;margin-left:auto}.room-landmarks-left .room-landmark.align-start{margin-top:0;margin-bottom:auto}.room-landmarks-left .room-landmark.align-end{margin-top:auto;margin-bottom:0}.spot-tile,.spot-empty{border-radius:var(--radius);border:1px solid var(--color-border)}.spot-tile{background:var(--color-surface);color:var(--color-text);font-weight:600}.spot-tile.out-of-service{color:var(--color-muted);background:0 0;border-style:dashed}.spot-tile.selected{outline:2px solid var(--color-primary)}.spot-empty{background:0 0;border-style:dotted}.spot-empty:hover{background:color-mix(in srgb, var(--color-primary) 10%, transparent)}button.danger{background:var(--color-error)}a.button.secondary-link{color:var(--color-muted);border:1px solid var(--color-border);background:0 0}.plain-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.booking-row{border-bottom:1px solid var(--color-border);flex-direction:column;gap:6px;padding-bottom:8px;display:flex}.session-cancelled,.session-cancelled *{opacity:.7;text-decoration:line-through}.dialog-backdrop{padding:var(--space);z-index:100;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog{width:100%;max-width:560px;max-height:90vh;overflow-y:auto}.dialog.drawer{max-width:640px}.dialog h2{margin-top:0}.stack.wide{max-width:none}.fc{font-size:.85rem}.fc .fc-event,.table tr.clickable{cursor:pointer}.table tr.clickable:hover{background:var(--color-border)}
