:root{--green:#123f32;--green2:#1d654d;--ink:#14201d;--paper:#f3f7f4;--card:#fff;--line:#d5dfda;--amber:#a66000;--red:#a12b2b;--muted:#60716b}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--paper);color:var(--ink)}a{color:var(--green2)}.site-header{background:var(--green);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:10px 22px;gap:18px;position:sticky;top:0;z-index:5}.brand{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none;font-weight:800}.brand img{width:62px;height:62px;object-fit:contain;background:#fff;border-radius:50%}.site-header nav{display:flex;gap:8px;flex-wrap:wrap}.site-header nav a{color:#fff;text-decoration:none;padding:9px 10px;border-radius:8px}.site-header nav a:hover{background:#ffffff18}.wrap{max-width:1180px;margin:28px auto;padding:0 18px}.hero{display:flex;justify-content:space-between;align-items:end;gap:18px;margin-bottom:20px}.hero h1{margin:0}.muted{color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.grid.two{grid-template-columns:repeat(2,1fr)}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px;box-shadow:0 8px 22px #143d2e0a;margin-bottom:18px}.stat .label{color:var(--muted)}.stat .value{font-size:1.5rem;font-weight:800;margin-top:4px}.ok{color:#16733e;font-weight:700}.warn{color:var(--amber);font-weight:700}.bad{color:var(--red);font-weight:700}.button,button{display:inline-block;border:0;border-radius:9px;background:var(--green2);color:#fff;padding:10px 14px;font-weight:700;text-decoration:none;cursor:pointer}.button.secondary{background:#e6eee9;color:var(--green)}.button.danger{background:var(--red)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:11px 8px;border-bottom:1px solid #e6ece8;vertical-align:top}th{font-size:.85rem;color:var(--muted)}label{font-weight:700;display:block;margin-bottom:5px}input,select,textarea{width:100%;padding:10px;border:1px solid #bccbc4;border-radius:8px;background:#fff;font:inherit}textarea{min-height:90px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.form-grid .full{grid-column:1/-1}.checks{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.check{display:flex;gap:8px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:9px}.check input{width:auto}.pill{display:inline-block;padding:4px 8px;border-radius:999px;background:#e7efeb;font-size:.8rem}.notice{padding:12px 14px;border-radius:9px;background:#fff7df;border:1px solid #efd99c;margin-bottom:15px}.site-footer{text-align:center;color:var(--muted);padding:30px 16px}.login-shell{max-width:460px;margin:7vh auto;padding:18px}.login-logo{display:block;width:210px;max-width:70%;margin:0 auto 18px}.top{background:var(--green);color:#fff;padding:16px 24px}.top a{color:#fff}.nav a{margin-left:12px}@media(max-width:760px){.site-header{align-items:flex-start;flex-direction:column}.brand img{width:48px;height:48px}.grid,.grid.two,.form-grid{grid-template-columns:1fr}.checks{grid-template-columns:1fr}.hero{align-items:flex-start;flex-direction:column}table{display:block;overflow-x:auto}}

.notification-nav{position:relative}.notification-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .3rem;margin-left:.2rem;border-radius:999px;background:#fff;color:#8a1f1f;font-size:.72rem;font-weight:900;vertical-align:top}.notification-list{display:grid;gap:.65rem}.notification-item{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.8rem .9rem;border:1px solid var(--line);border-left:5px solid var(--personal-accent,var(--green2));border-radius:.6rem;text-decoration:none;color:inherit}.notification-item>span:first-child{display:grid;gap:.12rem}.notification-urgent{border-left-color:var(--red)}.notification-soon{border-left-color:var(--amber)}.notification-action{border-left-color:var(--personal-accent,var(--green2))}

.readiness-card{border-left:5px solid var(--line)}.readiness-card.ready-ok{border-left-color:#16733e}.readiness-card.ready-bad{border-left-color:var(--red)}.readiness-card .value{font-size:1.45rem;font-weight:800;margin:.25rem 0}.readiness-good{padding:1rem;border-radius:.7rem;background:#edf8f0;border:1px solid #b8ddc3}.readiness-actions{margin:.4rem 0 0;padding-left:1.3rem}.readiness-actions li{margin:.55rem 0}.readiness-table{display:grid;gap:.5rem}.readiness-row{display:flex;align-items:center;gap:1rem;justify-content:space-between;padding:.75rem;border-bottom:1px solid var(--line);flex-wrap:wrap}.readiness-row strong{margin-right:auto}@media(max-width:760px){.readiness-row{align-items:flex-start;flex-direction:column}.readiness-row strong{margin-right:0}}

.compliance-table-wrap{overflow-x:auto}.compliance-table{min-width:1050px}.compliance-pill{display:inline-block;padding:.28rem .5rem;border-radius:999px;font-size:.78rem;font-weight:800;white-space:nowrap}.compliance-pill.ok{background:#e5f5e9;color:#126232}.compliance-pill.warn{background:#fff1cf;color:#805300}.compliance-pill.bad{background:#f9e0e0;color:#8b2020}.compliance-pill.none{background:#edf0ef;color:#64706b}


/* v0.13.5.2 — restore Route Library / Leaflet map sizing lost in later stylesheet replacement */
.route-map{width:100%;height:560px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#e8eeea}
.map-note{margin:10px 0 0}
.card h2{margin-top:0}
@media(max-width:760px){.route-map{height:420px}}


/* v0.13.5.5 compact responsive navigation + Leaflet stacking fix */
.site-header{z-index:2000}
.menu-toggle{display:none;width:auto;flex:0 0 auto;padding:9px 12px;border:1px solid #ffffff55;background:#ffffff18;color:inherit;align-items:center;gap:7px}
.menu-toggle:hover{background:#ffffff2b}
.menu-toggle-text{font-size:.9rem}
.leaflet-container{z-index:1}
.leaflet-control{z-index:400}
@media(max-width:900px){
 .site-header{padding:8px 12px;flex-direction:row;align-items:center;gap:10px}
 .brand{min-width:0;flex:1}
 .brand img{width:42px;height:42px}
 .brand span{font-size:.95rem;line-height:1.1}
 .menu-toggle{display:inline-flex}
 .site-header .portal-nav{display:none;position:absolute;top:100%;left:0;right:0;background:var(--personal-accent,var(--green));padding:8px 12px 12px;box-shadow:0 10px 24px #0003;max-height:calc(100vh - 64px);overflow-y:auto;z-index:2100;gap:4px}
 .site-header .portal-nav.open{display:grid;grid-template-columns:1fr 1fr}
 .site-header .portal-nav a{display:block;margin:0;padding:11px 12px;border-radius:8px}
}
@media(max-width:480px){
 .site-header .portal-nav.open{grid-template-columns:1fr}
 .brand span{font-size:.88rem}
}


/* v0.13.5.6 consistent action-link buttons */
.card a:not(.button):not(.pill):not(.dashboard-task):not([class*="route"]):not([class*="calendar"]),
.hero a:not(.button):not(.brand),
.planner-row a:not(.button),
table td a:not(.button):not(.pill){
 display:inline-block;
 border-radius:9px;
 background:#e6eee9;
 color:#14201d;
 padding:9px 12px;
 font-weight:700;
 text-decoration:none;
 line-height:1.2;
 margin:2px 3px 2px 0;
}
.card a:not(.button):not(.pill):not(.dashboard-task):not([class*="route"]):not([class*="calendar"]):hover,
.hero a:not(.button):not(.brand):hover,
.planner-row a:not(.button):hover,
table td a:not(.button):not(.pill):hover{
 filter:brightness(.96);
 text-decoration:none;
}

/* Ten Tors 2026 official River State Tables */
.river-state-banner{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.8rem;padding:.65rem max(1rem,calc((100vw - 1180px)/2));background:#f3f3f1;color:#26302c;border-bottom:2px solid #747b78;text-decoration:none}
.river-state-banner:hover{background:#e9ece9}.river-state-banner strong{font-size:.92rem;white-space:nowrap}.river-state-banner>span:nth-child(2){font-size:.82rem}
.river-banner-key{display:flex;gap:.28rem;align-items:center}.river-banner-key i{font-style:normal;color:var(--river-colour);font-weight:900;font-size:1.25rem;display:inline-flex;gap:.05rem;align-items:center}.river-banner-key b{font-size:.78rem}.river-banner-key .allowed,.tt-river-result.allowed{color:#009640}.river-banner-key .closed,.tt-river-result.closed{color:#e1251b}
.tt-river-state-card{border-top:5px solid #747b78}.tt-river-matrix{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:.5rem;margin-top:1rem}.tt-river-cell{display:grid;grid-template-columns:34px 1fr 28px;align-items:center;gap:.45rem;border:1px solid #ccd3cf;border-radius:8px;padding:.55rem;background:#fff}.tt-river-symbol{color:var(--river-colour);font-weight:900;font-size:1.55rem;text-align:center;line-height:1}.tt-river-symbol.crossing{font-size:2rem}.tt-river-name{font-size:.86rem;font-weight:700}.tt-river-result{font-size:1.5rem;text-align:center}.river-state-buttons{display:flex;gap:.6rem;flex-wrap:wrap}
@media(max-width:800px){.river-state-banner{grid-template-columns:1fr auto;padding:.55rem .8rem}.river-state-banner>span:nth-child(2){grid-column:1/-1;order:3}.river-banner-key{justify-self:end}.tt-river-matrix{grid-template-columns:1fr}.tt-river-cell{grid-template-columns:38px 1fr 30px}}

/* Nearby Environment Agency river gauges — retained separately from Ten Tors event River State */
.river-gauge-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.7rem;margin-top:.8rem}
.river-gauge{display:grid;grid-template-columns:1fr auto;gap:.35rem .8rem;align-items:center;border:1px solid #ccd3cf;border-left:5px solid #7d8782;border-radius:9px;padding:.75rem;background:#fff}
.river-gauge>div:last-child{grid-column:1/-1}.river-gauge-reading{font-size:1.2rem;font-weight:800}
.river-gauge.normal{border-left-color:#1f8b4c}.river-gauge.high{border-left-color:#c83a2a}.river-gauge.low{border-left-color:#3478b8}

/* MOD Dartmoor firing programme */
.firing-times-shortcut{display:block;text-align:center;padding:.32rem .7rem;background:#fff3cd;color:#503d00;border-bottom:1px solid #d8c271;font-size:.82rem;font-weight:800;text-decoration:none}
.firing-grid{display:grid;grid-template-columns:repeat(3,minmax(170px,1fr));gap:.65rem;margin:.8rem 0}.firing-range{border:1px solid #cbd2cf;border-left:6px solid #7b8580;border-radius:9px;padding:.75rem;background:#fff;display:flex;flex-direction:column;gap:.25rem}.firing-range.clear{border-left-color:#198754;background:#f2fbf5}.firing-range.warn{border-left-color:#e0a800;background:#fff9df}.firing-range.danger{border-left-color:#c92a2a;background:#fff0f0}.firing-range.unknown{border-left-color:#7b8580}.firing-range span{font-size:.9rem}.firing-grid.compact .firing-range{padding:.6rem}
@media(max-width:700px){.firing-grid{grid-template-columns:1fr}}

.team-action-buttons{display:flex;gap:.45rem;flex-wrap:wrap;align-items:center}.team-action-buttons .secondary{white-space:nowrap}

/* External map-layer tabs: keep Leaflet controls off the map itself. */
.map-layer-tabs{display:flex;gap:.35rem;flex-wrap:wrap;margin:.45rem 0 .65rem}
.map-layer-tabs button{border:1px solid #b9c2bd;background:#f4f6f5;color:#27322d;border-radius:999px;padding:.45rem .85rem;font-weight:750;cursor:pointer}
.map-layer-tabs button:hover{background:#e8ecea}.map-layer-tabs button.active{background:#263a31;color:#fff;border-color:#263a31}
@media(max-width:600px){.map-layer-tabs{display:grid;grid-template-columns:repeat(3,1fr)}.map-layer-tabs button{padding:.45rem .3rem;font-size:.78rem}}

/* Async walk safety panels: external services never block the main Walk page. */
.safety-loading{display:flex;align-items:center;gap:.6rem;padding:.8rem 0;color:#68736d}
.safety-spinner{width:18px;height:18px;border:2px solid #c9d0cc;border-top-color:#334a3f;border-radius:50%;animation:safety-spin .8s linear infinite;flex:0 0 auto}
@keyframes safety-spin{to{transform:rotate(360deg)}}

/* v0.20.4.0 regression guard: base-map selection belongs in the tabs above maps, never over the map. */
.leaflet-control-layers{display:none!important}
