:root { --forest:#0f5c4c; --ink:#14241f; --muted:#64746d; --paper:#f7f9f6; --line:#e2e9e4; --good:#198754; --bad:#c2413a; --shadow:0 8px 28px rgba(21,48,39,.12); }
* { box-sizing:border-box; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
button,a { font:inherit; }
button { cursor:pointer; }
.splash-screen { position:fixed; z-index:2000; inset:0; display:grid; place-items:center; padding:32px; background:#fff; opacity:1; visibility:visible; transition:opacity .35s ease, visibility 0s linear .35s; }
.splash-screen.is-hidden { opacity:0; visibility:hidden; pointer-events:none; }
.splash-logo { display:block; width:min(72vw,390px); max-height:72svh; object-fit:contain; }
.app-shell { min-height:100svh; max-width:720px; margin:auto; background:#fff; }
.topbar { display:flex; justify-content:space-between; align-items:center; padding:19px 18px 15px; }
.brand { display:flex; align-items:center; gap:8px; min-width:0; }
.brand-mark { display:block; width:28px; height:39px; overflow:hidden; flex:0 0 auto; }
.brand-mark img { display:block; width:58px; max-width:none; transform:translate(-17px,-3px); }
.eyebrow { margin:0 0 3px; color:var(--forest); font-size:.72rem; font-weight:750; letter-spacing:.1em; text-transform:uppercase; }
h1 { margin:0; font-size:1.52rem; letter-spacing:-.04em; }
.location-button { border:1px solid #cee0d8; border-radius:999px; background:#f0f8f4; color:var(--forest); padding:8px 10px; font-size:.82rem; font-weight:700; }
.location-button span:first-child { font-size:1.12rem; margin-right:3px; vertical-align:-1px; }
.filters { display:flex; gap:8px; overflow:auto; padding:0 18px 15px; scrollbar-width:none; }
.filter { flex:0 0 auto; border:1px solid var(--line); background:white; color:#51615a; border-radius:99px; padding:8px 12px; font-size:.84rem; font-weight:650; }
.filter.is-active { background:var(--forest); color:white; border-color:var(--forest); }
.map-section { height:47svh; min-height:330px; position:relative; }
#map { width:100%; height:100%; z-index:0; }
.map-key { position:absolute; right:12px; bottom:13px; z-index:400; border-radius:9px; background:rgba(255,255,255,.94); box-shadow:0 2px 10px rgba(0,0,0,.12); padding:8px 10px; display:grid; gap:5px; font-size:.72rem; font-weight:650; }
.key-dot { display:inline-block; height:9px; width:9px; margin-right:3px; border-radius:50%; border:1px solid white; box-shadow:0 0 0 1px rgba(0,0,0,.2); }.operational { background:var(--good); }.unavailable { background:var(--bad); }.location { background:#1677d2; }
.pin { width:35px; height:35px; border-radius:50% 50% 50% 0; transform:rotate(-45deg); display:grid; place-items:center; border:3px solid #fff; box-shadow:0 2px 7px rgba(0,0,0,.28); }.pin::after { content:""; width:9px; height:9px; border-radius:50%; background:white; }.pin.good { background:var(--good); }.pin.bad { background:var(--bad); }.pin.neutral { background:#2979b9; }
.marker-cluster-small,.marker-cluster-medium,.marker-cluster-large { background:rgba(15,92,76,.25); }
.marker-cluster-small div,.marker-cluster-medium div,.marker-cluster-large div { background:var(--forest); color:#fff; font-weight:800; }
.point-panel { padding:18px; min-height:188px; }.empty-state { display:flex; align-items:center; gap:13px; color:var(--muted); }.empty-state h2,.point-detail h2 { margin:0; font-size:1.1rem; letter-spacing:-.025em; }.empty-state p { margin:4px 0 0; font-size:.88rem; line-height:1.4; }.empty-icon { color:var(--forest); font-size:2.1rem; }
.detail-topline { display:flex; justify-content:space-between; align-items:center; gap:8px; }.type-tag { color:var(--forest); font-size:.73rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }.status-badge { padding:5px 9px; border-radius:99px; font-size:.75rem; font-weight:750; }.status-badge.operational { color:#08643b; background:#e2f5e9; }.status-badge.unavailable { color:#a42e29; background:#fbe8e6; }.status-badge.unknown { color:#185b8d; background:#e6f1f8; }.point-detail h2 { margin-top:9px; font-size:1.28rem; }.detail-place,.updated-at { margin:5px 0 0; color:var(--muted); font-size:.88rem; }.updated-at { font-size:.77rem; }.actions { display:flex; gap:9px; margin-top:17px; }.navigate-button,.report-button,.submit-report { flex:1; display:flex; justify-content:center; align-items:center; min-height:42px; border-radius:9px; padding:10px; text-decoration:none; font-size:.87rem; font-weight:750; }.navigate-button { color:white; background:var(--forest); }.report-button { border:1px solid #bad5c9; color:var(--forest); background:#fff; }
dialog { width:min(calc(100% - 32px),440px); border:0; border-radius:17px; padding:0; box-shadow:0 18px 55px rgba(0,0,0,.25); }dialog::backdrop { background:rgba(8,29,21,.52); }dialog form { position:relative; padding:25px; }dialog h2 { margin:0; letter-spacing:-.03em; }.dialog-description { color:var(--muted); font-size:.88rem; line-height:1.4; }fieldset { display:grid; gap:9px; border:0; padding:8px 0 18px; margin:0; }.status-choice { display:flex; gap:11px; align-items:center; border:1px solid var(--line); border-radius:10px; padding:12px; cursor:pointer; }.status-choice:has(input:checked) { border-color:var(--forest); background:#f3faf6; }.status-choice input { accent-color:var(--forest); }.status-choice span { display:grid; gap:2px; }.status-choice small { color:var(--muted); font-size:.76rem; }.submit-report { width:100%; border:0; color:white; background:var(--forest); }.close-dialog { position:absolute; right:13px; top:10px; border:0; background:transparent; color:#56665f; font-size:1.75rem; }
.toast { position:fixed; z-index:1000; bottom:20px; left:50%; transform:translate(-50%,130px); width:max-content; max-width:calc(100% - 32px); border-radius:9px; background:#17332a; color:white; padding:11px 15px; font-size:.86rem; box-shadow:var(--shadow); transition:transform .25s ease; }.toast.is-visible { transform:translate(-50%,0); }
@media (min-width:721px) { body { padding:20px; } .app-shell { box-shadow:var(--shadow); border-radius:18px; overflow:hidden; } .map-section { height:440px; } }
@media (prefers-reduced-motion: reduce) { .splash-screen { transition:none; } }
