:root{--bg: #0b1220;--panel: #111a2e;--panel-2: #17223a;--border: #24314d;--text: #e2e8f0;--muted: #94a3b8;--accent: #38bdf8;--accent-strong: #0ea5e9;--warn: #fbbf24;--danger: #f87171;color-scheme:dark;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;color:var(--text);background:var(--bg)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}.app{display:flex;flex-direction:column;height:100%}.header{display:flex;align-items:center;gap:16px;padding:8px 16px;background:var(--panel);border-bottom:1px solid var(--border);flex-wrap:wrap}.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:16px}.logo{font-size:20px}.marina-name{flex:1 1 220px;max-width:360px;background:transparent;border:1px solid transparent;font-size:15px;font-weight:600}.marina-name:hover,.marina-name:focus{border-color:var(--border)}.modes{display:flex;gap:4px;background:var(--bg);padding:3px;border-radius:8px}.modes button{border:none;background:transparent}.modes button.active{background:var(--accent-strong);color:#fff}.modes kbd{opacity:.6;margin-left:4px}.header-actions{display:flex;gap:6px;margin-left:auto}.main{flex:1;display:flex;min-height:0;position:relative}.map{flex:1;min-width:0}.sidebar{width:360px;flex-shrink:0;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:12px;background:var(--bg);border-left:1px solid var(--border)}@media (max-width: 800px){.main{flex-direction:column}.map{flex:none;height:55vh}.sidebar{width:100%;border-left:none;border-top:1px solid var(--border);flex:1}.modes kbd,.brand-name{display:none}}button,input,select,textarea{font:inherit;color:inherit}button{background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:6px 10px;cursor:pointer;white-space:nowrap}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff;font-weight:600}button.danger{color:var(--danger);margin-top:8px}button.link{background:none;border:none;padding:0;color:var(--accent);text-align:left}button.icon{padding:2px 8px}input,select,textarea{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:6px 8px;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}label.block{margin-top:10px}kbd{font-family:ui-monospace,monospace;font-size:11px;border:1px solid var(--border);border-radius:4px;padding:0 4px}.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:12px}.card.highlight{border-color:var(--accent-strong);box-shadow:0 0 0 1px #0ea5e940}.card h3{margin:0 0 8px;font-size:14px;display:flex;align-items:center;gap:8px}.card h4{margin:12px 0 4px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.muted{color:var(--muted);margin:4px 0 8px}.small{font-size:12px}.warn{color:var(--warn);margin:6px 0;font-size:12px}.cap{text-transform:capitalize}.button-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}details.card summary{list-style:none;cursor:pointer;display:flex;align-items:baseline;justify-content:space-between}details.card summary::-webkit-details-marker{display:none}details.card summary h3{margin:0}details.card summary h3:before{content:"▸";color:var(--muted)}details.card[open] summary h3:before{content:"▾"}.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}.kpi-value{font-size:24px;font-weight:700;line-height:1.1}.kpi-label{font-size:11px;color:var(--muted)}.legend{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:999px;font-size:12px}.chip.off{opacity:.4}.chip b{font-weight:700}.swatch{width:10px;height:10px;border-radius:3px;display:inline-block}.bars{margin-top:12px;display:flex;flex-direction:column;gap:5px}.bar-row{display:grid;grid-template-columns:18px 1fr 72px;gap:8px;align-items:center;font-size:12px}.bar-label{font-weight:700}.bar{display:flex;height:10px;border-radius:3px;overflow:hidden;background:var(--panel-2)}.bar span{height:100%}.bar-num{color:var(--muted);text-align:right}.row-inputs{display:grid;grid-template-columns:1fr 1fr auto auto;gap:6px;align-items:end}.fit-list{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:4px}.fit-list button{width:100%;display:flex;justify-content:space-between;gap:6px;font-size:12px}.fit-list button span{color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.span2{grid-column:span 2}.panel-head{display:flex;justify-content:space-between;align-items:flex-start}.status-pill{font-size:11px;color:#0b1220;font-weight:700;padding:2px 8px;border-radius:999px}.facts{display:grid;grid-template-columns:90px 1fr;gap:4px 8px;margin:6px 0;font-size:13px}.facts dt{color:var(--muted)}.facts dd{margin:0}.occupancy{background:var(--panel-2);border-radius:8px;padding:8px 10px;margin-top:8px}.boat-name{font-weight:700;font-size:15px}.layout-item{display:flex;justify-content:space-between;align-items:center;padding:4px 0;border-bottom:1px solid var(--border);gap:8px}.layout-item .actions{display:flex;gap:4px}.layout-item .actions button{padding:2px 8px;font-size:12px}.maplibregl-ctrl-scale{background:#0f172ab3;color:#e2e8f0;border-color:#e2e8f0}.history{display:flex;gap:2px}.history button{font-size:16px;padding:3px 10px;line-height:1.2}.with-suffix{position:relative;display:block}.with-suffix input{padding-right:26px}.with-suffix .suffix{position:absolute;right:8px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:12px;pointer-events:none}.form-grid h4{margin:6px 0 -2px}.next-point{display:grid;grid-template-columns:1fr 1fr auto;gap:6px;align-items:end;margin-top:10px}.segments{display:flex;flex-direction:column;gap:6px}.segment{display:grid;grid-template-columns:18px 1fr 1fr;gap:6px;align-items:end}.seg-num{color:var(--muted);font-size:12px;padding-bottom:8px}input[type=number]{-moz-appearance:textfield}input[type=number]::-webkit-inner-spin-button{opacity:.5}.role{display:flex;gap:2px;background:var(--bg);padding:3px;border-radius:8px}.role button{border:none;background:transparent;padding:4px 10px;font-size:13px}.role button.active{background:#fbbf24;color:#0b1220;font-weight:700}.readonly .actions,.readonly button.danger{display:none}.admin-zone{margin-top:12px;padding-top:10px;border-top:1px dashed var(--border)}.admin-zone h4{margin:0 0 6px}.admin-zone .danger{margin-top:0}.status-pill.removed{background:transparent;color:var(--danger);box-shadow:inset 0 0 0 1px var(--danger)}button:disabled.danger{opacity:.4}.sync{position:relative;display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);white-space:nowrap}.sync-dot{width:8px;height:8px;border-radius:50%;background:#34d399;flex:none}.sync-saving .sync-dot,.sync-loading .sync-dot{background:var(--accent);animation:sync-pulse 1s ease-in-out infinite}.sync-offline .sync-dot{background:var(--warn)}.sync-error .sync-dot{background:var(--danger)}.sync-offline,.sync-error{color:var(--text)}.sync-message{position:absolute;top:calc(100% + 10px);right:0;z-index:30;width:max-content;max-width:380px;white-space:normal;line-height:1.4;padding:8px 12px;border-radius:8px;background:var(--panel-2);border:1px solid var(--border);box-shadow:0 6px 20px #00000059;color:var(--text)}.sync-error .sync-message{border-color:var(--danger)}.sync-dismiss{border:none;background:transparent;color:var(--muted);padding:0 4px;font-size:14px}@keyframes sync-pulse{50%{opacity:.35}}@media (prefers-reduced-motion: reduce){.sync-dot{animation:none!important}}.loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;background:#0b1220b8;color:var(--text);font-size:15px}.marina-switch{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:4px 6px;font:inherit;font-size:13px;max-width:170px}.auth{display:grid;place-items:center;min-height:100%;padding:24px 16px;background:var(--bg)}.auth-card{width:100%;max-width:380px;padding:28px 28px 24px;background:var(--panel);border:1px solid var(--border);border-radius:12px}.auth-brand{font-weight:700;font-size:16px;margin-bottom:18px}.auth h1{font-size:20px;margin:0 0 14px}.auth form{display:flex;flex-direction:column;gap:12px}.auth label{display:flex;flex-direction:column;gap:4px;color:var(--muted);font-size:13px}.auth label input,.auth label select{color:var(--text);font-size:14px;padding:8px 10px}.auth button.primary{padding:9px 12px;font-size:14px;margin-top:4px}.auth p{margin:0 0 10px;line-height:1.45}.auth-hint{color:var(--muted);font-size:12px}.auth-error{color:var(--danger);margin:0}.auth-notice{color:var(--accent);margin:0}.auth-links{display:flex;justify-content:space-between;gap:12px;margin-top:8px;flex-wrap:wrap}.user-menu{position:relative}.user-menu summary{list-style:none;cursor:pointer;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;background:var(--panel-2);border:1px solid var(--border);-webkit-user-select:none;user-select:none}.user-menu summary::-webkit-details-marker{display:none}.user-menu[open] summary,.user-menu summary:hover{border-color:var(--accent)}.user-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:20;min-width:220px;padding:12px;display:flex;flex-direction:column;gap:4px;background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0006}.user-name{font-weight:600}.user-email,.user-role{color:var(--muted);font-size:12px}.user-pop button{margin-top:8px}.flag-alerts{border-color:#8b5cf6}.flag-alerts.urgent{border-color:#ef4444;box-shadow:0 0 0 1px #ef444473;animation:urgent 1.4s ease-in-out infinite}@keyframes urgent{50%{box-shadow:0 0 0 4px #ef444440}}@media (prefers-reduced-motion: reduce){.flag-alerts.urgent{animation:none}}.flag-alerts h3{margin:0 0 6px}.flag-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.flag-row{width:100%;display:grid;grid-template-columns:22px 1fr auto;gap:8px;align-items:start;text-align:left}.flag-row.emergency.open{border-color:#ef4444}.flag-main{min-width:0;font-size:13px}.flag-note-line{display:block;color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.flag-meta{font-size:11px;color:var(--muted);display:flex;flex-direction:column;align-items:flex-end;gap:2px;white-space:nowrap}.flag-onit{color:#22c55e;font-weight:600}.flag-dot{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;color:#fff;font-weight:800;font-size:13px;border:2px solid #fff;flex:none}.flag-dot.emergency{background:#ef4444}.flag-dot.question{background:#8b5cf6}.slip-flags{display:flex;flex-direction:column;gap:8px;margin:8px 0}.flag-card{border:1px solid var(--border);border-left:4px solid #8b5cf6;border-radius:8px;padding:8px 10px;background:var(--panel-2)}.flag-card.emergency{border-left-color:#ef4444}.flag-card.emergency.open{border-color:#ef4444}.flag-card.resolved{opacity:.7;border-left-color:var(--muted)}.flag-card header{display:flex;align-items:center;gap:6px;font-size:13px;flex-wrap:wrap}.flag-status{margin-left:auto;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.flag-card.open .flag-status{color:#fca5a5}.flag-note{margin:6px 0;white-space:pre-wrap;font-size:14px}.flag-card a{color:var(--accent)}.flag-resolve label{margin-top:6px}.kind-toggle{display:flex;gap:4px}.kind-toggle button{flex:1}.kind-toggle button.active.question{background:#8b5cf6;border-color:#8b5cf6;color:#fff;font-weight:600}.kind-toggle button.active.emergency{background:#ef4444;border-color:#ef4444;color:#fff;font-weight:600}a.button{display:inline-flex;align-items:center;background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:6px 10px;color:inherit;text-decoration:none;white-space:nowrap}a.button:hover{border-color:var(--accent)}.berth-page{max-width:520px;margin:0 auto;padding:16px 16px 40px;min-height:100%;font-size:16px}.berth-head{margin-bottom:14px}.berth-marina{color:var(--muted);font-size:14px}.berth-head h1{margin:2px 0 0;font-size:30px}.call-emergency{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border-radius:12px;margin-bottom:16px;background:#7f1d1d;border:2px solid #ef4444;color:#fff;text-decoration:none}.call-emergency strong{font-size:20px}.call-emergency span{font-size:14px;color:#fecaca}.berth-choices{display:flex;flex-direction:column;gap:12px}.choice{display:flex;align-items:center;gap:14px;padding:18px 16px;border-radius:12px;text-align:left;white-space:normal;border-width:2px;min-height:84px}.choice strong{display:block;font-size:20px}.choice small{display:block;color:var(--muted);font-size:14px;margin-top:2px}.choice.emergency{border-color:#ef4444}.choice.question{border-color:#8b5cf6}.choice-icon{flex:none;width:44px;height:44px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:26px;font-weight:800;color:#fff}.choice.emergency .choice-icon{background:#ef4444}.choice.question .choice-icon{background:#8b5cf6}.berth-card{background:var(--panel);border:2px solid var(--border);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:12px}.berth-card.emergency{border-color:#ef4444}.berth-card.question{border-color:#8b5cf6}.berth-card.sent{border-color:#22c55e}.berth-card h2{margin:0;font-size:22px}.berth-card label{font-size:14px}.berth-card textarea,.berth-card input[type=text],.berth-card input[type=tel],.berth-card input:not([type]){font-size:16px;padding:10px;border:1px solid var(--border);border-radius:8px}.categories{border:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}.categories legend{font-size:14px;color:var(--muted);margin-bottom:6px}.categories label{flex-direction:row;align-items:center;gap:10px;font-size:16px;color:var(--text);padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--panel-2)}.categories label.picked{border-color:var(--accent)}.categories input{width:20px;height:20px;margin:0}.contact{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media (max-width: 380px){.contact{grid-template-columns:1fr}}.send{font-size:18px;font-weight:700;padding:14px;color:#fff;border:none;border-radius:10px}.send.emergency{background:#ef4444}.send.question{background:#8b5cf6}.back{align-self:flex-start}.berth-error{color:#fca5a5;margin:0}.qr-sheet{padding:16px;overflow:auto;height:100%}.qr-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px;color:var(--muted)}.qr-toolbar strong{color:var(--text)}.qr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.qr-card{margin:0;background:#fff;color:#0b1220;border:1px dashed #94a3b8;border-radius:8px;padding:12px;text-align:center;break-inside:avoid;page-break-inside:avoid}.qr-card img{width:100%;max-width:200px;height:auto;display:block;margin:6px auto;image-rendering:pixelated}.qr-berth{font-size:26px;font-weight:800}.qr-card figcaption{font-size:12px;line-height:1.4}.qr-marina{margin-top:4px;color:#475569}@media print{@page{margin:10mm}html,body,#root,.qr-sheet{background:#fff;height:auto;overflow:visible}.no-print{display:none}.qr-grid{grid-template-columns:repeat(2,1fr);gap:8mm}.qr-card{border-color:#64748b}}
