:root{color-scheme:dark;--bg: #0b0f14;--card: #151c26;--card-border: #223047;--text: #e8eef5;--muted: #9db0c3;--accent: #38bdf8;--ok: #34d399;--warn: #fbbf24;--err: #f87171;--chiclet: #1b2534;--chiclet-on: #0e3a52}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.4;-webkit-tap-highlight-color:transparent}.shell{max-width:640px;margin:0 auto;padding:1rem 1rem 1.5rem;min-height:calc(100dvh - 300px)}.centered{text-align:center;padding-top:4rem}.hero-img{display:block;width:100%;height:auto;max-height:340px;object-fit:contain;object-position:center;background:#080c14}h1{font-size:1.6rem;margin:.5rem 0}h2{font-size:1.05rem;margin:0 0 .75rem;color:var(--accent);text-transform:uppercase;letter-spacing:.04em}.card{background:var(--card);border:1px solid var(--card-border);border-radius:12px;padding:1rem;margin-bottom:1rem}.muted{color:var(--muted);font-size:.85rem}.ok{color:var(--ok)}.err{color:var(--err)}.tabbar{position:sticky;top:0;z-index:10;display:flex;gap:.25rem;align-items:center;background:var(--bg);padding:.5rem 1rem;border-bottom:1px solid var(--card-border);max-width:640px;margin:0 auto}.tab{flex:1;padding:.6rem .5rem;border:1px solid var(--card-border);border-radius:10px;background:transparent;color:var(--muted);font-size:1rem;min-height:44px}.tab.active{background:var(--chiclet-on);color:var(--text);border-color:var(--accent)}.conn{display:flex;align-items:center;gap:.35rem;font-size:.8rem;color:var(--muted);white-space:nowrap}.conn-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.conn-dot.ok{background:var(--ok)}.conn-dot.warn{background:var(--warn)}.conn-dot.err{background:var(--err)}label.field{display:block;margin-top:.75rem;font-size:.85rem;color:var(--muted)}input[type=text],input[type=email],input[type=number],select{display:block;width:100%;margin-top:.25rem;padding:.7rem;font-size:1.05rem;background:#0e141d;color:var(--text);border:1px solid var(--card-border);border-radius:8px;min-height:48px}input:focus,select:focus{outline:2px solid var(--accent)}.btn-primary,.btn-secondary{margin-top:.75rem;width:100%;padding:.8rem;font-size:1.05rem;border-radius:10px;border:none;min-height:48px}.btn-primary{background:var(--accent);color:#06202e;font-weight:700}.btn-secondary{background:var(--chiclet);color:var(--text);border:1px solid var(--card-border)}.btn-link{background:none;border:none;color:var(--accent);padding:.25rem 0;font-size:.85rem;margin-top:.5rem}.station-id-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}.station-id{font-size:1.4rem;font-weight:700;letter-spacing:.03em}.type-buttons{display:flex;gap:.4rem}.type-btn{padding:.5rem .8rem;border-radius:10px;border:1px solid var(--card-border);background:var(--chiclet);color:var(--muted);min-height:44px}.type-btn.selected{background:var(--chiclet-on);color:var(--text);border-color:var(--accent)}.type-btn:disabled{opacity:.4}.gps-box{display:flex;align-items:center;gap:.6rem;margin-bottom:.5rem}.grid-value{font-size:1.5rem;font-weight:700;font-family:ui-monospace,monospace}.source-badge{font-size:.7rem;padding:.15rem .5rem;border-radius:999px;border:1px solid var(--card-border);color:var(--muted);text-transform:uppercase}.source-badge.gps{color:var(--ok);border-color:var(--ok)}.source-badge.logger{color:var(--accent);border-color:var(--accent)}.band-chiclets{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.chiclet{display:flex;flex-direction:column;align-items:center;min-width:64px;min-height:52px;padding:.35rem .5rem;background:var(--chiclet);border:1px solid var(--card-border);border-radius:10px;color:var(--muted)}.chiclet.on{background:var(--chiclet-on);color:var(--text);border-color:var(--accent)}.chiclet-label{font-weight:700;font-size:.95rem}.chiclet-key{font-size:.68rem;opacity:.75}.optional-toggle{display:flex;gap:.4rem;align-items:center;color:var(--muted);font-size:.85rem;margin-left:.25rem}.freq-row{display:flex;align-items:baseline;gap:.6rem}.freq-value{font-size:1.5rem;font-weight:700;font-family:ui-monospace,monospace}.qso-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-top:.75rem}.qso-row .btn-secondary{width:auto;margin-top:0;padding:.5rem 1rem}.beam-rose{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;max-width:420px}.rose-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:64px;background:var(--chiclet);border:1px solid var(--card-border);border-radius:12px;color:var(--muted)}.rose-btn.selected{background:var(--chiclet-on);color:var(--text);border-color:var(--accent)}.rose-deg{font-size:1.05rem;font-weight:700}.rose-arrow{font-size:1rem;line-height:1}.wake-row{display:flex;align-items:center;gap:.5rem}.wake-row input{width:22px;height:22px}.live-list{display:flex;flex-direction:column;gap:.5rem;min-height:0}.list-scroll{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--card-border);border-radius:12px;overflow-y:auto;max-height:calc(100dvh - 240px);overscroll-behavior:contain}.list-header{position:sticky;top:0;z-index:2;display:grid;grid-template-columns:1.4fr 1fr .9fr .6fr .8fr;gap:.25rem;background:#101722;padding:.45rem .75rem;border-bottom:1px solid var(--card-border)}.lh{background:none;border:none;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;text-align:left;padding:0;cursor:pointer;user-select:none;white-space:nowrap}.station-row{display:flex;flex-direction:column;gap:.15rem;padding:.5rem .75rem;text-align:left;background:none;border:none;border-bottom:1px solid #1a2331;color:var(--text);width:100%}.station-row:last-child{border-bottom:none}.station-row:active{background:#1a2331}.station-row.stale{opacity:.45}.station-row.beam-they{box-shadow:inset 3px 0 0 var(--accent)}.station-row.beam-mutual{box-shadow:inset 3px 0 0 var(--ok);background:#34d3990d}.sr1{display:flex;align-items:center;gap:.6rem}.sr1 .qso-timer{margin-left:auto}.call-cell{display:flex;align-items:center;gap:.35rem}.call-text{font-weight:700;font-size:1.02rem}.away-dot{color:var(--warn);font-size:.75rem}.dim{color:var(--muted);font-size:.85rem}.qso-timer{color:var(--ok);font-size:.85rem}.sr2{display:flex;align-items:center;gap:.6rem;font-size:.92rem}.freq-text{font-weight:600}.relation{font-size:.75rem;flex:1;text-align:center}.relation.mutual{color:var(--ok);font-weight:700}.relation.they-point{color:var(--accent)}.dist-text{margin-left:auto;color:var(--muted)}.sr3{display:flex;flex-wrap:wrap;gap:.25rem;padding-top:.1rem}.band-dot{font-size:.62rem;padding:.04rem .32rem;border-radius:4px;background:#101722;color:var(--muted);border:1px solid var(--card-border)}.band-dot.shared{color:var(--text);border-color:var(--muted)}@media(max-width:400px){.sr1 .dim{display:none}}.list-table-wrap,.list-cards,.list-table,.list-card,.card-top,.card-mid,.card-bot{display:none!important}.filter-bar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;background:var(--card);border:1px solid var(--card-border);border-radius:10px;padding:.6rem}.filter-bar select{width:auto;min-width:120px;margin:0;min-height:40px;padding:.35rem .5rem;font-size:.9rem}.filter-toggle{display:flex;align-items:center;gap:.3rem;color:var(--muted);font-size:.85rem}.filter-toggle input{width:18px;height:18px}.filter-count{margin-left:auto;color:var(--muted);display:flex;align-items:center;gap:.4rem}.list-table-wrap{overflow-x:auto;border-radius:12px;border:1px solid var(--card-border)}.list-table{width:100%;border-collapse:collapse;background:var(--card);font-size:.9rem}.list-table th{text-align:left;padding:.6rem .5rem;color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;cursor:pointer;user-select:none;border-bottom:1px solid var(--card-border);white-space:nowrap}.list-table td{padding:.55rem .5rem;border-bottom:1px solid #1a2331}.list-row{cursor:pointer}.list-row:hover{background:#1a2331}.mono{font-family:ui-monospace,monospace;white-space:nowrap}.call-cell{display:flex;align-items:center;gap:.4rem;font-weight:700}.call-text{font-weight:700}.away-dot{color:var(--warn);font-size:.8rem}.qso-timer{color:var(--ok)}.list-row.stale,.list-card.stale{opacity:.45}.list-row.beam-they{box-shadow:inset 3px 0 0 var(--accent)}.list-row.beam-mutual{box-shadow:inset 3px 0 0 var(--ok);background:#34d3990f}.band-dots{display:flex;flex-wrap:wrap;gap:.2rem}.band-dot{font-size:.62rem;padding:.05rem .3rem;border-radius:4px;background:var(--chiclet);color:var(--muted);border:1px solid var(--card-border)}.band-dot.current{background:var(--chiclet-on);color:var(--text);border-color:var(--accent)}.band-dot.none{color:var(--err)}.list-cards{display:none;flex-direction:column;gap:.5rem}.list-card{display:flex;flex-direction:column;gap:.35rem;text-align:left;background:var(--card);border:1px solid var(--card-border);border-radius:12px;padding:.7rem;color:var(--text);min-height:64px}.card-top,.card-mid,.card-bot{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.card-mid{color:var(--muted);font-size:.9rem}.card-bot{font-size:.9rem}.list-card.beam-they{border-left:3px solid var(--accent)}.list-card.beam-mutual{border-left:3px solid var(--ok);background:#34d3990f}@media(max-width:700px){.list-table-wrap{display:none}.list-cards{display:flex}}.app-footer{max-width:640px;margin:0 auto;padding:.9rem 1rem calc(.9rem + env(safe-area-inset-bottom));display:flex;align-items:center;justify-content:center;gap:1rem;flex-wrap:wrap;border-top:1px solid var(--card-border);color:var(--muted);font-size:.8rem}.app-footer .copyright{text-align:center}.legal-links{display:flex;gap:.9rem}.legal-links a{color:var(--accent);text-decoration:none}.legal-links a:hover{text-decoration:underline}.chat-panel{display:grid;grid-template-columns:1fr;gap:.75rem}.conv-list{display:flex;flex-direction:column;gap:.35rem}.conv-item{display:flex;justify-content:space-between;align-items:center;padding:.7rem .8rem;border-radius:10px;background:var(--card);border:1px solid var(--card-border);color:var(--text);font-size:1rem;min-height:48px}.conv-item.active{border-color:var(--accent);background:var(--chiclet-on)}.unread-badge{background:var(--accent);color:#06202e;font-weight:700;border-radius:999px;padding:.05rem .5rem;font-size:.8rem}.new-conv{padding:.25rem 0}.chat-main{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--card-border);border-radius:12px;overflow:hidden}.chat-scroll{display:flex;flex-direction:column;gap:.4rem;padding:.8rem;min-height:220px;max-height:45vh;overflow-y:auto}.chat-msg{display:flex;flex-direction:column;max-width:85%;align-self:flex-start;background:var(--chiclet);border-radius:12px 12px 12px 2px;padding:.45rem .7rem}.chat-msg.mine{align-self:flex-end;background:var(--chiclet-on);border-radius:12px 12px 2px}.chat-from{font-size:.7rem;color:var(--accent);font-weight:700}.chat-msg.mine .chat-from{color:var(--ok)}.chat-text{font-size:.95rem;overflow-wrap:anywhere}.chat-time{font-size:.65rem;color:var(--muted);align-self:flex-end}.chat-quick{display:flex;flex-wrap:wrap;gap:.35rem;padding:.5rem .8rem 0}.chat-input{display:flex;gap:.5rem;padding:.6rem .8rem .8rem}.chat-input input{margin:0;flex:1}.chat-input .btn-primary{width:auto;margin-top:0;padding:.6rem 1.2rem}@media(min-width:700px){.chat-panel{grid-template-columns:220px 1fr;align-items:start}}.dm-drawer{position:fixed;left:0;right:0;bottom:0;z-index:40;max-width:640px;margin:0 auto;background:var(--card);border:1px solid var(--card-border);border-bottom:none;border-radius:16px 16px 0 0;padding:.9rem 1rem calc(.9rem + env(safe-area-inset-bottom));box-shadow:0 -8px 30px #00000080}.dm-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.dm-log{display:flex;flex-direction:column;gap:.3rem;max-height:180px;overflow-y:auto;margin-bottom:.6rem}.dm-sent{align-self:flex-end;background:var(--chiclet-on);color:var(--text);border-radius:12px 12px 2px;padding:.4rem .7rem;font-size:.9rem;max-width:85%}.dm-quick{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.6rem}.chip{background:var(--chiclet);border:1px solid var(--card-border);color:var(--text);border-radius:999px;padding:.4rem .75rem;font-size:.85rem;min-height:36px}.chip.qsy{border-color:var(--accent);color:var(--accent)}.dm-form{display:flex;gap:.5rem}.dm-form input{margin:0;flex:1}.dm-form .btn-primary{width:auto;margin-top:0;padding:.6rem 1.2rem}.login{max-width:440px;margin:0 auto;text-align:center}.login form,.login .intro{margin-top:1rem;text-align:left}.login img{margin-top:1rem}.intro p{margin:0 0 .75rem}.feature-list{margin:.75rem 0 1rem;padding-left:1.2rem}.feature-list li{margin-bottom:.35rem;color:var(--text)}.intro .btn-primary{width:100%}
