:root{--bg:#f4f6fb;--card:#fff;--ink:#0a0a0a;--mute:#4a5568;--line:#d3d9e6;--acc:#1556d6;--accfg:#fff;--warn:#c62828;--ok:#14702f;--tint:#e6eeff;--black:#000}
@media (prefers-color-scheme:dark){:root{--bg:#000;--card:#0d0d0d;--ink:#fff;--mute:#a3acba;--line:#262f3f;--acc:#4d8dff;--accfg:#000;--warn:#ff7b72;--ok:#5fd37f;--tint:#0f1c36}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.45 "Segoe UI",system-ui,-apple-system,Roboto,sans-serif;padding-bottom:env(safe-area-inset-bottom)}
h1,h2,h3{font-family:Georgia,"Times New Roman",serif;margin:0 0 .5rem;font-weight:700}
h1{font-size:26px}h2{font-size:20px}h3{font-size:16px}
.skip{position:absolute;left:-999px}.skip:focus{left:8px;top:8px;background:var(--acc);color:var(--accfg);padding:8px;z-index:50}
a{color:var(--acc)}
.muted{color:var(--mute);font-size:13px}
header.top{background:var(--black);color:#fff;padding:calc(12px + env(safe-area-inset-top)) 16px 0}
.top .row{max-width:1100px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.top h1{color:#fff;margin:0;font-size:22px}
.top .who{font-size:13px;color:#c9d3e6;display:flex;gap:10px;align-items:center}
nav.tabs{max-width:1100px;margin:8px auto 0;display:flex;gap:2px;overflow-x:auto}
nav.tabs a{color:#c9d3e6;text-decoration:none;padding:10px 14px;border-bottom:3px solid transparent;white-space:nowrap;position:relative}
nav.tabs a[aria-current=page]{color:#fff;border-color:#4d8dff}
nav.tabs a:focus-visible{outline:2px solid #4d8dff;outline-offset:-2px}
.badge{display:inline-block;min-width:18px;padding:0 5px;border-radius:9px;background:#4d8dff;color:#000;font-size:11px;font-weight:700;text-align:center;margin-left:4px}
main{max-width:1100px;margin:auto;padding:16px}
.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
@media(max-width:860px){.grid{grid-template-columns:1fr}}
.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:16px;margin-bottom:16px}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:16px}
.tile{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:10px 12px;text-decoration:none;color:inherit;display:block}
.tile b{display:block;font:700 22px Georgia,serif}.tile span{color:var(--mute);font-size:13px}
label{display:block;font-size:13px;color:var(--mute);margin-bottom:10px}
input,select,textarea{width:100%;margin-top:3px;padding:9px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--ink);font:inherit}
input[type=checkbox]{width:auto;margin:0 6px 0 0}
label.chk{display:flex;align-items:center;color:var(--ink);font-size:14px}
textarea{resize:vertical}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:480px){.row2{grid-template-columns:1fr}}
button,.btn{font:inherit;cursor:pointer;border-radius:6px;border:1px solid var(--line);background:var(--card);color:var(--ink);padding:7px 12px;text-decoration:none;display:inline-block}
button.p,.btn.p{background:var(--acc);color:var(--accfg);border-color:var(--acc);font-weight:600}
button.danger{color:var(--warn);border-color:var(--warn)}
button:disabled{opacity:.5;cursor:not-allowed}
.acts{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:8px}
.big button,.big .btn{font-size:16px;padding:12px 16px}
.msg{padding:9px 11px;border-radius:6px;margin:8px 0;font-size:14px;background:var(--tint)}
.msg.err{background:color-mix(in srgb,var(--warn) 15%,transparent);color:var(--warn)}
.chip{display:inline-block;padding:2px 9px;border-radius:12px;font-size:12px;font-weight:600;background:var(--tint);color:var(--acc);white-space:nowrap}
.chip.ok{background:color-mix(in srgb,var(--ok) 18%,transparent);color:var(--ok)}
.chip.warn{background:color-mix(in srgb,var(--warn) 15%,transparent);color:var(--warn)}
.chip.dark{background:var(--ink);color:var(--bg)}
.item{border:1px solid var(--line);border-left:5px solid var(--acc);border-radius:6px;padding:10px;margin-bottom:8px;display:block;color:inherit;text-decoration:none;background:var(--card)}
a.item:hover{background:var(--tint)}
.item.done{border-left-color:var(--mute);opacity:.75}.item.alert{border-left-color:var(--warn)}
.item .top2{display:flex;justify-content:space-between;gap:8px;font-weight:600;flex-wrap:wrap}
.lines{width:100%;border-collapse:collapse}.lines td{padding:3px 0}.lines td:last-child{text-align:right}.lines tr.t td{border-top:1px solid var(--line);font-weight:700;padding-top:6px}
table.t{width:100%;border-collapse:collapse}.t th,.t td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);font-size:13px;vertical-align:top}
.scroll{overflow-x:auto}
.map{height:320px;border:1px solid var(--line);border-radius:8px;margin:8px 0;z-index:0}
.mk{width:20px;height:20px;border-radius:50%;border:3px solid #fff;box-shadow:0 0 0 2px #000}
.mk.pk{background:#000}.mk.dp{background:#fff;border-color:#1556d6;box-shadow:0 0 0 2px #fff}.mk.dv{background:#1556d6;box-shadow:0 0 0 2px #fff,0 0 0 5px rgba(21,86,214,.35)}.mk.cu{background:#fff;border-color:#000;box-shadow:0 0 0 2px #1556d6}
.leaflet-container{font:inherit}
@media (prefers-color-scheme:dark){.leaflet-tile-pane{filter:invert(1) hue-rotate(180deg) brightness(.9) contrast(.9)}}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal .hd{font-size:12px;color:var(--mute);text-align:center}
.cal button{min-height:52px;text-align:left;display:flex;flex-direction:column;justify-content:space-between;padding:4px;font-size:13px}
.cal button.o{opacity:.45}.cal button.today{border:2px solid var(--acc)}.cal button.sel{background:var(--acc);color:var(--accfg)}
.cal i{font-style:normal;background:var(--acc);color:var(--accfg);border-radius:9px;padding:0 6px;font-size:11px;align-self:flex-end}
.cal button.sel i{background:var(--accfg);color:var(--acc)}
.chat{max-height:320px;overflow-y:auto;border:1px solid var(--line);border-radius:6px;padding:8px;background:var(--bg)}
.bub{max-width:85%;margin:6px 0;padding:7px 10px;border-radius:12px;background:var(--card);border:1px solid var(--line)}
.bub.me{margin-left:auto;background:var(--tint)}
.bub small{display:block;color:var(--mute);font-size:11px}
.bub audio{width:230px;max-width:100%;display:block;margin-top:4px}
.auth{max-width:420px;margin:8vh auto;padding:0 16px}
.auth .tabs2{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.auth .tabs2 button[aria-pressed=true]{background:var(--acc);color:var(--accfg);border-color:var(--acc)}
.hero{background:var(--black);color:#fff;border-radius:8px;padding:20px;margin-bottom:12px}.hero h1{color:#fff}.hero p{margin:0;color:#c9d3e6}
#toasts{position:fixed;left:0;right:0;bottom:calc(12px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none;z-index:60}
.toast{background:#000;color:#fff;padding:9px 14px;border-radius:6px;max-width:92vw;box-shadow:0 2px 10px rgba(0,0,0,.3);border:1px solid #4d8dff}.toast.err{border-color:#ff7b72}
@media (prefers-reduced-motion:no-preference){.toast{animation:in .2s}@keyframes in{from{opacity:0;transform:translateY(6px)}}}
.hbar{display:grid;grid-template-columns:minmax(90px,35%) 1fr 48px;gap:8px;align-items:center;margin:4px 0;font-size:14px}
.hbar .tr{background:#e8edf7;border-radius:4px;height:14px;overflow:hidden}.hbar .tr span{display:block;height:100%;background:#1556d6}
.hbar .lb{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hbar .n{text-align:right;color:#4a5568}
.cols{display:flex;align-items:flex-end;gap:3px;height:110px;margin:8px 0 2px}.cols div{flex:1;background:#1556d6;border-radius:3px 3px 0 0;min-height:2px}.cols div.mx{background:#000}
.axis{display:flex;gap:3px;font-size:10px;color:#4a5568}.axis span{flex:1;text-align:center}
.rec{border-left:4px solid #1556d6;padding:6px 12px;margin:10px 0;background:#f4f7fd;border-radius:0 6px 6px 0}.rec b{display:block;margin-bottom:2px}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 8px}.chips button{font-size:13px;padding:4px 10px}
