/* SatPass styles (palette/patterns adapted from rf-toolbox) */
:root{--bg:#f4f6fb;--card:#fff;--fg:#0f172a;--muted:#5b6478;--line:#d9dee8;--inp:#fff;--acc:#0e7490;--acc2:#0891b2;--good:#15803d;--warn:#b45309;--bad:#b91c1c;--goodbg:#dcfce7;--warnbg:#fef3c7;--badbg:#fee2e2;--hdr:#0b1220;--hdrfg:#e2e8f0;--map-sea:#cfe3f1;--map-land:#e8e6d9;--map-coast:#8a9bb0;color-scheme:light}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0b1220;--card:#141d2f;--fg:#e2e8f0;--muted:#93a0b8;--line:#26334d;--inp:#0f172a;--acc:#22d3ee;--acc2:#0891b2;--good:#4ade80;--warn:#fbbf24;--bad:#f87171;--goodbg:#052e1a;--warnbg:#3a2a05;--badbg:#3b0d0d;--map-sea:#0e1a2e;--map-land:#1f2e47;--map-coast:#3b5075;color-scheme:dark}}
:root[data-theme=dark]{--bg:#0b1220;--card:#141d2f;--fg:#e2e8f0;--muted:#93a0b8;--line:#26334d;--inp:#0f172a;--acc:#22d3ee;--acc2:#0891b2;--good:#4ade80;--warn:#fbbf24;--bad:#f87171;--goodbg:#052e1a;--warnbg:#3a2a05;--badbg:#3b0d0d;--map-sea:#0e1a2e;--map-land:#1f2e47;--map-coast:#3b5075;color-scheme:dark}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;padding-bottom:calc(76px + env(safe-area-inset-bottom))}
body.has-banner{padding-bottom:calc(156px + env(safe-area-inset-bottom))}
.top{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:8px;background:var(--hdr);color:var(--hdrfg);padding:calc(8px + env(safe-area-inset-top)) 10px 8px;box-shadow:0 2px 8px #0005}
.top h1{flex:1;margin:0 0 0 6px;font-size:1.2rem;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hb{min-width:44px;min-height:44px;border:0;background:transparent;color:inherit;font-size:1.6rem;border-radius:10px;cursor:pointer}
.hb.sm{font-size:1.1rem}
.hb:active{background:#ffffff22}
.pill{font:inherit;font-size:.85rem;font-weight:650;min-height:44px;min-width:44px;padding:4px 12px;border-radius:999px;border:1px solid #ffffff55;background:transparent;color:inherit;cursor:pointer}
.pill:active{background:#ffffff22}
main{max-width:820px;margin:0 auto;padding:12px}
.tabs{position:fixed;left:0;right:0;bottom:0;z-index:15;display:flex;background:var(--hdr);padding-bottom:env(safe-area-inset-bottom);box-shadow:0 -2px 8px #0005}
.tabs a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:56px;color:#93a0b8;text-decoration:none;font-size:.72rem;gap:1px}
.tabs a span{font-size:1.25rem;line-height:1.1;filter:grayscale(.6)}
.tabs a.on{color:#22d3ee;font-weight:650}
.tabs a.on span{filter:none}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;margin:0 0 14px}
.card h2{margin:0 0 10px;font-size:1.1rem}
.card h3{font-size:1rem;margin:16px 0 4px}
.muted{color:var(--muted);font-weight:400;font-size:.85rem}
.field label{display:block;font-size:.85rem;color:var(--muted);margin-bottom:3px}
.fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.fields .wide{grid-column:1/-1}
@media (min-width:620px){.fields.f3{grid-template-columns:1fr 1fr 1fr}}
.ctl{display:flex;align-items:stretch;gap:6px}
.inp{font:inherit;font-size:17px;color:var(--fg);background:var(--inp);border:1px solid var(--line);border-radius:10px;min-height:46px;padding:8px 10px;min-width:0;width:100%;flex:1}
select.inp{appearance:auto}
.inp:focus{outline:2px solid var(--acc);outline-offset:1px}
.inp.bad{border-color:var(--bad)}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.btn{font:inherit;min-height:44px;padding:8px 14px;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--fg);cursor:pointer}
.btn.sm{min-height:38px;padding:6px 10px;font-size:.9rem}
.btn.primary{background:var(--acc2);border-color:var(--acc2);color:#fff}
.btn.block{display:block;width:100%}
.btn:disabled{opacity:.5}
.btn:active{filter:brightness(.92)}
.install{position:fixed;left:8px;right:8px;bottom:calc(64px + env(safe-area-inset-bottom));z-index:20;display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px;box-shadow:0 6px 24px #0006;max-width:744px;margin:0 auto}
.install[hidden]{display:none}
.install img{border-radius:9px}
.install .btn,.install .hb{min-height:44px;min-width:44px}
.toolbar select.inp{max-width:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}
@media (max-width:360px){.toolbar .inp{flex:1 1 100%}.toolbar select.inp{font-size:15px}}
.install .it{flex:1;display:flex;flex-direction:column;font-size:.85rem}
.install .it span{color:var(--muted)}
.update{background:var(--acc2);color:#fff;padding:8px 12px;display:flex;justify-content:center;align-items:center;gap:10px}
.update[hidden],.nextbar[hidden]{display:none}
.moved{background:#7a4b00;flex-wrap:wrap;text-align:center;font-size:.92em}.moved a{color:#fff;font-weight:700;text-decoration:underline}
.toast{position:fixed;left:50%;bottom:calc(76px + env(safe-area-inset-bottom));transform:translateX(-50%);background:#111827;color:#fff;padding:10px 16px;border-radius:999px;z-index:30;opacity:0;transition:opacity .2s;max-width:92vw;text-align:center}
.toast.show{opacity:1}
.nextbar{display:block;background:var(--card);border-bottom:1px solid var(--line);padding:8px 14px;font-size:.92rem;text-align:center;cursor:pointer;font-variant-numeric:tabular-nums}
.nextbar b{color:var(--acc)}
.nextbar.now{background:var(--goodbg);color:var(--good)}
.nextbar.soon{background:var(--warnbg)}
.banner{border-radius:12px;padding:10px 12px;margin:0 0 12px;font-size:.9rem;background:var(--card);border:1px solid var(--line)}
.banner.warn{background:var(--warnbg);border-color:var(--warn);color:var(--fg)}
.banner.bad{background:var(--badbg);border-color:var(--bad)}
.banner.good{background:var(--goodbg);border-color:var(--good)}
.banner .btn{margin-top:6px}
.err{color:var(--bad);background:var(--badbg);padding:10px;border-radius:10px;font-size:.9rem}
.tag{font-size:.7rem;padding:1px 6px;border-radius:6px;border:1px solid currentColor;vertical-align:middle;white-space:nowrap}
.tag.vis{color:#b45309;background:#fef3c7;border-color:#f59e0b}
.tag.good{color:var(--good)}.tag.warn{color:var(--warn)}.tag.bad{color:var(--bad)}.tag.acc{color:var(--acc)}
:root[data-theme=dark] .tag.vis,:root:not([data-theme=light]) .tag.vis{color:#fbbf24;background:#3a2a05}
@media (prefers-color-scheme:light){:root:not([data-theme=dark]) .tag.vis{color:#b45309;background:#fef3c7}}
.sec{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--acc);font-weight:700;margin:14px 0 6px}
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.toolbar .inp{flex:1 1 140px;min-height:42px;font-size:16px}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.seg button{font:inherit;font-size:.9rem;min-height:40px;padding:4px 12px;border:0;background:var(--bg);color:var(--fg);cursor:pointer}
.seg button.on{background:var(--acc2);color:#fff}
.dayh{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:14px 4px 6px}
.pass{display:grid;grid-template-columns:auto 1fr auto;gap:2px 12px;align-items:center;width:100%;text-align:left;font:inherit;color:inherit;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin:0 0 8px;cursor:pointer;min-height:64px}
.pass:active{filter:brightness(.95)}
.pass.live{border-color:var(--good);box-shadow:0 0 0 1px var(--good)}
.pass .el{grid-row:1/3;font-size:1.4rem;font-weight:700;color:var(--acc);min-width:52px;text-align:center;font-variant-numeric:tabular-nums}
.pass .el small{display:block;font-size:.65rem;color:var(--muted);font-weight:400}
.pass .t1{font-weight:650;font-variant-numeric:tabular-nums}
.pass .t2{font-size:.82rem;color:var(--muted);font-variant-numeric:tabular-nums}
.pass .tg{grid-row:1/3;display:flex;flex-direction:column;gap:3px;align-items:flex-end}
.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;margin:8px 0}
.kv div{background:var(--bg);border-radius:10px;padding:8px 10px;font-variant-numeric:tabular-nums}
.kv small{display:block;font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.kv b{font-size:1.02rem}
.kv .big b{font-size:1.4rem;color:var(--acc)}
.canvaswrap{display:flex;justify-content:center;margin:8px 0}
canvas{max-width:100%;display:block}
.tblwrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-height:420px;overflow-y:auto}
table{border-collapse:collapse;width:100%;font-size:.85rem;font-variant-numeric:tabular-nums}
th,td{padding:6px 6px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}
th:first-child,td:first-child{text-align:left}
th{position:sticky;top:0;background:var(--card);font-size:.75rem;color:var(--muted);text-transform:uppercase}
tr.cur td{background:var(--goodbg)}
.sat{display:flex;align-items:center;gap:8px;padding:8px 4px;border-bottom:1px solid var(--line)}
.sat .star{min-width:44px;min-height:44px;border:0;background:transparent;font-size:1.5rem;cursor:pointer;color:var(--muted)}
.sat .star.on{color:#fbbf24}
.sat .nm{flex:1;min-width:0;background:transparent;border:0;font:inherit;color:inherit;text-align:left;cursor:pointer;padding:0}
.sat .nm b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sat .nm span{font-size:.78rem;color:var(--muted)}
.note{font-size:.82rem;color:var(--muted);margin:8px 2px}
.disclaimer{font-size:.8rem;color:var(--muted);text-align:center;margin:18px 8px}
.link{color:var(--acc)}
.readout{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}
.readout div{background:var(--bg);border-radius:10px;padding:8px 10px;font-variant-numeric:tabular-nums}
.readout small{display:block;font-size:.7rem;color:var(--muted);text-transform:uppercase}
.readout b{font-size:1.15rem}
.readout .hot b{color:var(--good)}
.slider{width:100%;min-height:36px}
details.more{margin-top:10px}
details.more summary{cursor:pointer;color:var(--acc);font-weight:600;min-height:36px;display:flex;align-items:center}
textarea.inp{min-height:110px;font:13px/1.3 ui-monospace,Menlo,Consolas,monospace}
.dopp-big{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0}
.dopp-big div{background:var(--bg);border-radius:12px;padding:10px 12px}
.dopp-big small{display:block;font-size:.72rem;color:var(--muted);text-transform:uppercase}
.dopp-big b{font-size:1.25rem;color:var(--acc);font-variant-numeric:tabular-nums}
.dopp-big span{display:block;font-size:.82rem;color:var(--muted)}
@media (max-width:360px){.fields{grid-template-columns:1fr}}

/* categories + SAR radar panel (v1.1) */
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 10px}
.chip{border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:999px;padding:6px 12px;min-height:36px;font:inherit;font-size:.9rem;cursor:pointer}
.chip.on{background:var(--acc2);color:#fff;border-color:var(--acc2);font-weight:600}
.chip .cnt{opacity:.7;font-size:.78rem;margin-left:2px;font-variant-numeric:tabular-nums}
table.radar{width:100%;border-collapse:collapse;font-size:.92rem}
table.radar th{text-align:left;font-weight:500;color:var(--muted);vertical-align:top;padding:5px 10px 5px 0;width:38%}
table.radar td{padding:5px 0;word-break:break-word}
table.radar tr+tr th,table.radar tr+tr td{border-top:1px solid var(--line)}
.bad-txt{color:var(--warn)}
/* data sources (v1.2.0) */
.srcrow{border-top:1px solid var(--line);padding:10px 0}
.srchead{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.srchead .grow{flex:1}
.sw{display:inline-flex;gap:6px;align-items:center;font-size:.9rem}
.sw input{width:20px;height:20px}
.pwrow{display:flex;gap:6px}.pwrow .inp{flex:1;min-width:0}
.btn.danger{border-color:var(--bad);color:var(--bad)}
.okmsg{color:var(--good)}.badmsg{color:var(--bad)}
tr.mine{background:var(--goodbg)}
table.cmp td{vertical-align:top}
#srcCard h3{margin:16px 0 6px;font-size:1rem}
.sr-only{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;opacity:0}
