body.portal{--text:#14213d;--mute:#64748b;--glass:#fff;--glass-strong:#eef3fb;--glass-line:#e2e8f3;background:#eef2f8;color:var(--text);font-size:.92rem}
body.portal::before,body.portal::after{display:none}
.portal .glass{background:#fff;backdrop-filter:none;-webkit-backdrop-filter:none;border-color:#e6ebf4;box-shadow:0 1px 3px rgba(15,28,51,.06)}
.portal .input,.portal select,.portal textarea{background:#f8fafd;border-color:#dbe3f0;color:var(--text)}
.portal .input::placeholder{color:#94a3b8}
.portal .btn{background:#eef3fb;color:#0f1c33;border-color:#dbe3f0}.portal .btn:hover{background:#e2eaf7}
.portal .btn.primary{background:#0f7bd6;color:#fff;border-color:transparent}
.portal .table th{color:#64748b;font-size:.75rem;text-transform:uppercase;letter-spacing:.03em}
.portal .table th,.portal .table td{border-bottom:1px solid #edf1f8}
.portal .badge{background:#eef3fb;color:#475569;font-weight:600}.portal .badge.ok{background:#e3f8ee;color:#0b7a4b}.portal .badge.bad{background:#fdecee;color:#c0283d}
.shell{display:grid;grid-template-columns:15.5rem 1fr;gap:1rem;padding:.75rem;min-height:100vh}
.col{min-width:0;display:flex;flex-direction:column;gap:1rem}.content{padding:0 .25rem 6.5rem}
.content h1{font-size:1.35rem}.crumb{margin:.2rem 0 1rem;font-size:.75rem;color:var(--mute)}
.grow{flex:1}
.side{background:linear-gradient(180deg,#101e38,#0a1630);border-radius:20px;padding:1rem .8rem;display:flex;flex-direction:column;gap:.8rem;position:sticky;top:.75rem;height:calc(100vh - 1.5rem);color:#cdd8ee}
.brand{display:flex;gap:.6rem;align-items:center;padding:.3rem .5rem 1rem;color:#fff}.logo{width:2rem;height:2rem;border-radius:50%;background:#0f7bd6;display:grid;place-items:center;font-size:.75rem;font-weight:700}
.side nav{display:grid;gap:.15rem}.side nav a{display:flex;gap:.7rem;align-items:center;padding:.6rem .7rem;border-radius:10px;text-decoration:none;color:#aebbd6;font-weight:600;font-size:.78rem}
.side nav a:hover,.side nav a.on{background:rgba(255,255,255,.1);color:#fff}
.usercard{display:flex;gap:.6rem;align-items:center;background:rgba(255,255,255,.07);border-radius:14px;padding:.6rem}.usercard small{display:block;color:#8fa0c2}
.avatar{width:2.1rem;height:2.1rem;border-radius:50%;background:#2d4f86;display:grid;place-items:center;font-weight:700;color:#fff}
.top{background:#0f1c33;border-radius:16px;padding:.55rem .8rem;display:flex;gap:.8rem;align-items:center;color:#fff}
.ico{background:none;border:0;color:#cdd8ee;cursor:pointer;padding:.35rem;border-radius:8px;display:grid}.ico:hover{background:rgba(255,255,255,.1)}
.search{position:relative;display:flex;gap:.5rem;align-items:center;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);border-radius:12px;padding:.35rem .7rem;width:min(26rem,100%);color:#9fb0cf}
.search input{flex:1;min-width:0;background:none;border:0;color:#fff;font:inherit;font-size:.8rem;outline:0}.search kbd{font-size:.65rem;background:rgba(255,255,255,.12);border-radius:6px;padding:.1rem .4rem}
.results{position:absolute;top:calc(100% + .4rem);left:0;right:0;background:#fff;border-radius:12px;padding:.3rem;box-shadow:0 12px 30px rgba(15,28,51,.25);z-index:30;display:grid}
.results button{display:flex;gap:.5rem;align-items:center;background:none;border:0;padding:.55rem .7rem;border-radius:8px;color:#14213d;cursor:pointer;font:inherit;text-align:left}.results button:hover{background:#eef3fb}
.panel{background:#fff;border:1px solid #e6ebf4;border-radius:18px;padding:1.1rem;box-shadow:0 1px 3px rgba(15,28,51,.05)}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1rem}
.stat{display:flex;gap:.9rem;align-items:center;border-radius:16px;padding:1.1rem 1.2rem;color:#fff}
.stat.blue{background:linear-gradient(135deg,#1c8ee3,#0a62b3)}.stat.green{background:linear-gradient(135deg,#17b783,#0a7452)}.stat.purple{background:linear-gradient(135deg,#8e5df6,#6226d6)}
.stat .tile{background:rgba(255,255,255,.22);color:#fff;width:3rem;height:3rem}.stat small{display:block;font-size:.66rem;letter-spacing:.06em;font-weight:700;opacity:.9}
.stat strong{display:block;font-size:1.45rem;line-height:1.2}.stat span{font-size:.72rem;opacity:.92}
.tile{display:grid;place-items:center;width:2rem;height:2rem;border-radius:10px;flex:none}.tile.soft{background:#e6f1fc;color:#0f7bd6}
.dash{display:grid;grid-template-columns:1fr 1fr 1.05fr;gap:1rem;align-items:start}.dash .activity{grid-column:3;grid-row:1 / span 2}
.mod header,.activity header{display:flex;gap:.6rem;align-items:center;margin-bottom:.8rem}.mod header b,.activity header b{flex:1;font-size:.78rem;letter-spacing:.03em}
.mod-body{min-height:7rem;display:grid;align-content:start;gap:.4rem;margin-bottom:.8rem}
.item{display:flex;justify-content:space-between;gap:.5rem;padding:.4rem .2rem;border-bottom:1px solid #edf1f8}
.empty{display:grid;justify-items:center;gap:.5rem;padding:1.2rem;color:#94a3b8}.empty small{font-weight:700;letter-spacing:.06em;font-size:.65rem}
.btn.wide{width:100%;display:flex;justify-content:center;gap:.3rem;align-items:center;background:#eef6ff;color:#0f1c33;font-weight:700}
.timeline{display:grid;gap:.7rem}.tl{border:1px solid #e6ebf4;border-radius:14px;padding:.7rem .85rem;display:grid;gap:.1rem}.tl>div{display:flex;justify-content:space-between;gap:.5rem}
.dock{position:fixed;bottom:.9rem;left:50%;transform:translateX(-50%);display:flex;gap:.5rem;align-items:center;padding:.5rem .7rem;border-radius:999px;z-index:15;
background:rgba(255,255,255,.55);-webkit-backdrop-filter:blur(18px) saturate(170%);backdrop-filter:blur(18px) saturate(170%);border:1px solid rgba(255,255,255,.8);box-shadow:0 10px 35px rgba(15,28,51,.2)}
.dock>i{width:1px;height:1.8rem;background:rgba(15,28,51,.15)}.dock .home{display:grid;place-items:center;width:2.4rem;height:2.4rem;border-radius:50%;color:#0f1c33}
.chip{display:flex;gap:.5rem;align-items:center;text-decoration:none;color:#14213d;background:rgba(255,255,255,.7);padding:.35rem .8rem .35rem .4rem;border-radius:999px}
.chip .lbl b{display:block;font-size:.72rem;line-height:1.1}.chip .lbl small{font-size:.62rem;color:#64748b}
.chip.add{border:1.5px dashed #0f7bd6;color:#0f7bd6;background:rgba(255,255,255,.4);padding-left:.8rem}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.dock{background:rgba(255,255,255,.95)}}
.login{max-width:24rem;margin:12vh auto;padding:2rem;display:grid;gap:1rem}
#toasts{position:fixed;right:1rem;bottom:5.5rem;display:grid;gap:.5rem;z-index:40}.toast{padding:.7rem 1rem;border-radius:12px}.toast.bad{border-color:#c0283d}
.portal .login label,.portal .panel label{color:#334155}
@media(max-width:64rem){.dash{grid-template-columns:1fr 1fr}.dash .activity{grid-column:1 / -1;grid-row:auto}.stats{grid-template-columns:1fr}}
@media(max-width:52rem){.shell{grid-template-columns:1fr}.side{position:fixed;left:.75rem;top:.75rem;bottom:.75rem;width:15.5rem;height:auto;transform:translateX(-120%);transition:transform .2s;z-index:25}
.shell.open .side{transform:none}.dash{grid-template-columns:1fr}.chip .lbl,.top kbd{display:none}.chip{padding:.35rem}}
@media(prefers-reduced-motion:reduce){.side{transition:none}}
