:root{
  --bg:#070b14;--panel:#111827;--panel2:#0d1524;--text:#f4f7fb;--muted:#aab5c6;--line:#263249;--cyan:#69e8ff;--purple:#875cff;--green:#72f29a;--red:#ff667a;--yellow:#ffe083;
}
*{box-sizing:border-box}body{margin:0;background:linear-gradient(135deg,#080d18,#111a2c 55%,#070b14);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}a{color:inherit;text-decoration:none}.header{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 6vw;background:rgba(6,10,18,.88);border-bottom:1px solid rgba(255,255,255,.07);position:sticky;top:0;z-index:10;backdrop-filter:blur(14px)}.brand{font-weight:900;letter-spacing:-.04em}.nav{display:flex;gap:22px;align-items:center;color:var(--muted)}.nav a:hover{color:var(--text)}.wrap{width:min(1120px,88vw);margin:0 auto}.hero{padding:78px 0}.grid{display:grid;grid-template-columns:1.08fr .92fr;gap:56px;align-items:start}.dashboard{width:min(1200px,88vw);margin:0 auto;padding:64px 0}.eyebrow{color:var(--cyan);letter-spacing:.3em;text-transform:uppercase;font-size:.78rem;font-weight:900}.title{font-size:clamp(3rem,7.5vw,6.5rem);line-height:.88;letter-spacing:-.08em;margin:18px 0 26px}.lead,p{color:var(--muted);line-height:1.65;font-size:1.05rem}.card{display:block;background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.025));border:1px solid var(--line);border-radius:24px;padding:28px;box-shadow:0 24px 80px rgba(0,0,0,.22)}.card h2{margin:0 0 12px;font-size:1.55rem;letter-spacing:-.04em}.dashgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.form{display:grid;gap:16px}.field{display:grid;gap:7px}.field label{font-weight:800}.field input,.field textarea,.field select{width:100%;border:1px solid var(--line);background:#171f31;color:var(--text);border-radius:14px;padding:14px 16px;font:inherit}.field textarea{min-height:130px;resize:vertical}.check{display:flex;align-items:flex-start;gap:10px;color:var(--muted)}.check input{margin-top:6px}.btn{border:1px solid var(--line);background:#111827;color:var(--text);border-radius:16px;padding:13px 20px;font-weight:900;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.btn:hover{border-color:#51607b}.btn.primary{background:linear-gradient(135deg,#72d9ff,#895cff);border:none;color:#06101c}.btn.danger{border-color:rgba(255,102,122,.55);color:#ffc4cc}.notice{border:1px solid #2b6d85;background:rgba(105,232,255,.07);color:#dff9ff;border-radius:16px;padding:14px 18px}.notice.success{border-color:rgba(114,242,154,.5);background:rgba(114,242,154,.07);color:#dcffe7}.notice.error{border-color:rgba(255,102,122,.55);background:rgba(255,102,122,.08);color:#ffd6dc}.small{font-size:.9rem;color:var(--muted)}.pill{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:5px 10px;color:var(--muted);font-weight:800;font-size:.78rem;text-transform:uppercase;letter-spacing:.08em}.pill.pending{color:var(--yellow);border-color:rgba(255,224,131,.45)}.pill.approved{color:var(--green);border-color:rgba(114,242,154,.45)}.pill.rejected{color:var(--red);border-color:rgba(255,102,122,.45)}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.split{display:grid;grid-template-columns:1fr 1fr;gap:14px}.list{display:grid;gap:16px;margin-top:22px}@media(max-width:840px){.grid,.dashgrid,.split{grid-template-columns:1fr}.header{padding:0 22px}.nav{gap:12px}.title{font-size:3.3rem}}

/* Sprint 4 — team roster, presence, messages, channels, and link/image sharing */
.roster-toggle{position:fixed;right:18px;top:50%;transform:translateY(-50%);z-index:40;border:1px solid rgba(105,232,255,.45);background:linear-gradient(135deg,rgba(105,232,255,.18),rgba(135,92,255,.18));color:var(--text);border-radius:999px;padding:12px 14px;font-weight:950;box-shadow:0 16px 60px rgba(0,0,0,.35);cursor:grab;display:flex;align-items:center;gap:8px;user-select:none;touch-action:none}.roster-toggle.dragging{cursor:grabbing;box-shadow:0 22px 74px rgba(0,0,0,.5),0 0 0 3px rgba(105,232,255,.12)}.roster-toggle-grip{color:var(--cyan);letter-spacing:-.3em;opacity:.75}.roster-toggle strong{min-width:22px;height:22px;border-radius:999px;background:var(--red);color:white;display:inline-flex;align-items:center;justify-content:center;font-size:.75rem}.roster-shell{position:fixed;right:0;top:0;height:100vh;width:min(440px,94vw);z-index:50;background:linear-gradient(180deg,#0a101d,#111827);border-left:1px solid var(--line);box-shadow:-28px 0 90px rgba(0,0,0,.45);transform:translateX(104%);transition:transform .22s ease;padding:22px;display:flex;flex-direction:column;gap:14px}.roster-shell.open{transform:translateX(0)}.roster-head,.roster-chat-head{display:flex;align-items:start;justify-content:space-between;gap:14px}.roster-head h2,.roster-chat-head h3{margin:4px 0 0;letter-spacing:-.04em}.roster-me{border:1px solid var(--line);border-radius:16px;padding:13px 14px;background:rgba(255,255,255,.04);display:flex;align-items:center;gap:9px;color:var(--muted)}.roster-me strong{color:var(--text)}.roster-me span:last-child{margin-left:auto;font-size:.82rem}.roster-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px}.roster-tabs button{border:1px solid var(--line);background:#0f1728;color:var(--muted);border-radius:14px;padding:10px;font-weight:900;cursor:pointer}.roster-tabs button.active{background:rgba(105,232,255,.1);border-color:rgba(105,232,255,.42);color:var(--text)}.roster-list{overflow:auto;display:grid;gap:10px;padding-right:4px}.roster-section-title{margin:10px 0 0;color:var(--cyan);font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;font-weight:950}.roster-member{width:100%;border:1px solid var(--line);background:rgba(255,255,255,.035);color:var(--text);border-radius:18px;padding:12px;display:flex;align-items:center;gap:12px;text-align:left;cursor:pointer}.roster-member:hover:not(:disabled){border-color:rgba(105,232,255,.48);background:rgba(105,232,255,.06)}.roster-member:disabled{opacity:.58;cursor:not-allowed}.roster-avatar{width:38px;height:38px;border-radius:14px;background:linear-gradient(135deg,rgba(105,232,255,.18),rgba(135,92,255,.22));display:inline-flex;align-items:center;justify-content:center;font-weight:950}.roster-member-main{min-width:0;display:grid;gap:2px;flex:1}.roster-member-main strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.roster-member-main small{color:var(--muted);display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.roster-member em{min-width:24px;height:24px;border-radius:999px;background:var(--red);color:white;display:inline-flex;align-items:center;justify-content:center;font-size:.78rem;font-style:normal;font-weight:950}.roster-dot{width:9px;height:9px;border-radius:999px;display:inline-flex;background:#687386;box-shadow:0 0 0 3px rgba(104,115,134,.13)}.roster-dot.online{background:var(--green);box-shadow:0 0 0 3px rgba(114,242,154,.13)}.roster-dot.away{background:var(--yellow);box-shadow:0 0 0 3px rgba(255,224,131,.13)}.roster-dot.offline{background:#687386}.roster-chat{min-height:0;display:flex;flex-direction:column;gap:12px;flex:1}.roster-messages{flex:1;min-height:180px;overflow:auto;border:1px solid var(--line);border-radius:18px;background:rgba(0,0,0,.18);padding:12px;display:flex;flex-direction:column;gap:10px}.roster-message{max-width:88%;align-self:flex-start;border:1px solid var(--line);border-radius:18px;padding:11px 12px;background:rgba(255,255,255,.045)}.roster-message.mine{align-self:flex-end;background:rgba(105,232,255,.09);border-color:rgba(105,232,255,.32)}.roster-message div:first-child{display:flex;gap:10px;align-items:center;justify-content:space-between;color:var(--muted);font-size:.8rem}.roster-message strong{color:var(--text)}.roster-message p{margin:6px 0 0;font-size:.98rem;color:var(--text);white-space:pre-wrap;overflow-wrap:anywhere}.roster-message-form{display:grid;gap:10px}.roster-message-form textarea,.roster-message-form input,.roster-create-channel input,.roster-create-channel select{width:100%;border:1px solid var(--line);background:#171f31;color:var(--text);border-radius:14px;padding:12px 14px;font:inherit}.roster-message-form textarea{min-height:84px;resize:vertical}.roster-attach-box{border:1px solid var(--line);border-radius:14px;padding:10px;background:rgba(255,255,255,.03)}.roster-attach-box summary{cursor:pointer;color:var(--muted);font-weight:850}.roster-attach-box input{margin-top:8px}.roster-attachment{margin-top:8px;display:grid;gap:6px;color:var(--cyan);overflow-wrap:anywhere}.roster-attachment img{max-width:100%;border-radius:14px;border:1px solid var(--line)}.roster-file{display:inline-flex;border:1px solid var(--line);border-radius:14px;padding:10px 12px;background:rgba(255,255,255,.04)}.roster-create-channel{border:1px solid var(--line);background:rgba(255,255,255,.035);border-radius:18px;padding:12px}.roster-create-channel summary{cursor:pointer;font-weight:950;color:var(--cyan)}.roster-create-channel .form{margin-top:10px;gap:10px}@media(max-width:680px){.roster-toggle{right:14px}.roster-shell{width:100vw}.roster-message{max-width:94%}}

/* Sprint 4.1.1 — chat composer visibility fix */
.roster-shell{
  height:100dvh;
  max-height:100dvh;
  overflow:hidden;
  padding:18px;
  gap:12px;
}
.roster-chat{
  min-height:0;
  overflow:hidden;
  flex:1 1 auto;
  gap:10px;
}
.roster-messages{
  flex:1 1 auto;
  min-height:0;
  overflow:auto;
}
.roster-message-form{
  flex:0 0 auto;
  gap:8px;
  padding-bottom:max(8px, env(safe-area-inset-bottom));
}
.roster-message-form textarea{
  min-height:64px;
  max-height:112px;
}
.roster-attach-box{
  max-height:136px;
  overflow:auto;
}
.roster-attach-box p.small{
  margin:7px 0 0;
  font-size:.82rem;
}
@media(max-height:760px){
  .roster-shell{padding:14px;gap:9px}
  .roster-chat{gap:8px}
  .roster-message-form textarea{min-height:52px;max-height:82px}
  .roster-attach-box{padding:8px;max-height:96px}
  .roster-message-form .btn{padding:10px 14px}
  .roster-chat-head h3{font-size:1rem;margin:2px 0 0}
  .roster-chat-head .eyebrow{margin:0;font-size:.66rem}
}
@media(max-height:620px){
  .roster-message-form textarea{min-height:44px;max-height:64px}
  .roster-attach-box p.small{display:none}
  .roster-attach-box input{padding:9px 10px;margin-top:6px}
}


/* Sprint 4.2 — full page team chat */
.roster-head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.team-page{width:min(1500px,94vw);margin:0 auto;padding:36px 0 44px;display:grid;grid-template-columns:320px minmax(0,1fr) 280px;gap:18px;min-height:calc(100dvh - 76px)}
.team-panel{background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.025));border:1px solid var(--line);border-radius:24px;box-shadow:0 24px 80px rgba(0,0,0,.22);min-height:0}.team-sidebar,.team-details{padding:18px;display:flex;flex-direction:column;gap:14px;max-height:calc(100dvh - 112px);overflow:hidden;position:sticky;top:94px}.team-sidebar-head h1{margin:4px 0 8px;font-size:1.9rem;letter-spacing:-.06em}.team-me{border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.04);padding:12px 13px;display:flex;align-items:center;gap:9px;color:var(--muted)}.team-me strong{color:var(--text)}.team-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px}.team-tabs button{border:1px solid var(--line);background:#0f1728;color:var(--muted);border-radius:14px;padding:10px;font-weight:900;cursor:pointer}.team-tabs button.active{background:rgba(105,232,255,.1);border-color:rgba(105,232,255,.42);color:var(--text)}.team-list{min-height:0;overflow:auto;display:grid;gap:10px;padding-right:4px}.team-list .roster-member{border-radius:16px}.team-chat-main{display:flex;flex-direction:column;min-height:calc(100dvh - 112px);overflow:hidden}.team-chat-top{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:14px}.team-chat-top h2{margin:3px 0 0;font-size:1.55rem;letter-spacing:-.045em}.team-chat-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.team-page-messages{flex:1;min-height:0;overflow:auto;padding:18px;display:flex;flex-direction:column;gap:12px;background:rgba(0,0,0,.12)}.team-page-messages .roster-message{max-width:min(760px,82%)}.team-page-messages .roster-message p{font-size:1.02rem}.team-page-composer{border-top:1px solid var(--line);background:rgba(5,8,14,.55);padding:14px;display:grid;gap:10px}.team-page-composer textarea,.team-page-composer input,.team-create-channel input,.team-create-channel select{width:100%;border:1px solid var(--line);background:#171f31;color:var(--text);border-radius:14px;padding:12px 14px;font:inherit}.team-page-composer textarea{min-height:82px;resize:vertical}.team-composer-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end}.team-attach-grid{display:grid;grid-template-columns:1fr 260px;gap:10px}.team-create-channel{border:1px solid var(--line);background:rgba(255,255,255,.035);border-radius:18px;padding:12px}.team-create-channel summary{cursor:pointer;font-weight:950;color:var(--cyan)}.team-create-channel .form{margin-top:10px;gap:10px}.team-detail-block{border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.035);padding:14px}.team-detail-block h3{margin:0 0 8px;letter-spacing:-.035em}.team-online-list{display:grid;gap:8px;overflow:auto;min-height:0}.team-mini-member{display:flex;gap:8px;align-items:center;color:var(--muted);font-size:.94rem;min-width:0}.team-mini-member strong{color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.team-empty{display:grid;place-items:center;text-align:center;min-height:280px;color:var(--muted)}.team-empty h2{color:var(--text);margin:0 0 8px}.team-page-body{overflow:hidden}body.team-page-body .roster-toggle,body.team-page-body .roster-shell{display:none!important}@media(max-width:1180px){.team-page{grid-template-columns:300px minmax(0,1fr)}.team-details{display:none}}@media(max-width:820px){.team-page{grid-template-columns:1fr;width:min(94vw,760px);padding-top:20px}.team-sidebar,.team-chat-main{min-height:auto;max-height:none;position:static}.team-sidebar{max-height:420px}.team-chat-main{min-height:72dvh}.team-chat-top{align-items:flex-start}.team-composer-row{grid-template-columns:1fr}.team-attach-grid{grid-template-columns:1fr}.team-page-messages .roster-message{max-width:94%}.team-page-composer textarea{min-height:68px}.nav{flex-wrap:wrap;justify-content:flex-end}.header{height:auto;min-height:76px;padding-block:12px}}


/* Sprint 4.2.1 — compact high-traffic chat density */
body.team-page-body.chat-density-compact .team-page{
  grid-template-columns:300px minmax(0,1fr) 260px;
  gap:14px;
  padding-top:24px;
  padding-bottom:28px;
}
body.team-page-body.chat-density-compact .team-sidebar,
body.team-page-body.chat-density-compact .team-details{
  padding:14px;
  gap:10px;
}
body.team-page-body.chat-density-compact .team-chat-main{
  min-height:calc(100dvh - 104px);
}
body.team-page-body.chat-density-compact .team-chat-top{
  padding:12px 16px;
}
body.team-page-body.chat-density-compact .team-chat-top h2{
  font-size:1.28rem;
  margin-top:1px;
}
body.team-page-body.chat-density-compact .team-chat-top .eyebrow{
  font-size:.68rem;
  margin:0;
}
body.team-page-body.chat-density-compact .team-page-messages{
  padding:10px 12px;
  gap:6px;
}
body.team-page-body.chat-density-compact .team-page-messages .roster-message{
  max-width:min(660px,78%);
  padding:7px 9px;
  border-radius:13px;
}
body.team-page-body.chat-density-compact .team-page-messages .roster-message div:first-child{
  font-size:.68rem;
  gap:8px;
}
body.team-page-body.chat-density-compact .team-page-messages .roster-message p{
  margin:3px 0 0;
  font-size:.88rem;
  line-height:1.36;
}
body.team-page-body.chat-density-compact .team-page-messages .roster-attachment{
  margin-top:5px;
  gap:4px;
  font-size:.82rem;
}
body.team-page-body.chat-density-compact .team-page-messages .roster-attachment img{
  max-height:170px;
  object-fit:cover;
}
body.team-page-body.chat-density-compact .team-page-composer{
  padding:10px 12px;
  gap:7px;
}
body.team-page-body.chat-density-compact .team-page-composer textarea{
  min-height:54px;
  max-height:96px;
  padding:10px 12px;
  font-size:.94rem;
}
body.team-page-body.chat-density-compact .team-page-composer input{
  padding:10px 12px;
  font-size:.9rem;
}
body.team-page-body.chat-density-compact .team-composer-row .small{
  font-size:.78rem;
}
body.team-page-body.chat-density-compact .team-page-composer .btn,
body.team-page-body.chat-density-compact .team-chat-actions .btn{
  padding:10px 14px;
}
body.team-page-body.chat-density-compact .team-list{
  gap:7px;
}
body.team-page-body.chat-density-compact .team-list .roster-member{
  padding:9px 10px;
  gap:9px;
}
body.team-page-body.chat-density-compact .team-list .roster-avatar{
  width:32px;
  height:32px;
  border-radius:11px;
}
body.team-page-body.chat-density-compact .team-list .roster-member-main small{
  font-size:.78rem;
}
@media(max-width:820px){
  body.team-page-body.chat-density-compact .team-page{grid-template-columns:1fr;width:min(94vw,760px)}
  body.team-page-body.chat-density-compact .team-page-messages .roster-message{max-width:94%}
  body.team-page-body.chat-density-compact .team-chat-actions{gap:6px}
}

/* Sprint 4.2.2 — mobile team chat scroll fix */
@media (max-width: 820px) {
  html,
  body.team-page-body {
    min-height: 100%;
  }

  body.team-page-body {
    overflow-x: hidden !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
  }

  body.team-page-body .team-page {
    width: min(96vw, 760px);
    min-height: auto;
    padding-top: 14px;
    padding-bottom: calc(18px + env(safe-area-inset-bottom));
    gap: 12px;
  }

  body.team-page-body .team-sidebar {
    max-height: 38svh;
    overflow: hidden;
  }

  body.team-page-body .team-chat-main,
  body.team-page-body.chat-density-compact .team-chat-main {
    height: calc(100svh - 92px);
    min-height: 0;
    max-height: none;
    overflow: hidden;
    display: flex;
    flex-direction: column;
  }

  body.team-page-body .team-chat-top {
    flex: 0 0 auto;
  }

  body.team-page-body .team-page-messages {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto !important;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    touch-action: pan-y;
  }

  body.team-page-body .team-page-composer {
    flex: 0 0 auto;
    padding-bottom: calc(10px + env(safe-area-inset-bottom));
    position: relative;
    z-index: 2;
  }

  body.team-page-body .team-page-composer textarea {
    max-height: 82px;
  }

  body.team-page-body.chat-density-compact .team-page-composer textarea {
    min-height: 46px;
    max-height: 72px;
  }
}

@supports (height: 100dvh) {
  @media (max-width: 820px) {
    body.team-page-body .team-chat-main,
    body.team-page-body.chat-density-compact .team-chat-main {
      height: calc(100dvh - 92px);
    }
  }
}

/* Sprint 4.3 — cleaner dashboard UI, sidebar navigation, and reviewed social feed */
:root{
  --bg:#050809;
  --panel:#0b1113;
  --panel2:#0e1719;
  --text:#f2f7f5;
  --muted:#91a09d;
  --line:#203033;
  --cyan:#25f0c6;
  --purple:#0fb2d6;
  --green:#21e58b;
  --red:#ef5b68;
  --yellow:#e4c86b;
}
body{background:#050809;color:var(--text)}
body.dashboard-v2{background:radial-gradient(circle at 12% -10%,rgba(37,240,198,.13),transparent 30%),linear-gradient(180deg,#050809,#071012 60%,#050809)}
.header.compact-header,.header{height:62px;min-height:62px;padding:0 28px;background:rgba(5,8,9,.92);border-bottom:1px solid rgba(37,240,198,.12);box-shadow:none}.brand{letter-spacing:-.03em}.nav{gap:12px;font-size:.92rem}.title{font-size:clamp(2rem,4vw,3.4rem);line-height:1;letter-spacing:-.055em;margin:10px 0 10px}.lead,p{font-size:.97rem;line-height:1.55}.eyebrow{color:var(--cyan);letter-spacing:.18em;font-size:.68rem}.card{background:rgba(11,17,19,.86);border-color:var(--line);border-radius:16px;padding:18px;box-shadow:none}.card h2{font-size:1.18rem;margin-bottom:8px}.btn{border-radius:10px;padding:9px 13px;font-size:.9rem;font-weight:850;background:#0d1517;border-color:#25393d;min-height:auto}.btn.primary{background:linear-gradient(135deg,#25f0c6,#0fb2d6);color:#031012}.btn:hover{border-color:rgba(37,240,198,.48)}.field input,.field textarea,.field select,.roster-message-form textarea,.roster-message-form input,.roster-create-channel input,.roster-create-channel select{border-radius:10px;background:#0b1416;border-color:#24383b;padding:11px 12px}.field textarea{min-height:104px}.notice{border-color:rgba(37,240,198,.25);background:rgba(37,240,198,.055);border-radius:12px;padding:11px 13px}.dashgrid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.actions{gap:8px}.split{gap:12px}.pill{border-radius:999px;padding:4px 9px;font-size:.72rem}
.app-shell{width:min(1440px,96vw);margin:0 auto;display:grid;grid-template-columns:250px minmax(0,1fr);gap:20px;align-items:start}.app-sidebar{position:sticky;top:76px;min-height:calc(100dvh - 92px);border:1px solid var(--line);background:rgba(7,13,15,.78);border-radius:18px;padding:14px;box-shadow:none}.side-brand{display:flex;align-items:center;gap:10px;padding:8px 8px 16px;border-bottom:1px solid var(--line);margin-bottom:12px}.side-mark{width:34px;height:34px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;font-weight:950;background:linear-gradient(135deg,rgba(37,240,198,.18),rgba(15,178,214,.16));border:1px solid rgba(37,240,198,.28);color:var(--cyan)}.side-brand div{display:grid;line-height:1.15}.side-brand small{color:var(--muted);font-size:.76rem}.side-nav{display:grid;gap:6px}.side-nav a{padding:10px 11px;border-radius:11px;color:var(--muted);font-weight:800;border:1px solid transparent}.side-nav a:hover,.side-nav a.active{color:var(--text);background:rgba(37,240,198,.075);border-color:rgba(37,240,198,.18)}.app-main.dashboard{width:100%;padding:22px 0 42px;margin:0}.dashboard-compact .card{padding:16px}.compact-page-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:16px}.account-chip{max-width:360px}.metric-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}.metric-card{display:block;border:1px solid var(--line);background:rgba(10,17,19,.86);border-radius:16px;padding:16px;min-height:130px}.metric-card span{display:block;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;font-weight:900}.metric-card strong{display:block;font-size:1.75rem;letter-spacing:-.05em;margin:8px 0 4px}.metric-card p{margin:0;font-size:.9rem}.metric-card:hover{border-color:rgba(37,240,198,.32);background:rgba(37,240,198,.045)}.dashboard-two-col{display:grid;grid-template-columns:minmax(280px,.82fr) minmax(0,1.18fr);gap:14px}.compact-card{padding:16px}.compact-form{gap:11px}.compact-list{gap:12px}.section-head-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.quick-list{display:grid;gap:8px;margin-top:12px}.quick-list a{border:1px solid var(--line);border-radius:12px;padding:12px;background:rgba(255,255,255,.025);color:var(--muted);font-weight:800}.quick-list a:hover{color:var(--text);border-color:rgba(37,240,198,.32)}.back-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.feed-layout{grid-template-columns:340px minmax(0,1fr);align-items:start}.feed-list{display:grid;gap:12px}.compact-feed{max-height:620px;overflow:auto;padding-right:2px}.feed-post{border:1px solid var(--line);background:rgba(10,17,19,.82);border-radius:16px;padding:16px}.feed-post-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.feed-avatar{width:36px;height:36px;border-radius:13px;background:linear-gradient(135deg,rgba(37,240,198,.16),rgba(15,178,214,.14));border:1px solid rgba(37,240,198,.2);display:flex;align-items:center;justify-content:center;font-weight:950}.feed-post h3{margin:0 0 8px;font-size:1.05rem}.feed-post p{margin:0 0 10px;white-space:pre-wrap;overflow-wrap:anywhere}.feed-media{width:100%;max-height:360px;object-fit:cover;border:1px solid var(--line);border-radius:14px}.feed-link{display:inline-flex;border:1px solid rgba(37,240,198,.22);border-radius:12px;padding:10px 12px;color:var(--cyan);background:rgba(37,240,198,.04);overflow-wrap:anywhere}.feed-review-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:10px}.pill.published{color:var(--green);border-color:rgba(33,229,139,.42)}.pill.archived{color:var(--muted)}
.roster-toggle{background:linear-gradient(135deg,rgba(37,240,198,.16),rgba(15,178,214,.14));border-color:rgba(37,240,198,.34)}.roster-toggle-grip{color:var(--cyan)}.team-panel,.team-sidebar,.team-chat-main,.team-details{background:rgba(10,17,19,.88);border-color:var(--line)}
@media(max-width:980px){.app-shell{grid-template-columns:1fr;width:min(94vw,760px)}.app-sidebar{position:static;min-height:auto}.side-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-two-col,.feed-layout{grid-template-columns:1fr}.compact-page-head{display:grid}.account-chip{max-width:none}.header.compact-header{padding:0 18px}.header.compact-header .nav a{display:none}}
@media(max-width:620px){.side-nav{grid-template-columns:1fr}.metric-grid{grid-template-columns:1fr}.title{font-size:2.15rem}.card,.compact-card,.metric-card{border-radius:14px;padding:14px}.btn{padding:8px 11px}.app-main.dashboard{padding-top:14px}.feed-media{max-height:260px}}

/* Sprint 5 — admin user management */
.user-toolbar{display:grid;gap:12px;margin-top:18px}.user-filter-grid{display:grid;grid-template-columns:minmax(220px,1fr) 150px 160px auto;gap:10px;align-items:end}.user-filter-grid input,.user-filter-grid select,.user-edit-grid input,.user-edit-grid select{width:100%;border:1px solid var(--line);background:#0b1416;color:var(--text);border-radius:10px;padding:10px 11px;font:inherit}.user-list{display:grid;gap:12px;margin-top:16px}.user-card{display:grid;gap:14px}.user-card-top{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center}.user-avatar{width:42px;height:42px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-weight:950;color:#04110f;background:linear-gradient(135deg,var(--cyan),var(--purple));box-shadow:0 0 0 1px rgba(37,240,198,.12)}.user-main{min-width:0}.user-main h2{margin:2px 0 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-main .small{margin:0;overflow-wrap:anywhere}.user-presence{border:1px solid var(--line);border-radius:999px;padding:5px 9px;color:var(--muted);font-size:.78rem;font-weight:900}.user-presence.online{color:var(--green);border-color:rgba(33,229,139,.38);background:rgba(33,229,139,.055)}.user-presence.away{color:var(--yellow);border-color:rgba(228,200,107,.35);background:rgba(228,200,107,.055)}.user-meta-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.user-meta-grid div{border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.025);padding:10px}.user-meta-grid span{display:block;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.11em;font-weight:900;margin-bottom:4px}.user-meta-grid strong{display:block;font-size:.9rem;overflow-wrap:anywhere}.user-edit-grid{display:grid;grid-template-columns:160px 160px minmax(220px,1fr);gap:10px;align-items:end}.user-edit-grid label{display:grid;gap:6px;color:var(--muted);font-size:.8rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.user-actions{margin-top:0}.user-lock-note{margin:0}.user-row-status{margin:0}.btn.danger{border-color:rgba(239,91,104,.42);color:#ff99a3;background:rgba(239,91,104,.07)}.btn.danger:hover{border-color:rgba(239,91,104,.72)}
@media(max-width:860px){.user-filter-grid{grid-template-columns:1fr 1fr}.user-filter-grid input{grid-column:1/-1}.user-meta-grid{grid-template-columns:1fr 1fr}.user-edit-grid{grid-template-columns:1fr}.user-card-top{grid-template-columns:auto 1fr}.user-presence{grid-column:1/-1;width:max-content}}
@media(max-width:560px){.user-filter-grid,.user-meta-grid{grid-template-columns:1fr}.user-card-top{align-items:start}.user-actions .btn{width:100%;justify-content:center}.user-actions{display:grid}}


/* Sprint 5.1 — private commission profiles */
.user-edit-grid.user-edit-grid-commission{grid-template-columns:140px 140px 140px minmax(220px,1fr)}
.user-edit-grid input[type="number"]{appearance:textfield}
.user-edit-grid input[type="number"]::-webkit-outer-spin-button,
.user-edit-grid input[type="number"]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.user-meta-grid{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:1020px){.user-edit-grid.user-edit-grid-commission{grid-template-columns:1fr 1fr}.user-meta-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.user-edit-grid.user-edit-grid-commission,.user-meta-grid{grid-template-columns:1fr}}

/* Sprint 6A — commission dashboard shell */
.commission-layout{display:grid;grid-template-columns:minmax(320px,.85fr) minmax(0,1.15fr);gap:14px;align-items:start}.commission-filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.commission-filters input,.commission-filters select,.sale-actions select{border:1px solid var(--line);background:#0b1416;color:var(--text);border-radius:10px;padding:9px 10px;font:inherit}.commission-code-list{display:grid;gap:10px;margin-top:12px;max-height:560px;overflow:auto}.commission-code-row{border:1px solid var(--line);background:rgba(255,255,255,.025);border-radius:14px;padding:12px;display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.commission-code-row code,.own-code-display code{display:inline-block;border:1px solid rgba(37,240,198,.24);background:rgba(37,240,198,.06);color:var(--cyan);border-radius:10px;padding:7px 9px;font-weight:900;letter-spacing:.04em}.sales-list{display:grid;gap:10px;margin-top:14px}.sale-row{border:1px solid var(--line);background:rgba(10,17,19,.82);border-radius:14px;padding:13px;display:grid;grid-template-columns:minmax(0,1fr) 180px auto;gap:12px;align-items:center}.sale-main{min-width:0}.sale-main h3{margin:2px 0 4px;font-size:1.02rem}.sale-money{display:grid;gap:2px;text-align:right}.sale-money strong{font-size:1.08rem;color:var(--cyan)}.sale-money span,.sale-money small{color:var(--muted);font-size:.78rem}.sale-actions{justify-content:flex-end}.sale-row-readonly{grid-template-columns:minmax(0,1fr) 190px}.commission-own-code{margin-top:12px}.own-code-display{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.quick-list div{border:1px solid var(--line);border-radius:12px;padding:12px;background:rgba(255,255,255,.025)}.quick-list div p{margin:4px 0 0}@media(max-width:980px){.commission-layout{grid-template-columns:1fr}.sale-row,.sale-row-readonly{grid-template-columns:1fr}.sale-money{text-align:left}.sale-actions{justify-content:flex-start}.commission-filters{width:100%}.commission-filters input,.commission-filters select{flex:1 1 160px}}@media(max-width:560px){.commission-code-row{display:grid}.sale-actions{display:grid}.sale-actions .btn,.sale-actions select{width:100%}.own-code-display{display:grid}.own-code-display .btn{width:100%}}
