:root{--brand:#1f7a6b;--brand2:#0f4d45;--accent:#f2b632;--bg:#edf3f1;--ink:#12302c;--muted:#5d7571;--card:#fff;--line:#d9e5e2;--bad:#c0392b;--ok:#1b8a5a;--r:14px;--sh:0 1px 2px rgba(15,77,69,.06),0 10px 28px rgba(15,77,69,.08);--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html{scroll-behavior:smooth}
body{margin:0;font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--ink);background:var(--bg);min-height:100dvh}
h2{font-size:1.45rem;margin:.2rem 0 .8rem;letter-spacing:-.01em}h3{margin:1.4rem 0 .5rem;font-size:1.05rem;color:var(--brand2)}h2 small{font-size:.8rem;font-weight:500;color:var(--muted)}
a{color:var(--brand)}.i{width:1.2em;height:1.2em;flex:none}.grow{flex:1}.muted{color:var(--muted)}.err{color:var(--bad)}.ok{color:var(--ok)}.warn{color:#a56200}small{color:var(--muted);font-weight:400}
/* top bar */
.top{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:.6rem;padding:calc(.55rem + var(--sat)) 1rem .55rem;background:linear-gradient(100deg,var(--brand2),var(--brand));color:#fff;box-shadow:0 2px 12px rgba(0,0,0,.15)}
.top a{color:#fff;text-decoration:none}.brand{display:flex;align-items:center;gap:.6rem}.brand img{width:34px;height:34px;border-radius:9px}
.brand span{display:flex;flex-direction:column;line-height:1.1}.brand small{color:#cfe8e3;font-size:.72rem}
.dnav{display:none;gap:.2rem;margin-left:1rem}.dnav a{display:flex;align-items:center;gap:.4rem;padding:.45rem .8rem;border-radius:10px;font-weight:500;opacity:.85}.dnav a:hover,.dnav a.on{background:rgba(255,255,255,.16);opacity:1}
.burger{background:none;border:0;color:#fff;padding:.3rem;min-height:0;display:grid;place-items:center}.burger .i{width:1.7em;height:1.7em}
.pill{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .65rem;border-radius:999px;font-size:.78rem;font-weight:600;background:rgba(255,255,255,.18);color:#fff;border:0;min-height:0}
.net::before{content:"";width:8px;height:8px;border-radius:50%;background:#aaa}.net.on::before{background:#3ddc97;box-shadow:0 0 0 3px rgba(61,220,151,.3)}.net.off{background:#c0392b}.net.off::before{background:#fff}
.outbox{background:var(--accent);color:#3a2b00!important}.outbox.bad{background:#ff8a80}.inst{background:#fff;color:var(--brand2)}.inst.dark{background:var(--brand);color:#fff}
.who{display:flex;align-items:center;gap:.35rem;padding:.3rem .5rem;border-radius:10px}.who:hover{background:rgba(255,255,255,.16)}.who span{display:none}
/* drawer + bottom nav */
.scrim{position:fixed;inset:0;background:rgba(6,30,27,.5);opacity:0;pointer-events:none;transition:.25s;z-index:50}.scrim.on{opacity:1;pointer-events:auto}
.drawer{position:fixed;top:0;bottom:0;left:0;width:280px;max-width:84vw;background:#fff;z-index:60;transform:translateX(-102%);transition:transform .28s cubic-bezier(.2,.8,.2,1);padding:calc(1rem + var(--sat)) .8rem 1rem;display:flex;flex-direction:column;gap:.15rem;box-shadow:8px 0 30px rgba(0,0,0,.2)}
.drawer.open{transform:none}.dhead{display:flex;gap:.7rem;align-items:center;padding:.4rem .5rem 1rem;border-bottom:1px solid var(--line);margin-bottom:.5rem}.dhead img{width:44px;border-radius:11px}.dhead div{display:flex;flex-direction:column}
.drawer a{display:flex;gap:.7rem;align-items:center;padding:.8rem .8rem;border-radius:12px;color:var(--ink);text-decoration:none;font-weight:500}.drawer a.on{background:#e3f2ee;color:var(--brand2)}.drawer a.out{margin-top:auto;color:var(--bad)}
.bnav{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;background:#fff;border-top:1px solid var(--line);padding:.25rem .3rem calc(.25rem + var(--sab));box-shadow:0 -6px 20px rgba(15,77,69,.08)}
.bnav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:.1rem;padding:.4rem 0;font-size:.68rem;color:var(--muted);text-decoration:none;border-radius:12px;font-weight:600}.bnav a .i{width:1.5em;height:1.5em}.bnav a.on{color:var(--brand);background:#e6f3ef}
main{max-width:1080px;margin:0 auto;padding:1rem 1rem calc(5.5rem + var(--sab));animation:rise .35s ease both}@keyframes rise{from{opacity:0;transform:translateY(8px)}}
@media(min-width:900px){.dnav{display:flex}.burger,.bnav{display:none}.who span{display:inline}main{padding:1.6rem 1.5rem 3rem}}
/* cards, forms */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1rem;margin:.7rem 0;box-shadow:var(--sh)}
label{display:block;margin:.5rem 0;font-size:.85rem;font-weight:600;color:var(--brand2)}
input,select,textarea,button{font:inherit;color:inherit}
input:not([type=checkbox]):not([type=radio]),select,textarea{width:100%;min-height:46px;padding:.6rem .8rem;border:1.5px solid var(--line);border-radius:11px;background:#fbfdfc;margin-top:.25rem;font-weight:400;transition:border .15s,box-shadow .15s}
textarea{min-height:90px}input:focus,select:focus,textarea:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 4px rgba(31,122,107,.15);background:#fff}
button,.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:44px;padding:.6rem 1.2rem;border:0;border-radius:11px;background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff;font-weight:600;cursor:pointer;text-decoration:none;transition:transform .1s,box-shadow .15s;box-shadow:0 4px 12px rgba(15,77,69,.25)}
button:active{transform:scale(.97)}button:disabled{opacity:.7;cursor:wait}
button.busy{color:transparent!important}button.busy::after{content:"";position:absolute;width:1.15em;height:1.15em;border:2.5px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.3rem .9rem}
.inline{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.inline input:not([type=checkbox]),.inline select{width:auto;flex:1;min-width:130px;margin:0}.inline label{margin:0}
.chk{display:inline-flex;align-items:center;gap:.45rem;margin:.25rem .3rem .25rem 0;padding:.45rem .9rem;border:1.5px solid var(--line);border-radius:999px;background:#fff;font-weight:500;color:var(--ink);cursor:pointer}
.chk:has(input:checked){border-color:var(--brand);background:#e3f2ee}.chk input{accent-color:var(--brand);width:1.05em;height:1.05em}
.tabs{display:flex;gap:.4rem;overflow-x:auto;padding-bottom:.3rem;margin:.4rem 0;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}
.tabs a{white-space:nowrap;padding:.5rem .95rem;border-radius:999px;text-decoration:none;font-weight:600;font-size:.88rem;background:#fff;border:1.5px solid var(--line);color:var(--brand2)}.tabs a.on{background:var(--brand);border-color:var(--brand);color:#fff}
/* tables */
table{width:100%;border-collapse:separate;border-spacing:0;background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--sh);margin:.5rem 0}
th{background:#eef6f4;color:var(--brand2);font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}th,td{padding:.7rem .8rem;text-align:left;border-bottom:1px solid var(--line);vertical-align:middle}tr:last-child td{border-bottom:0}
@media(max-width:700px){table.rt,table.rt tbody{display:block;background:none;border:0;box-shadow:none}table.rt .hd{display:none}
table.rt tr{display:block;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:.4rem .9rem;margin:.6rem 0;box-shadow:var(--sh)}
table.rt td{display:flex;justify-content:space-between;align-items:center;gap:1rem;border:0;padding:.35rem 0;text-align:right}table.rt td::before{content:attr(data-l);font-weight:600;color:var(--muted);font-size:.8rem;text-align:left}
table.rt td[data-l=""]::before,table.rt td[colspan]::before{display:none}table.rt td .inline{justify-content:flex-end}}
/* tiles */
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.8rem}
.tile{display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;background:#fff;border:1px solid var(--line);border-radius:18px;padding:1rem;text-decoration:none;color:var(--ink);box-shadow:var(--sh);transition:transform .15s,box-shadow .15s}
.tile:hover{transform:translateY(-3px);box-shadow:0 14px 32px rgba(15,77,69,.16)}.tile:active{transform:scale(.97)}
.tile .ic{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(135deg,#dff1ec,#c4e5dd);color:var(--brand2)}.tile .ic .i{width:1.5em;height:1.5em}
.tile b{font-size:1rem}.tile span{color:var(--muted);font-size:.8rem;line-height:1.25}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.7rem;margin:.6rem 0 1.2rem}
.stat{border-radius:16px;padding:.9rem 1rem;color:#fff;background:linear-gradient(135deg,var(--brand),var(--brand2))}.stat b{display:block;font-size:1.8rem;line-height:1.1}.stat span{font-size:.8rem;opacity:.85}.stat.gold{background:linear-gradient(135deg,#f6c453,#d99a0b);color:#3a2b00}
.hi{margin:.2rem 0 .3rem}.hi small{display:block;font-size:.9rem}
/* toast, splash, progress */
#toast{position:fixed;left:50%;bottom:calc(5.2rem + var(--sab));transform:translate(-50%,20px);max-width:92vw;background:#12302c;color:#fff;padding:.75rem 1.1rem;border-radius:12px;opacity:0;pointer-events:none;transition:.25s;z-index:90;box-shadow:0 10px 30px rgba(0,0,0,.3)}#toast.show{opacity:1;transform:translate(-50%,0)}#toast.bad{background:var(--bad)}
@media(min-width:900px){#toast{bottom:1.5rem}}
#nprog{position:fixed;top:0;left:0;height:3px;width:0;background:var(--accent);z-index:120;box-shadow:0 0 10px var(--accent)}#nprog.on{width:85%;transition:width 6s cubic-bezier(.1,.7,.2,1)}#nprog.done{width:100%;opacity:0;transition:width .2s,opacity .4s .2s}
#splash{display:none;position:fixed;inset:0;z-index:200;background:linear-gradient(160deg,var(--brand2),var(--brand));color:#fff;flex-direction:column;align-items:center;justify-content:center;gap:1rem}
html.first #splash{display:flex;animation:out .45s ease 1s forwards}@keyframes out{to{opacity:0;visibility:hidden}}
#splash img{width:92px;border-radius:24px;animation:pulse 1.2s ease-in-out infinite}#splash b{font-size:1.4rem;letter-spacing:.02em}@keyframes pulse{50%{transform:scale(1.08)}}
.sbar{width:120px;height:4px;border-radius:4px;background:rgba(255,255,255,.25);overflow:hidden;position:relative}.sbar::after{content:"";position:absolute;inset:0;width:40%;background:var(--accent);border-radius:4px;animation:slide 1s ease-in-out infinite}@keyframes slide{from{transform:translateX(-100%)}to{transform:translateX(280%)}}
/* auth layout */
.auth{min-height:100dvh;display:grid;grid-template-columns:1.05fr 1fr;background:var(--bg)}
.hero{position:relative;overflow:hidden;background:linear-gradient(155deg,var(--brand2),var(--brand));color:#fff;display:flex;align-items:center;padding:3rem}
.hero::before,.hero::after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.07)}.hero::before{width:420px;height:420px;top:-140px;right:-120px}.hero::after{width:300px;height:300px;bottom:-110px;left:-80px}
.hero-in{position:relative;max-width:460px}.hbrand{display:flex;align-items:center;gap:.8rem;font-size:1.5rem;margin-bottom:2rem}.hbrand img{width:56px;border-radius:15px}
.hero h1{font-size:2rem;line-height:1.2;margin:0 0 .8rem;letter-spacing:-.02em}.hero p{color:#d3ebe6;margin:0 0 1.6rem}
.feat{list-style:none;padding:0;margin:0;display:grid;gap:.6rem}.feat li{display:flex;gap:.6rem;align-items:center}.feat .i{background:var(--accent);color:#3a2b00;border-radius:50%;padding:3px;width:1.4em;height:1.4em}
.panel{display:grid;place-items:center;padding:1.5rem}.panel-in{width:100%;max-width:400px;animation:rise .4s ease both}.pstat{display:flex;justify-content:flex-end;gap:.5rem;margin-bottom:1rem}.pstat .net{background:#e3f2ee;color:var(--brand2)}
.panel h2{font-size:1.7rem;margin:0}.panel .sub{color:var(--muted);margin:.2rem 0 1rem}.panel form{margin-top:.5rem}.panel button.full{width:100%;margin-top:.8rem}
.fld{position:relative}.fld>.i{position:absolute;left:.85rem;top:calc(50% + .12rem);transform:translateY(-50%);color:var(--muted);z-index:1}.fld input{padding-left:2.5rem!important}
.eye{position:absolute;right:.4rem;top:calc(50% + .12rem);transform:translateY(-50%);background:none;box-shadow:none;color:var(--muted);min-height:36px;padding:.3rem .55rem}
.alt{margin-top:1rem;text-align:center;color:var(--muted)}.alt a{font-weight:600}
.msg{padding:.7rem .9rem;border-radius:11px;margin:.6rem 0;font-size:.9rem}.msg.err{background:#fdecea;color:var(--bad)}.msg.ok{background:#e6f6ee;color:var(--ok)}.msg.warn{background:#fff5e0;color:#8a5a00}
.meter{height:5px;border-radius:5px;background:var(--line);overflow:hidden;margin-top:.3rem}.meter i{display:block;height:100%;width:0;background:var(--bad);transition:.25s}
@media(max-width:820px){.auth{grid-template-columns:1fr}.hero{padding:1.6rem 1.4rem 4.5rem}.hero h1{font-size:1.25rem;margin:0}.hero p,.feat{display:none}.hbrand{margin-bottom:.8rem}
.panel{margin-top:-3rem;padding:0 1rem 2rem}.panel-in{background:#fff;border-radius:22px;padding:1.3rem;box-shadow:var(--sh)}}
