
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{display:flex;flex-direction:column;font:14px/1.45 system-ui,"Segoe UI",sans-serif;background:#16181d}
button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;padding:0}
input,textarea{font:inherit;color:inherit}
.sp{flex:1}

/* ---------- mockup control strip (not part of the product) ---------- */
.demo{flex:none;display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center;padding:7px 14px;background:#16181d;color:#aeb5c2;font-size:12.5px}
.demo b{color:#fff;letter-spacing:.06em;font-size:11.5px}
.demo .lab{margin-right:6px}
.seg{display:inline-flex;background:#2a2e38;border-radius:8px;padding:2px}
.seg button{padding:4px 11px;border-radius:6px;color:#aeb5c2}
.seg button.on{background:#fff;color:#111;font-weight:600}

/* ---------- skins ---------- */
#app{flex:1;min-height:0;display:flex;flex-direction:column;position:relative;overflow:hidden;background:var(--bg);color:var(--ink);font-family:var(--font)}
#app[data-skin=gmail]{--font:"Google Sans",Roboto,"Segoe UI",Arial,sans-serif;--bg:#f6f8fc;--surface:#fff;--ink:#1f1f1f;--muted:#5f6368;--line:#e6e9ef;
  --accent:#0b57d0;--accent-soft:#d3e3fd;--accent-ink:#001d35;--compose:#c2e7ff;--compose-ink:#001d35;--sel:#c2dbff;--hover:#f2f2f2;
  --topbg:transparent;--topink:#444746;--toph:64px;--searchbg:#e9eef6;--searchr:24px;--searchh:48px;--railw:72px;--navw:244px;
  --btnr:18px;--cardr:28px;--logobg:#0b57d0;--logoink:#fff}
#app[data-skin=outlook]{--font:"Segoe UI",system-ui,sans-serif;--bg:#f5f5f5;--surface:#fff;--ink:#242424;--muted:#616161;--line:#e0e0e0;
  --accent:#0f6cbd;--accent-soft:#ebf3fc;--accent-ink:#0f6cbd;--compose:#0f6cbd;--compose-ink:#fff;--sel:#cfe4fa;--hover:#f0f0f0;
  --topbg:#0f6cbd;--topink:#fff;--toph:48px;--searchbg:rgba(255,255,255,.88);--searchr:4px;--searchh:32px;--railw:48px;--navw:230px;
  --btnr:4px;--cardr:8px;--logobg:#fff;--logoink:#0f6cbd}

/* ---------- top bar ---------- */
.top{flex:none;display:flex;align-items:center;gap:8px;height:var(--toph);padding:0 12px;background:var(--topbg);color:var(--topink)}
.brand{display:flex;align-items:center;gap:9px;font-size:21px;min-width:214px;white-space:nowrap}
.brand b{font-weight:500}
.brand span{opacity:.75}
.logo{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:var(--logobg);color:var(--logoink)}
.search{flex:1;max-width:720px;display:flex;align-items:center;gap:10px;height:var(--searchh);padding:0 16px;background:var(--searchbg);border-radius:var(--searchr);color:var(--muted)}
.search input{flex:1;min-width:0;border:0;background:none;outline:0;color:#1f1f1f}
.top-r{margin-left:auto;display:flex;align-items:center;gap:4px}
.ib{width:40px;height:40px;border-radius:50%;display:inline-grid;place-items:center;flex:none}
.ib:hover{background:rgba(0,0,0,.07)}
.ib.sm{width:32px;height:32px}
#app[data-skin=outlook] .top{gap:6px}
#app[data-skin=outlook] .brand{font-size:16px;min-width:0;margin-right:8px}
#app[data-skin=outlook] .brand b{font-weight:600}
#app[data-skin=outlook] .logo{width:26px;height:26px;border-radius:5px}
#app[data-skin=outlook] .search{flex:0 1 520px;margin:0 auto}
#app[data-skin=outlook] .top .ib{width:36px;height:36px;border-radius:4px}
#app[data-skin=outlook] .top .ib:hover{background:rgba(255,255,255,.16)}
.av{width:32px;height:32px;border-radius:50%;display:inline-grid;place-items:center;flex:none;font-size:12px;font-weight:600;color:#fff;background:var(--c,#5f6368);font-family:system-ui,"Segoe UI",sans-serif}
.av.xs{width:22px;height:22px;font-size:9.5px}

/* ---------- status banner ---------- */
.banner{flex:none;display:flex;gap:10px;align-items:flex-start;padding:9px 16px;font-size:13.5px;line-height:1.4}
.banner svg{flex:none;margin-top:1px}
.banner.out{background:#fef3d6;color:#5c3d00;border-bottom:1px solid #f1d58a}
.banner.ok{background:#e1f5e7;color:#0c4a22;border-bottom:1px solid #a8dcb8}

/* ---------- body: rail, nav, main ---------- */
.body{flex:1;min-height:0;display:flex}
.rail{flex:none;width:var(--railw);display:flex;flex-direction:column;align-items:center;gap:8px;padding-top:10px}
.rb{position:relative;width:100%;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11.5px;color:var(--muted)}
.rb i{display:grid;place-items:center;width:52px;height:32px;border-radius:16px}
.rb:hover i{background:rgba(0,0,0,.07)}
.rb.on{color:var(--ink);font-weight:600}
.rb.on i{background:var(--accent-soft);color:var(--accent-ink)}
.rb .bd{position:absolute;top:-2px;right:8px}
#app[data-skin=outlook] .rail{background:#e9e9e9;gap:4px;padding-top:6px}
#app[data-skin=outlook] .rb span.rl{display:none}
#app[data-skin=outlook] .rb i{width:40px;height:40px;border-radius:4px}
#app[data-skin=outlook] .rb.on i{background:#fff;color:var(--accent)}
#app[data-skin=outlook] .rb.on::before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:3px;border-radius:2px;background:var(--accent)}
#app[data-skin=outlook] .rb .bd{right:0}
.bd{min-width:18px;height:18px;padding:0 5px;border-radius:9px;display:inline-grid;place-items:center;background:#d93025;color:#fff;font-size:11px;font-weight:700;font-style:normal}

.nav{flex:none;width:var(--navw);display:flex;flex-direction:column;padding:8px 0 12px;overflow:auto}
.cbtn{align-self:flex-start;display:inline-flex;align-items:center;gap:12px;height:56px;margin:0 0 14px 8px;padding:0 24px 0 16px;border-radius:16px;background:var(--compose);color:var(--compose-ink);font-weight:500}
.cbtn:hover{box-shadow:0 1px 3px rgba(60,64,67,.3),0 4px 8px rgba(60,64,67,.15)}
.fi{display:flex;align-items:center;gap:14px;flex:none;height:32px;width:calc(100% - 12px);padding:0 12px 0 22px;border-radius:0 16px 16px 0;text-align:left}
.fi:hover{background:rgba(0,0,0,.06)}
.fi.on{background:var(--accent-soft);font-weight:700}
.fi.un{font-weight:700}
.fi .fn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fi .n{margin-left:auto;font-size:12px;font-weight:400;color:var(--muted)}
.fi .bd{margin-left:auto}
.fi .n+.bd{margin-left:0}
.nh{padding:16px 22px 4px;font-size:12px;font-weight:600;color:var(--muted)}
.navfoot{margin:auto 12px 0;padding:10px 12px;border-radius:12px;background:rgba(0,0,0,.045);font-size:12px;line-height:1.45;color:var(--muted)}
.navfoot b{color:var(--ink)}
#app[data-skin=outlook] .cbtn{height:32px;margin:4px 12px 12px;padding:0 14px 0 10px;gap:8px;border-radius:4px;font-weight:600}
#app[data-skin=outlook] .fi{height:34px;width:calc(100% - 16px);margin:0 8px;padding:0 10px;gap:10px;border-radius:4px}
#app[data-skin=outlook] .fi.on{background:var(--sel);font-weight:600}
#app[data-skin=outlook] .nh{padding:14px 18px 4px}
#app[data-skin=outlook] .navfoot{border-radius:4px}

.main{flex:1;min-width:0;display:flex;position:relative;background:var(--surface)}
#app[data-skin=gmail] .main{margin:0 16px 16px 0;border-radius:16px;overflow:hidden}
#app[data-skin=outlook] .main{border-left:1px solid var(--line)}

/* ---------- message list ---------- */
.list{flex:1;min-width:0;display:flex;flex-direction:column;position:relative}
.lh{flex:none;display:flex;align-items:center;height:48px;padding:0 16px;border-bottom:1px solid var(--line);font-size:12.5px;color:var(--muted)}
.lh>span{flex:1;display:flex;align-items:center;gap:6px}
.lh b{font-size:16px;color:var(--ink)}
.lh-g{display:none!important}
.rows{flex:1;overflow:auto}
.grp{padding:14px 16px 6px;font-size:12px;font-weight:600;color:var(--muted)}
.end{padding:22px 16px 90px;text-align:center;font-size:12.5px;color:var(--muted)}
.chk{width:18px;height:18px;flex:none;border:2px solid #9aa0a6;border-radius:2px;display:none}
.star{display:none;color:#9aa0a6;place-items:center}
.star.on svg{fill:#f4b400;stroke:#f4b400}
.row{position:relative;display:grid;grid-template-columns:36px minmax(0,1fr) auto;grid-template-areas:"av from time" "av subj chip" "av snip snip";column-gap:12px;row-gap:1px;align-items:center;padding:10px 14px 10px 14px;border-bottom:1px solid var(--line);cursor:pointer;font-size:13.5px}
.row:hover{background:var(--hover)}
.row.sel{background:var(--sel)}
.row .av{grid-area:av;align-self:start;width:36px;height:36px;margin-top:2px}
.row .line,.row .meta{display:contents}
.row .from,.row .subj,.row .snip{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row .from{grid-area:from;font-size:14.5px}
.row .subj{grid-area:subj}
.row .snip{grid-area:snip;color:var(--muted)}
.row .dash{display:none}
.row .time{grid-area:time;font-size:12px;color:var(--muted);white-space:nowrap}
.row .chipw{grid-area:chip;justify-self:end;display:flex;align-items:center;gap:6px;color:var(--muted)}
.row.unread .from,.row.unread .subj{font-weight:700}
.row.unread .subj,.row.unread .time{color:var(--accent)}
.row.unread::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent)}
.chip{padding:1px 7px;border-radius:9px;font-size:11px;font-weight:600;white-space:nowrap}
.chip.held{background:#fde9b8;color:#6b4700}
.chip.done{background:#d5f0dd;color:#0c4a22}
.chip.sent{background:#e3e8f0;color:#3c4656}
.empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:40px;text-align:center;color:var(--muted)}
.fab{display:none}

/* ---------- reading pane ---------- */
.read{flex:1;min-width:0;display:flex;flex-direction:column}
.rtools{flex:none;display:flex;align-items:center;gap:2px;height:48px;padding:0 8px;border-bottom:1px solid var(--line);color:var(--muted)}
.back{display:none}
.rscroll{flex:1;overflow:auto;padding:6px 24px 40px}
.rsubj{margin:16px 0 14px 52px;font-size:22px;font-weight:400;line-height:1.3}
.lbl{margin-left:6px;padding:1px 6px;border-radius:4px;background:#e8eaed;color:#444;font-size:12px;vertical-align:middle}
.note{display:flex;gap:8px;margin:0 0 14px 52px;padding:8px 12px;border-radius:8px;background:#fef3d6;color:#5c3d00;font-size:13px;line-height:1.4}
.note.ok{background:#e1f5e7;color:#0c4a22}
.note.grey{background:#eef1f5;color:#3c4656}
.note svg{flex:none;margin-top:1px}
.msg{padding:12px 0 18px}
.msg+.msg{border-top:1px solid var(--line)}
.mh{display:flex;gap:12px;align-items:center}
.mh .av{width:40px;height:40px;font-size:14px}
.who{flex:1;min-width:0;font-size:14px}
.who .em,.who .to{font-size:12.5px;color:var(--muted)}
.who .to{display:block}
.when{font-size:12.5px;color:var(--muted);white-space:nowrap}
.mb{max-width:72ch;margin:14px 0 0 52px;font-size:14px;line-height:1.55}
.mb p{margin:0 0 12px}
.att{display:inline-flex;align-items:center;gap:10px;margin:4px 0 0 52px;padding:8px 14px 8px 10px;border:1px solid var(--line);border-radius:8px;font-size:13px}
.att small{color:var(--muted)}
.rbtns{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 0 52px}
.rbtns button{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 16px;border:1px solid #747775;border-radius:var(--btnr);color:#444746}
.rbtns button:hover{background:var(--hover)}
.rbox{margin:18px 0 0 52px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.12)}
.rbox .rto{font-size:13px;color:var(--muted);padding-bottom:8px}
.rbox textarea{display:block;width:100%;min-height:110px;border:0;outline:0;resize:vertical}
.rf{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
.send{height:36px;padding:0 22px;border-radius:var(--btnr);background:var(--accent);color:#fff;font-weight:600}
.send:hover{filter:brightness(1.08)}
.hint{font-size:12px;color:var(--muted)}
#app[data-skin=outlook] .read{background:#f5f5f5}
#app[data-skin=outlook] .rtools{background:#fff}
#app[data-skin=outlook] .rtools .ib{border-radius:4px}
#app[data-skin=outlook] .rscroll{padding:10px 16px 40px}
#app[data-skin=outlook] .rsubj{margin:6px 4px 12px;font-size:18px;font-weight:600}
#app[data-skin=outlook] .lbl{display:none}
#app[data-skin=outlook] .note,#app[data-skin=outlook] .rbtns,#app[data-skin=outlook] .rbox{margin-left:0}
#app[data-skin=outlook] .note{border-radius:4px}
#app[data-skin=outlook] .msg{margin-bottom:10px;padding:14px 16px 18px;border:1px solid var(--line);border-radius:4px;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.06)}
#app[data-skin=outlook] .rbtns button{border-color:#d1d1d1;background:#fff}
#app[data-skin=outlook] .rbox{border-radius:4px}

/* ---------- compose window ---------- */
.compose{position:absolute;right:24px;bottom:0;z-index:30;display:flex;flex-direction:column;width:min(540px,calc(100% - 24px));height:min(520px,calc(100% - 70px));background:#fff;color:#1f1f1f;border-radius:12px 12px 0 0;box-shadow:0 8px 28px rgba(0,0,0,.3)}
.ch{flex:none;display:flex;align-items:center;height:42px;padding:0 4px 0 16px;border-radius:12px 12px 0 0;background:#f2f6fc;font-weight:500}
.compose input{flex:none;border:0;border-bottom:1px solid #eceff1;padding:10px 16px;outline:0}
.compose textarea{flex:1;border:0;outline:0;padding:12px 16px;resize:none}
.cf{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:10px 16px}
#app[data-skin=outlook] .compose{border-radius:6px 6px 0 0}
#app[data-skin=outlook] .ch{border-radius:6px 6px 0 0;background:var(--accent);color:#fff}

/* ---------- chat ---------- */
.chatmain{flex-direction:column}
.chd{flex:none;display:flex;align-items:center;gap:10px;height:56px;padding:0 16px;border-bottom:1px solid var(--line);font-size:16px;font-weight:600}
.chd small{display:block;font-size:12.5px;font-weight:400;color:var(--muted)}
.cmsgs{flex:1;overflow:auto;display:flex;flex-direction:column;gap:14px;padding:16px 20px}
.daysep{align-self:center;font-size:12px;color:var(--muted)}
.cm{display:flex;gap:10px;max-width:760px}
.cm .av{width:34px;height:34px}
.cb{min-width:0}
.cn{font-size:13px;font-weight:600}
.cn span{margin-left:6px;font-size:12px;font-weight:400;color:var(--muted)}
.ct{font-size:14px;line-height:1.45;overflow-wrap:anywhere}
.mention{padding:0 3px;border-radius:4px;background:var(--accent-soft);color:var(--accent);font-weight:600}
.mention.me{background:#fde293;color:#5c3d00}
.mrow{display:block;width:100%;max-width:760px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;text-align:left;background:var(--surface)}
.mrow:hover{background:var(--hover)}
.mrow small{display:block;margin-bottom:4px;color:var(--muted)}
.cbox{flex:none;position:relative;display:flex;align-items:center;gap:8px;margin:0 16px 16px;padding:5px 6px 5px 18px;border:1px solid #c4c7c5;border-radius:24px;background:#fff}
.cbox input{flex:1;min-width:0;height:36px;border:0;outline:0;background:none}
.sendb{width:36px;height:36px;flex:none;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:#fff}
.mpop{position:absolute;left:8px;bottom:calc(100% + 6px);z-index:5;width:270px;padding:4px;border:1px solid var(--line);border-radius:10px;background:#fff;box-shadow:0 6px 20px rgba(0,0,0,.2)}
.mpop[hidden]{display:none}
.mpop button{display:flex;align-items:center;gap:10px;width:100%;padding:6px 8px;border-radius:6px;text-align:left;font-size:13.5px}
.mpop button:hover,.mpop button:first-child{background:var(--accent-soft)}
.cnote{margin:0 16px 16px;padding:10px 14px;border-radius:10px;background:#eef1f5;color:#3c4656;font-size:13px}
.reqcard{align-self:center;max-width:440px;margin-top:8px;padding:20px 22px;border:1px solid var(--line);border-radius:12px;background:var(--surface);text-align:center}
.reqcard p{margin:6px 0 0;color:var(--muted);font-size:13px}
.btns{display:flex;justify-content:center;gap:10px;margin-top:14px}
.btn{height:36px;padding:0 20px;border:1px solid #c4c7c5;border-radius:var(--btnr);font-weight:600}
.btn.pri{border-color:var(--accent);background:var(--accent);color:#fff}
#app[data-skin=outlook] .chatmain{background:#f5f5f5}
#app[data-skin=outlook] .chd{background:#fff}
#app[data-skin=outlook] .cb{padding:8px 12px;border-radius:6px;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.1)}
#app[data-skin=outlook] .cm.mine{align-self:flex-end;flex-direction:row-reverse}
#app[data-skin=outlook] .cm.mine .av{display:none}
#app[data-skin=outlook] .cm.mine .cb{background:#dcebfb}
#app[data-skin=outlook] .cbox{border-radius:6px;padding-left:12px}
#app[data-skin=outlook] .sendb{border-radius:4px}

.modal{position:absolute;inset:0;z-index:40;display:grid;place-items:center;background:rgba(0,0,0,.35)}
.mcard{width:min(380px,92%);padding:18px;border-radius:12px;background:#fff;color:#1f1f1f}
.mcard h2{margin:0 0 4px;font-size:18px;font-weight:600}
.mcard p{margin:0 0 12px;font-size:13px;color:#5f6368}
.mcard .pp{display:flex;align-items:center;gap:12px;width:100%;padding:8px;border-radius:8px;text-align:left}
.mcard .pp:hover{background:#eef1f5}
.mcard .pp small{display:block;color:#5f6368}

.tabs{display:none}
.scrim{display:none}

/* ---------- SMS sign-in ---------- */
.signin{flex:1;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:32px 64px;padding:28px 20px;overflow:auto}
.scard{width:min(410px,100%);padding:36px 32px;border-radius:var(--cardr);background:#fff;color:#1f1f1f;box-shadow:0 2px 10px rgba(0,0,0,.1)}
.scard .brand{min-width:0;color:#444746}
.scard .logo{background:var(--accent);color:#fff}
.scard h1{margin:22px 0 8px;font-size:26px;font-weight:400}
.scard p{margin:0 0 18px;color:#444746;line-height:1.5}
.scard input{width:100%;height:48px;margin-bottom:16px;padding:0 14px;border:1px solid #747775;border-radius:var(--btnr);font-size:16px}
#app[data-skin=gmail] .scard input{border-radius:8px}
.scard .send{width:100%;height:44px;font-size:15px}
.scard small{display:block;margin-top:16px;color:#5f6368;font-size:12.5px;line-height:1.5}
.scard .lk{margin-top:6px;color:var(--accent);font-weight:600}
.phone{flex:none;width:272px;height:520px;padding:11px;border-radius:40px;background:#111;box-shadow:0 20px 50px rgba(0,0,0,.3)}
.pscreen{height:100%;display:flex;flex-direction:column;gap:10px;padding:14px 12px;border-radius:30px;background:#f2f2f7;color:#111;font-family:system-ui,"Segoe UI",sans-serif}
.pf{padding-bottom:9px;border-bottom:1px solid #d9d9de;text-align:center;font-size:13px;font-weight:600}
.pf small{display:block;font-weight:400;color:#777}
.pt{text-align:center;font-size:11.5px;color:#777}
.bub{align-self:flex-start;max-width:90%;padding:9px 12px;border-radius:18px;background:#e2e2e8;font-size:13.5px;line-height:1.38}
.bub a{color:#0b57d0;text-decoration:underline;cursor:pointer;overflow-wrap:anywhere}

#toast{position:fixed;left:50%;bottom:78px;z-index:99;max-width:90vw;padding:10px 16px;border-radius:8px;background:#323232;color:#fff;font-size:13.5px;transform:translateX(-50%);opacity:0;pointer-events:none;transition:opacity .2s}
#toast.show{opacity:1}

.banner.test{background:#e3edfd;color:#0b3a82;border-bottom:1px solid #b5cdf6}

/* ---------- admin console ---------- */
#app[data-view=admin]{--font:"Segoe UI",system-ui,sans-serif;--bg:#f2f4f7;--surface:#fff;--ink:#18202b;--muted:#5b6675;--line:#dde2e9;--accent:#1f5fbf;--accent-soft:#e6eefb;--hover:#f3f5f8;--btnr:6px;--logobg:#fff;--logoink:#18202b}
.atop{flex:none;display:flex;align-items:center;gap:10px;height:52px;padding:0 16px;background:#18202b;color:#fff}
.abrand{display:flex;align-items:center;gap:9px;font-size:16px;white-space:nowrap}
.abrand span{opacity:.7}
.node{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:12px;background:rgba(255,255,255,.12);font-size:12px;white-space:nowrap}
.node::before{content:"";width:8px;height:8px;border-radius:50%;background:#3ccf73}
.abody{flex:1;overflow:auto}
.awrap{max-width:1080px;margin:0 auto;padding:20px 24px 48px}
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:10px;font-size:13px;color:var(--muted)}
.crumbs button{color:var(--accent);font-weight:600}
.ah{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0 0 16px}
.ah h1{margin:0;font-size:22px;font-weight:600}
.ah small{color:var(--muted);font-size:13px}
.card{margin-bottom:16px;padding:16px 18px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.card h2{display:flex;align-items:center;gap:8px;margin:0 0 4px;font-size:15px;font-weight:600}
.card p{margin:0 0 12px;color:var(--muted);font-size:13px;line-height:1.5}
.card ol{margin:0 0 12px;padding-left:20px;font-size:13.5px;line-height:1.6}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.grid2 .card{margin:0}
.badge{display:inline-block;padding:2px 9px;border-radius:10px;font-size:11.5px;font-weight:700;white-space:nowrap}
.b-ready{background:#dcf3e3;color:#0c4a22}.b-test{background:#dfe9fc;color:#0b3a82}.b-outage{background:#fbd9a5;color:#6b3a00}
.b-setup{background:#ece3fa;color:#4a2a86}.b-grey{background:#e6e9ee;color:#3c4656}.b-warn{background:#fde2e0;color:#8a1c12}
.abtn{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 14px;border:1px solid #c3cad4;border-radius:6px;background:#fff;color:#18202b;font-weight:600;font-size:13.5px;white-space:nowrap}
.abtn:hover{background:#f3f5f8}
.abtn.pri{border-color:var(--accent);background:var(--accent);color:#fff}
.abtn.warn{border-color:#b45309;background:#b45309;color:#fff}
.abtn.pri:hover,.abtn.warn:hover{filter:brightness(1.1)}
.abtn.sm{height:28px;padding:0 10px;font-size:12.5px}
.abtn[disabled]{opacity:.45;cursor:default}
.tb2{margin-bottom:16px;border:1px solid var(--line);border-radius:10px;background:var(--surface);overflow:hidden}
.trow{display:grid;grid-template-columns:var(--cols);gap:12px;align-items:center;padding:10px 16px;border-top:1px solid var(--line);font-size:13.5px}
.trow>*{min-width:0}
.trow.th{border-top:0;background:#f7f8fa;font-size:12px;font-weight:600;color:var(--muted)}
.trow.click{cursor:pointer}
.trow.click:hover{background:var(--hover)}
.t1 b,.t1 small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.t1 small{color:var(--muted)}
.num{font-variant-numeric:tabular-nums}
.mono,.rec code,.callout code{font-family:Consolas,"Cascadia Mono",monospace;font-size:12.5px;overflow-wrap:anywhere}
.atabs{display:flex;gap:4px;margin-bottom:16px;border-bottom:1px solid var(--line);overflow-x:auto}
.atabs button{padding:9px 14px;border-bottom:2px solid transparent;font-weight:600;color:var(--muted);white-space:nowrap}
.atabs button.on{border-color:var(--accent);color:var(--accent)}
.mopts{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.mopt{display:block;padding:14px;border:2px solid var(--line);border-radius:10px;background:#fff;text-align:left}
.mopt:hover{border-color:#aab4c1}
.mopt b{display:block;margin-bottom:4px;font-size:14.5px}
.mopt span{display:block;font-size:12.5px;line-height:1.45;color:var(--muted)}
.mopt em{display:inline-block;margin-top:8px;font-style:normal;font-size:11.5px;font-weight:700;color:var(--accent)}
.mopt.on{border-color:var(--accent);background:var(--accent-soft)}
.mopt.on.outage{border-color:#b45309;background:#fff3df}
.mopt.on.outage em{color:#8a4300}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.stat{padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.stat b{display:block;font-size:22px;font-weight:600}
.stat span{font-size:12.5px;color:var(--muted)}
.log{margin:0;padding:0;list-style:none;font-size:13px}
.log li{display:flex;gap:12px;padding:6px 0;border-top:1px solid var(--line)}
.log li:first-child{border:0}
.log time{flex:none;width:44px;color:var(--muted);font-variant-numeric:tabular-nums}
.sw{position:relative;display:inline-block;width:38px;height:22px;border-radius:11px;background:#c3cad4;vertical-align:middle}
.sw::after{content:"";position:absolute;left:2px;top:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:left .15s}
.sw.on{background:#1e8e3e}
.sw.on::after{left:18px}
.tick{width:20px;height:20px;flex:none;display:inline-grid;place-items:center;border:2px solid #9aa4b1;border-radius:4px;color:#fff;vertical-align:middle}
.tick.on{border-color:var(--accent);background:var(--accent)}
.ck{display:flex;gap:8px;align-items:center;margin:0 0 12px;font-size:13.5px}
.callout{margin-bottom:12px;padding:10px 12px;border-radius:8px;background:#eef1f5;font-size:13px;line-height:1.55}
.callout.ok{background:#e1f5e7;color:#0c4a22}
.callout.warn{background:#fef3d6;color:#5c3d00}
.old{text-decoration:line-through;opacity:.7}
.path{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;font-size:13px}
.pbox{padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:#f7f8fa}
.pbox b{display:block}
.opt{display:flex;gap:10px;align-items:flex-start;width:100%;margin-bottom:8px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;text-align:left}
.opt .rd{flex:none;width:18px;height:18px;margin-top:2px;border:2px solid #9aa4b1;border-radius:50%}
.opt.on{border-color:var(--accent);background:var(--accent-soft)}
.opt.on .rd{border:5px solid var(--accent)}
.opt b{display:block}
.opt .d{font-size:12.5px;line-height:1.45;color:var(--muted)}
.subopts{display:grid;gap:8px;margin:2px 0 12px 40px;font-size:13px}
.subopts button{display:flex;gap:8px;align-items:center;text-align:left}
.wiz{display:grid;grid-template-columns:230px minmax(0,1fr);gap:16px;align-items:start}
.steps{padding:8px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.stp{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border-radius:8px;text-align:left;font-size:13.5px}
.stp:hover{background:var(--hover)}
.stp.on{background:var(--accent-soft);font-weight:600}
.stp i{flex:none;width:24px;height:24px;display:grid;place-items:center;border:2px solid #b6bec9;border-radius:50%;font-style:normal;font-size:12px;font-weight:700;color:var(--muted)}
.stp.cur i{border-color:var(--accent);color:var(--accent)}
.stp.done i{border-color:#1e8e3e;background:#1e8e3e;color:#fff}
.rec{display:grid;grid-template-columns:minmax(0,1.1fr) 50px minmax(0,2fr) auto;gap:12px;align-items:center;margin-bottom:8px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;font-size:13px}
.rec .rl{display:block;font-size:11px;color:var(--muted)}
.rec .rc{display:flex;align-items:center;gap:8px}
.wf{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px}
.modal .mcard.wide{width:min(480px,94%)}
.mcard input[type=text]{width:100%;height:40px;margin-bottom:12px;padding:0 12px;border:1px solid #9aa4b1;border-radius:6px}
@media (max-width:800px){
  .awrap{padding:14px 12px 40px}
  .grid2,.mopts,.wiz{grid-template-columns:1fr}
  .stats{grid-template-columns:1fr 1fr}
  .trow.th{display:none}
  .trow{grid-template-columns:1fr 1fr;gap:4px 12px}
  .trow>.t1{grid-column:1/-1}
  .trow>[data-l]::before{content:attr(data-l) ": ";font-size:12px;color:var(--muted)}
  .rec{grid-template-columns:1fr auto}
  .rec .rv,.rec .rc{grid-column:1/-1}
  .steps{display:flex;gap:2px;overflow-x:auto}
  .stp{width:auto;flex:none}
  .stp:not(.on) span{display:none}
  .subopts{margin-left:12px}
}

.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:16px}
.grid3 .card{margin:0}
.brow{display:grid;grid-template-columns:130px 1fr 80px;gap:10px;align-items:center;margin-bottom:8px;font-size:13px}
.bar{height:8px;border-radius:4px;background:#e6e9ee;overflow:hidden}
.bar i{display:block;height:100%;background:var(--accent)}
.rsel{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:12px}
.rsel label{display:grid;gap:3px;font-size:12px;color:var(--muted)}
.rsel select,.asel{height:34px;padding:0 8px;border:1px solid #c3cad4;border-radius:6px;background:#fff;color:#18202b;font:inherit;font-size:13.5px}

/* ---------- files (user side) ---------- */
.filemain{flex-direction:column}
.fhd{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:52px;padding:6px 16px;border-bottom:1px solid var(--line);font-size:15px}
.fhd button{color:var(--accent);font-weight:600}
.fnote{flex:none;display:flex;gap:8px;margin:12px 16px 4px;padding:8px 12px;border-radius:8px;background:#eef1f5;color:#3c4656;font-size:13px;line-height:1.4}
.fnote svg{flex:none;margin-top:1px}
.frows{flex:1;overflow:auto;padding:4px 0 24px}
.frow{display:grid;grid-template-columns:minmax(0,1fr) 100px 150px 80px 40px;gap:12px;align-items:center;min-height:44px;padding:4px 16px;border-bottom:1px solid var(--line);font-size:13.5px}
.frow.fh{min-height:34px;font-size:12px;font-weight:600;color:var(--muted)}
.frow.dir{cursor:pointer}
.frow:not(.fh):hover{background:var(--hover)}
.fname{display:flex;align-items:center;gap:10px;min-width:0}
.fname span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fname svg{flex:none;color:var(--muted)}
.frow.dir .fname svg{color:#b97d00}
.fmeta{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:800px){
  .grid3{grid-template-columns:1fr}
  .brow{grid-template-columns:96px 1fr 70px}
  .frow{grid-template-columns:minmax(0,1fr) 40px}
  .frow .fmeta,.frow.fh{display:none}
}

/* ---------- desktop-only skin layout ---------- */
@media (min-width:801px){
  #app[data-skin=gmail] .mailmain.has-open .list,#app[data-skin=gmail] .mailmain:not(.has-open) .read{display:none}
  #app[data-skin=gmail] .rtools .back{display:inline-grid}
  #app[data-skin=gmail] .lh-g{display:flex!important}
  #app[data-skin=gmail] .lh-o,#app[data-skin=gmail] .grp{display:none}
  #app[data-skin=gmail] .chk{display:inline-block}
  #app[data-skin=gmail] .star{display:inline-grid}
  #app[data-skin=gmail] .row{grid-template-columns:18px 22px 190px minmax(0,1fr) auto;grid-template-areas:none;gap:0 12px;height:40px;padding:0 16px;border-bottom-color:#eceff3;background:#f2f6fc}
  #app[data-skin=gmail] .row>*{grid-area:auto}
  #app[data-skin=gmail] .row .av{display:none}
  #app[data-skin=gmail] .row .from{font-size:14px}
  #app[data-skin=gmail] .row .line{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  #app[data-skin=gmail] .row .subj,#app[data-skin=gmail] .row .snip,#app[data-skin=gmail] .row .dash{display:inline}
  #app[data-skin=gmail] .row .meta{display:flex;align-items:center;gap:10px;padding-left:12px}
  #app[data-skin=gmail] .row.unread{background:#fff}
  #app[data-skin=gmail] .row.unread::before{display:none}
  #app[data-skin=gmail] .row.unread .subj{color:inherit}
  #app[data-skin=gmail] .row.unread .time{color:var(--ink);font-weight:700}
  #app[data-skin=gmail] .row:hover{z-index:1;box-shadow:inset 1px 0 0 #dadce0,inset -1px 0 0 #dadce0,0 1px 2px rgba(60,64,67,.3),0 1px 3px 1px rgba(60,64,67,.15)}
  #app[data-skin=gmail] .end{padding-bottom:28px}
  #app[data-skin=outlook] .list{flex:none;width:372px;border-right:1px solid var(--line)}
  #app[data-skin=outlook] .end{padding-bottom:28px}
}

/* ---------- phone ---------- */
@media (max-width:800px){
  .demo{gap:6px 10px;padding:6px 8px}
  .demo .lab{display:none}
  #app[data-skin] .top{height:56px;gap:6px;padding:0 8px}
  #app[data-skin] .brand{min-width:0;margin:0}
  #app[data-skin] .brand b,#app[data-skin] .brand span,#app[data-skin] .top-r .ib{display:none}
  #app[data-skin] .top-r .ib.so{display:inline-grid}
  #app[data-skin] .search{flex:1;max-width:none;margin:0;height:40px;padding:0 12px}
  #app[data-skin] .rail{display:none}
  #app[data-skin] .banner{padding:8px 12px;font-size:12.5px}
  #app[data-skin] .main{margin:0;border:0;border-radius:0}
  #app[data-skin] .nav{position:absolute;left:0;top:0;bottom:0;z-index:25;width:284px;padding-top:16px;background:var(--surface);box-shadow:0 0 24px rgba(0,0,0,.3);transform:translateX(-105%);transition:transform .18s}
  #app[data-nav="1"] .nav{transform:none}
  #app[data-nav="1"] .scrim{display:block;position:absolute;inset:0;z-index:20;background:rgba(0,0,0,.35)}
  #app[data-skin] .mailmain.has-open .list,#app[data-skin] .mailmain:not(.has-open) .read{display:none}
  #app[data-skin] .back{display:inline-grid}
  #app[data-skin] .fab{position:absolute;right:16px;bottom:16px;z-index:5;display:inline-flex;align-items:center;gap:10px;height:52px;padding:0 20px 0 16px;border-radius:16px;background:var(--compose);color:var(--compose-ink);font-weight:600;box-shadow:0 3px 10px rgba(0,0,0,.25)}
  #app[data-skin] .rscroll{padding:4px 14px 32px}
  #app[data-skin] .rsubj{margin:12px 0;font-size:19px}
  #app[data-skin] .mb,#app[data-skin] .att,#app[data-skin] .rbtns,#app[data-skin] .rbox,#app[data-skin] .note{margin-left:0}
  #app[data-skin] .who .em{display:none}
  #app[data-skin] .compose{inset:0;width:auto;height:auto;border-radius:0}
  #app[data-skin] .ch{border-radius:0}
  #app[data-skin] .cmsgs{padding:14px 12px}
  #app[data-skin] .cbox{margin:0 10px 10px}
  #app[data-skin] .tabs{flex:none;display:flex;height:58px;border-top:1px solid var(--line);background:var(--surface)}
  .tb{flex:1;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:11.5px;color:var(--muted)}
  .tb.on{color:var(--accent);font-weight:600}
  .tb .bd{position:absolute;top:6px;left:calc(50% + 8px)}
  .signin{align-items:flex-start;padding:18px 14px}
  .scard{padding:28px 22px}
}
