/* Pera Pixel — shared styles for portal, HQ and team board */
:root{
  color-scheme:dark;
  --bg:#0B0C0F; --bg-2:#111318; --surface:#14161C; --surface-2:#1A1D24; --line:#262A33; --line-2:#3A3E49; --line-soft:#1C1F27;
  --ink:#F2F1EC; --ink-2:#C9CAD1; --muted:#9A9DA8;
  --blue:#3050FF; --blue-h:#2440E0; --blue-soft:#8FA2FF; --blue-bg:rgba(48,80,255,.14);
  --amber:#FFB547; --amber-bg:rgba(255,181,71,.13); --green:#3DD68C; --green-bg:rgba(61,214,140,.13);
  --red:#FF5D4D; --red-bg:rgba(255,93,77,.13); --violet:#B48CFF; --violet-bg:rgba(180,140,255,.14);
  --gray-bg:rgba(154,157,168,.14);
  --sans:'Instrument Sans',ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  --shadow:0 20px 60px rgba(0,0,0,.45);
  --r:14px;
}
:root[data-theme="light"]{
  color-scheme:light;
  --bg:#FAFAF7; --bg-2:#F0F0EB; --surface:#FFFFFF; --surface-2:#F5F5F1; --line:#E2E2DB; --line-2:#CACAC1; --line-soft:#ECECE6;
  --ink:#0E0F12; --ink-2:#3A3D46; --muted:#666974;
  --blue-soft:#2440E0; --blue-bg:rgba(48,80,255,.09);
  --amber:#9A5B00; --amber-bg:rgba(255,170,40,.16); --green:#0E8A55; --green-bg:rgba(20,170,100,.12);
  --red:#C62D1F; --red-bg:rgba(220,60,40,.1); --violet:#6B3FD6; --violet-bg:rgba(120,70,230,.1);
  --gray-bg:rgba(100,100,110,.1);
  --shadow:0 20px 60px rgba(20,20,30,.14);
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--blue-soft);outline-offset:2px;border-radius:8px}
.mono{font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase}
.muted{color:var(--muted)}
.small{font-size:13px}
h1,h2,h3{margin:0;letter-spacing:-.025em;font-weight:600;font-stretch:94%}
h1{font-size:clamp(26px,3vw,34px);line-height:1.1}
h2{font-size:20px}
h3{font-size:16px}
p{margin:0}

/* top bar */
.top{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:18px;padding:env(safe-area-inset-top,0px) max(clamp(16px,3vw,32px),env(safe-area-inset-right,0px)) 0 max(clamp(16px,3vw,32px),env(safe-area-inset-left,0px));height:calc(64px + env(safe-area-inset-top,0px));box-sizing:border-box;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:600;letter-spacing:-.02em;white-space:nowrap}
.brand img{width:28px;height:28px;border-radius:7px}
.brand .tag{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--blue-soft);border:1px solid var(--line-2);padding:3px 7px;border-radius:999px;font-weight:500}
.nav{display:flex;gap:4px;margin-left:12px;overflow-x:auto;scrollbar-width:none}
.nav::-webkit-scrollbar{display:none}
.nav a,.nav button{background:none;border:0;padding:8px 12px;border-radius:999px;color:var(--muted);text-decoration:none;cursor:pointer;white-space:nowrap;font-size:14.5px}
.nav a:hover,.nav button:hover{color:var(--ink)}
.nav .on{background:var(--surface-2);color:var(--ink)}
.top .sp{flex:1}
.who{display:flex;align-items:center;gap:10px;font-size:14px}
.iconbtn{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:transparent;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex:none}
.iconbtn:hover{border-color:var(--line-2)}
.iconbtn svg{width:17px;height:17px}
.theme-toggle .sun{display:none}
:root[data-theme="light"] .theme-toggle .sun{display:block}
:root[data-theme="light"] .theme-toggle .moon{display:none}
.avatar{width:30px;height:30px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:#fff;flex:none;background:var(--blue)}
.avatar.sm{width:24px;height:24px;font-size:10.5px}
.avatar.av-empty{background:transparent;border:1px dashed var(--line-2);color:var(--muted)}

/* layout */
.main{max-width:1240px;margin:0 auto;padding:28px clamp(16px,3vw,32px) calc(80px + env(safe-area-inset-bottom,0px))}
.main.wide{max-width:none}
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:22px}
.head p{margin-top:6px}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:900px){.g3,.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.g2,.g3{grid-template-columns:1fr}.g4{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}}
.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.row.end{justify-content:flex-end}
.between{display:flex;align-items:center;justify-content:space-between;gap:12px}
.stack>*+*{margin-top:12px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:20px}
.card.pad0{padding:0}
.card h3+p{margin-top:4px}
.stat .n{font-size:30px;font-weight:600;letter-spacing:-.03em;margin-top:6px;font-variant-numeric:tabular-nums}
.stat .n small{font-size:14px;color:var(--muted);font-weight:500}
.sep{height:1px;background:var(--line);margin:18px 0;border:0}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:42px;padding:0 18px;border-radius:999px;border:1px solid transparent;font-weight:500;font-size:14.5px;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .15s,border-color .15s,opacity .15s}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-p{background:var(--blue);color:#fff}.btn-p:hover:not(:disabled){background:var(--blue-h)}
.btn-g{border-color:var(--line-2);background:transparent}.btn-g:hover:not(:disabled){border-color:var(--blue-soft)}
.btn-ok{background:var(--green);color:#03140B}
.btn-danger{border-color:var(--red-bg);color:var(--red);background:transparent}.btn-danger:hover{background:var(--red-bg)}
.btn-sm{height:34px;padding:0 13px;font-size:13.5px}
.btn-block{width:100%}
.link{background:none;border:0;padding:0;color:var(--blue-soft);cursor:pointer;text-decoration:underline;text-underline-offset:3px}

/* forms */
label.f{display:block}
label.f>span,div.f>span.fl{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}
.in,select.in,textarea.in{width:100%;height:42px;padding:0 13px;border-radius:10px;border:1px solid var(--line-2);background:var(--bg-2);outline:none;transition:border-color .15s}
textarea.in{height:auto;min-height:92px;padding:11px 13px;resize:vertical}
.in:focus{border-color:var(--blue-soft)}
.in.sm{height:34px;font-size:13.5px;padding:0 10px;border-radius:8px}
.check{display:flex;align-items:center;gap:10px;cursor:pointer}
.check input{width:18px;height:18px;accent-color:var(--blue)}
.err{color:var(--red);font-size:13.5px}
.note{font-size:13px;color:var(--muted)}
.choice{display:grid;gap:10px}
.opt{position:relative;display:block;cursor:pointer}
.opt input{position:absolute;opacity:0;pointer-events:none}
.opt .box{display:block;border:1px solid var(--line-2);border-radius:12px;padding:14px 16px;transition:border-color .15s,background .15s;height:100%}
.opt:hover .box{border-color:var(--blue-soft)}
.opt input:checked+.box{border-color:var(--blue);background:var(--blue-bg)}
.opt input:focus-visible+.box{outline:2px solid var(--blue-soft);outline-offset:2px}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{display:inline-flex;position:relative}
.chip input{position:absolute;opacity:0}
.chip span{padding:7px 13px;border:1px solid var(--line-2);border-radius:999px;cursor:pointer;font-size:13.5px}
.chip input:checked+span{background:var(--blue);border-color:var(--blue);color:#fff}
.chip input:focus-visible+span{outline:2px solid var(--blue-soft);outline-offset:2px}
@media (hover:none),(max-width:640px){.chip span{padding:10px 16px;font-size:14.5px}.chips{gap:10px}}

/* pills */
.pill{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:500;white-space:nowrap;background:var(--gray-bg);color:var(--ink-2)}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.pill.blue{background:var(--blue-bg);color:var(--blue-soft)}
.pill.amber{background:var(--amber-bg);color:var(--amber)}
.pill.green{background:var(--green-bg);color:var(--green)}
.pill.red{background:var(--red-bg);color:var(--red)}
.pill.violet{background:var(--violet-bg);color:var(--violet)}
.pill.plain::before{display:none}
.flag{font-size:12px;font-weight:600}
.flag.urgent{color:var(--red)}.flag.high{color:var(--amber)}.flag.low{color:var(--muted)}

/* tabs */
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:18px;overflow-x:auto;scrollbar-width:none}
.tabs button{background:none;border:0;border-bottom:2px solid transparent;padding:10px 12px;color:var(--muted);cursor:pointer;white-space:nowrap;margin-bottom:-1px}
.tabs button.on{color:var(--ink);border-bottom-color:var(--blue)}
.tabs .count{font-family:var(--mono);font-size:11px;margin-left:6px;color:var(--muted)}

/* list */
.list{display:flex;flex-direction:column}
.item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 16px;align-items:center;padding:16px 20px;border-top:1px solid var(--line);text-decoration:none;cursor:pointer;background:none;border-left:0;border-right:0;border-bottom:0;text-align:left;width:100%}
.item:first-child{border-top:0}
.item:hover{background:var(--surface-2)}
.item .t{font-weight:500}
.item .s{font-size:13px;color:var(--muted);display:flex;gap:6px 12px;flex-wrap:wrap}
.item .r{display:flex;align-items:center;gap:12px;justify-self:end}
.empty{padding:40px 20px;text-align:center;color:var(--muted)}
.empty b{display:block;color:var(--ink);font-weight:500;margin-bottom:4px}

/* table */
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:500;text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl tr.click{cursor:pointer}
.tbl tr.click:hover td{background:var(--surface-2)}
.tbl-wrap{overflow-x:auto}

/* stepper */
.steps{display:flex;gap:0;align-items:flex-start;margin:6px 0 4px}
.steps .st{flex:1;display:flex;flex-direction:column;gap:8px;position:relative;font-size:12.5px;color:var(--muted);min-width:0}
.steps .st::before{content:"";height:4px;border-radius:4px;background:var(--line);margin-right:6px}
.steps .st.done::before{background:var(--blue)}
.steps .st.cur::before{background:linear-gradient(90deg,var(--blue),var(--blue-soft));animation:pulse 1.8s ease-in-out infinite}
.steps .st.cur{color:var(--ink);font-weight:500}
@keyframes pulse{50%{opacity:.55}}

/* drawer */
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:60;opacity:0;transition:opacity .2s}
.scrim.show{opacity:1}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(760px,100%);background:var(--bg);border-left:1px solid var(--line);z-index:61;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .25s cubic-bezier(.2,.7,.2,1);box-shadow:var(--shadow)}
.drawer.show{transform:none}
.drawer .dh{display:flex;align-items:center;gap:12px;padding:calc(16px + env(safe-area-inset-top,0px)) 20px 16px;border-bottom:1px solid var(--line)}
.drawer .db{flex:1;overflow-y:auto;padding:20px 20px calc(20px + env(safe-area-inset-bottom,0px))}
.modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-48%);opacity:0;width:min(520px,calc(100% - 32px));max-height:calc(100% - 40px);overflow:auto;background:var(--bg);border:1px solid var(--line);border-radius:18px;z-index:62;padding:24px;box-shadow:var(--shadow);transition:opacity .2s,transform .2s}
.modal.show{opacity:1;transform:translate(-50%,-50%)}

/* key/value */
.kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px 20px}
.kv div>span{display:block;font-size:12px;color:var(--muted);margin-bottom:2px}
.kv div>b{font-weight:500;word-break:break-word}

/* chat */
.chat{display:flex;flex-direction:column;gap:2px;max-height:min(560px,62vh);overflow-y:auto;overflow-x:hidden;padding:6px 4px 10px;scroll-behavior:auto}
.chat .day{display:flex;justify-content:center;margin:14px 0 8px;position:sticky;top:0;z-index:2}
.chat .day span{font-size:11.5px;color:var(--muted);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:3px 10px}
.msg{max-width:min(78%,560px);align-self:flex-start;display:flex;flex-direction:column;align-items:flex-start;border-radius:16px;transition:background .6s}
.msg.first{margin-top:8px}
.msg.me{align-self:flex-end;align-items:flex-end}
.msg .mname{font-size:12px;color:var(--muted);margin:0 0 3px 12px;font-weight:500}
.msg .bw{position:relative;max-width:100%}
.msg .b{background:var(--surface-2);border:1px solid var(--line);padding:8px 12px;border-radius:18px;white-space:pre-wrap;word-break:break-word;line-height:1.45;min-width:44px}
.msg:not(.me).first .b{border-top-left-radius:18px}.msg:not(.me).cont .b{border-top-left-radius:6px}.msg:not(.me):not(.last) .b{border-bottom-left-radius:6px}
.msg.me.cont .b{border-top-right-radius:6px}.msg.me:not(.last) .b{border-bottom-right-radius:6px}
.msg.me .b{background:var(--blue);border-color:var(--blue);color:#fff}
.msg.internal .b{background:var(--amber-bg);border:1px dashed var(--amber);color:var(--ink)}
.msg .ilabel{display:block;font-size:10px;margin-bottom:4px;color:var(--amber)}
.msg .m{font-size:11px;color:var(--muted);margin:4px 10px 0}
.msg.has-rx .m{margin-top:14px}
.msg.has-rx:not(.last){margin-bottom:12px}
.msg.flash{background:var(--blue-bg)}
/* reply quote inside a bubble */
.mquote{display:block;width:100%;text-align:left;border:0;cursor:pointer;margin:2px 0 6px;padding:6px 10px;border-radius:10px;border-left:3px solid var(--blue);background:rgba(127,127,127,.12);color:inherit;font:inherit;font-size:12.5px;line-height:1.35;white-space:normal}
.msg.me .mquote{border-left-color:#fff;background:rgba(255,255,255,.16)}
.mquote b{display:block;font-weight:600;font-size:12px;margin-bottom:1px}
.mquote span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;opacity:.85}
.mquote.gone{cursor:default;font-style:italic;opacity:.7}
/* hover actions */
.macts{position:absolute;top:50%;transform:translateY(-50%);left:calc(100% + 6px);display:flex;gap:2px;padding:3px;background:var(--bg);border:1px solid var(--line);border-radius:999px;box-shadow:var(--shadow);opacity:0;transition:opacity .12s;z-index:4;white-space:nowrap}
.msg.me .macts{left:auto;right:calc(100% + 6px)}
.msg:hover .macts,.msg.act .macts,.macts:focus-within{opacity:1}
.msg .b.imgonly{background:none;border:0;padding:0}
.msg .b.imgonly .mimgs{margin-top:0}
.msg.internal .b.imgonly{border:1px dashed var(--amber);padding:6px;background:var(--amber-bg)}
.mact{width:28px;height:28px;border:0;border-radius:50%;background:none;color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.mact:hover{background:var(--surface-2);color:var(--ink)}
.rxpick,.mmenu{position:absolute;bottom:calc(100% + 6px);z-index:6;background:var(--bg);border:1px solid var(--line);box-shadow:var(--shadow)}
.rxpick{display:flex;gap:2px;padding:4px;border-radius:999px;left:0}
.msg.me .rxpick{left:auto;right:0}
.rxpick[hidden],.mmenu[hidden]{display:none}
.rxpick.down,.mmenu.down{bottom:auto;top:calc(100% + 6px)}
.rxpick button{width:34px;height:34px;border:0;background:none;border-radius:50%;font-size:20px;cursor:pointer;transition:transform .12s}
.rxpick button:hover{transform:scale(1.22);background:var(--surface-2)}
.mmenu{right:0;border-radius:12px;padding:4px;min-width:120px;display:flex;flex-direction:column}
.msg.me .mmenu{right:auto;left:0}
.mmenu button{border:0;background:none;text-align:left;padding:8px 12px;border-radius:8px;cursor:pointer;color:var(--ink);font:inherit;font-size:13.5px}
.mmenu button:hover{background:var(--surface-2)}
.mmenu button.danger{color:var(--red)}
/* reactions sit on the bottom edge of the bubble */
.rx{position:absolute;bottom:-14px;left:10px;display:flex;gap:3px;z-index:3}
.msg.me .rx{left:auto;right:10px}
.rxc{display:inline-flex;align-items:center;gap:3px;height:24px;padding:0 7px;border-radius:999px;border:1px solid var(--line);background:var(--bg);font-size:13px;cursor:pointer;color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.15)}
.rxc span{font-size:11px;color:var(--muted);font-weight:500}
.rxc.mine{border-color:var(--blue);background:var(--blue-bg)}
.rxc.mine span{color:var(--blue-soft)}
/* phones: tap a bubble → its actions float just above it */
@media (hover:none),(max-width:640px){
  .msg{max-width:88%}
  .macts{top:auto;bottom:calc(100% + 6px);transform:none;left:0;display:none;opacity:1}
  .msg.me .macts{left:auto;right:0}
  .msg.act .macts{display:inline-flex}
  .mact{width:34px;height:34px}
}
/* replying bar above the composer */
.mreplybar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;padding:8px 10px 8px 12px;border-left:3px solid var(--blue);background:var(--surface-2);border-radius:10px}
.mreplybar[hidden]{display:none}
.mreplybar>div{min-width:0;display:flex;flex-direction:column}
.mreplybar .snip{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.iconbtn.sm{width:28px;height:28px;font-size:12px}
.ttl .editt,.dh .editt{vertical-align:middle;margin-left:8px;font-size:13px;opacity:.55;flex:none}
.ttl .editt:hover,.dh .editt:hover{opacity:1}
.composer{display:flex;gap:8px;margin-top:14px;align-items:flex-end}
.composer textarea{min-height:44px;height:44px;flex:1}
.composer{position:relative}
.composer.drop-on{outline:2px dashed var(--blue);outline-offset:4px;border-radius:12px}
.mbar{display:flex;gap:2px;align-items:center;position:relative;align-self:flex-end;height:44px}
.mbtn{width:36px;height:36px;border-radius:10px;border:0;background:none;color:var(--muted);cursor:pointer;font-size:18px;display:inline-flex;align-items:center;justify-content:center}
.mbtn:hover{background:var(--surface-2);color:var(--ink)}
.emopop{position:absolute;bottom:46px;left:0;z-index:5;background:var(--bg);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:8px;display:grid;grid-template-columns:repeat(7,36px);gap:2px}
.emopop button{width:36px;height:36px;border:0;background:none;border-radius:8px;font-size:20px;cursor:pointer}
.emopop button:hover{background:var(--surface-2)}
.srpop{position:absolute;bottom:46px;left:0;z-index:5;background:var(--bg);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:8px;width:min(340px,calc(100vw - 48px));display:grid;gap:6px}
.srpop .srl{display:grid;gap:2px;max-height:280px;overflow:auto}
.srpop .srl button{display:grid;gap:2px;text-align:left;border:0;background:none;border-radius:10px;padding:8px 10px;cursor:pointer;color:var(--ink);font:inherit}
.srpop .srl button:hover{background:var(--surface-2)}
.srpop .srl b{font-weight:600;font-size:14px}.srpop .srl span{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mstrip{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px}
.mprev{position:relative;width:64px;height:64px;border-radius:10px;overflow:hidden;border:1px solid var(--line);background:var(--surface-2)}
.mprev img{width:100%;height:100%;object-fit:cover;display:block}
.mprev button{position:absolute;top:3px;right:3px;width:20px;height:20px;border-radius:50%;border:0;background:rgba(0,0,0,.65);color:#fff;font-size:10px;cursor:pointer}
.mimgs{display:grid;gap:4px;margin-top:6px;max-width:320px}
.mimgs.n2{grid-template-columns:1fr 1fr}.mimgs.n3{grid-template-columns:1fr 1fr 1fr}
.mimg{display:block;padding:0;border:0;background:rgba(0,0,0,.15);border-radius:10px;overflow:hidden;cursor:zoom-in;min-height:60px}
.mimg img{display:block;width:100%;max-height:260px;object-fit:cover}
.mimgs.n1 .mimg img{object-fit:contain;max-height:320px}
.mimg.ph{animation:mpulse 1.2s ease-in-out infinite alternate;height:90px}
.mimg.gone{font-size:12px;padding:10px;color:var(--muted);cursor:default}
@keyframes mpulse{from{opacity:.45}to{opacity:.9}}
.modal.wide{width:min(1000px,calc(100% - 32px))}
.lightbox img{display:block;max-width:100%;max-height:calc(100vh - 180px);margin:0 auto;border-radius:10px}
@media (max-width:560px){.mbtn{width:32px}.emopop{grid-template-columns:repeat(6,36px)}}

/* review */
.review{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);gap:18px}
@media (max-width:900px){.review{grid-template-columns:1fr}}
.player{position:relative;background:#000;border-radius:12px;overflow:hidden;aspect-ratio:16/9;display:flex;align-items:center;justify-content:center}
.player.v916{aspect-ratio:9/16;max-height:72vh;margin:0 auto}
.player video{width:100%;height:100%;object-fit:contain;background:#000}
.player .ext{color:#fff;text-align:center;padding:24px}
.notes{display:flex;flex-direction:column;gap:8px;max-height:520px;overflow-y:auto}
.rn{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:var(--surface)}
.rn.done{opacity:.55}
.avs{display:inline-flex;align-items:center}
.avs .avatar{box-shadow:0 0 0 2px var(--surface)}
.avs .avatar+.avatar{margin-left:-7px}
.avs .more{font-size:11px;color:var(--muted);margin-left:4px}
.pcol{min-width:0}.ncol{min-width:0}
@media (min-width:640px){
  /* vertical cuts: notes beside the video (the video stays in view while you scroll the notes) */
  .cutwrap:has(.player.v916){display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:20px;align-items:start}
  .cutwrap:has(.player.v916) .pcol{position:sticky;top:0}
  .cutwrap:has(.player.v916) .player.v916{max-height:calc(100vh - 220px);width:100%}
  .cutwrap:has(.player.v916) .ncol>.between:first-child{margin-top:0!important}
}
.dbxbar{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:center;font-size:12.5px;color:var(--muted);margin-top:8px}
.dbxbar .link{font-weight:500}
.dbxbar.warn{background:var(--amber-bg);border:1px solid var(--amber);border-radius:10px;padding:8px 12px;color:var(--ink)}
.edlist{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.edlist select{flex:1;min-width:140px}
.edchip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 4px 0 4px;border:1px solid var(--line);border-radius:999px;font-size:13px;background:var(--surface)}
.edchip .avatar{width:22px;height:22px;font-size:10px}
.edchip button{background:none;border:0;color:var(--muted);cursor:pointer;font-size:12px;width:22px;height:22px;border-radius:50%}
.edchip button:hover{color:var(--red);background:var(--red-bg,rgba(255,0,0,.08))}
.tcf{display:inline-flex;align-items:center;gap:6px}
.tcf .in{width:84px;text-align:center;padding-top:6px;padding-bottom:6px}
.rn.qc{border-color:var(--amber)}
.qctag{font-family:var(--mono);font-size:10px;color:var(--amber);letter-spacing:.02em}
.rn .tc{font-family:var(--mono);font-size:12px;color:var(--blue-soft);background:var(--blue-bg);border:0;border-radius:6px;padding:2px 7px;cursor:pointer}
.rn .who{font-size:12px;color:var(--muted)}

/* timeline */
.tl{position:relative;padding-left:22px}
.tl::before{content:"";position:absolute;left:6px;top:6px;bottom:6px;width:1px;background:var(--line)}
.tl .ev{position:relative;padding:0 0 16px}
.tl .ev::before{content:"";position:absolute;left:-20px;top:6px;width:9px;height:9px;border-radius:50%;background:var(--blue);box-shadow:0 0 0 3px var(--bg)}
.tl .ev .d{font-size:12px;color:var(--muted)}

/* board */
.board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(272px,1fr);gap:14px;overflow-x:auto;padding-bottom:12px;align-items:start;min-height:60vh}
.col{background:var(--bg-2);border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;max-height:calc(100vh - 210px)}
.col .ch{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line);font-weight:500;font-size:14px}
.col .ch .dot{width:8px;height:8px;border-radius:50%}
.col .ch .n{font-family:var(--mono);font-size:11px;color:var(--muted);margin-left:auto}
.col .cb{padding:10px;display:flex;flex-direction:column;gap:10px;overflow-y:auto;min-height:80px;flex:1;transition:background .15s}
.col.over .cb{background:var(--blue-bg)}
.tcard{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px 13px;cursor:grab;display:flex;flex-direction:column;gap:8px;text-align:left;width:100%;transition:border-color .15s,transform .15s,box-shadow .15s}
.tcard:hover{border-color:var(--line-2)}
.tcard.dragging{opacity:.45}
.tcard .tt{font-weight:500;line-height:1.3}
.tcard .meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;color:var(--muted)}
.tcard .foot{display:flex;align-items:center;gap:8px;justify-content:space-between}
.due{font-size:12.5px;color:var(--muted)}
.due.late{color:var(--red);font-weight:500}
.due.soon{color:var(--amber)}
.bar{height:4px;border-radius:4px;background:var(--line);overflow:hidden}
.bar i{display:block;height:100%;background:var(--green)}

/* collapsible status groups (list views) */
.grp{margin-bottom:18px}
.grp-h{display:flex;align-items:center;gap:10px;background:none;border:0;padding:6px 4px;margin-bottom:8px;cursor:pointer;color:var(--ink);border-radius:8px}
.grp-h:hover{background:var(--surface-2)}
.grp-h .chev{transition:transform .18s ease;transform:rotate(90deg);color:var(--muted)}
.grp.shut .grp-h .chev{transform:rotate(0deg)}
.grp-badge{display:inline-flex;align-items:center;gap:7px;height:24px;padding:0 11px;border-radius:6px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;}
.grp-n{font-family:var(--mono);font-size:12px;color:var(--muted)}
.grp.shut{margin-bottom:6px}
.grp-t{table-layout:fixed;min-width:760px}
.grp-t td{overflow:hidden;text-overflow:ellipsis}

/* checklist */
.cl{display:flex;flex-direction:column;gap:4px}
.cl .ci{display:flex;align-items:center;gap:10px;padding:6px 4px;border-radius:8px}
.cl .ci:hover{background:var(--surface-2)}
.cl .ci.done span{text-decoration:line-through;color:var(--muted)}
.cl .ci .x{margin-left:auto;opacity:0;background:none;border:0;color:var(--muted);cursor:pointer}
.cl .ci:hover .x{opacity:1}

/* auth */
.auth{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}
.auth .art{position:relative;overflow:hidden;background:#07080A;display:flex;flex-direction:column;justify-content:flex-end;padding:48px;color:#F2F1EC}
.auth .art::before{content:"";position:absolute;inset:0;background:radial-gradient(60% 50% at 30% 30%,rgba(48,80,255,.45),transparent 70%),radial-gradient(40% 40% at 80% 70%,rgba(255,181,71,.18),transparent 70%)}
.auth .art::after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px);background-size:32px 32px}
.auth .art>*{position:relative;z-index:1}
.auth .art .rec{position:absolute;top:32px;left:48px;display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12px;letter-spacing:.08em;z-index:1}
.auth .art .rec i{width:8px;height:8px;border-radius:50%;background:#FF4D3D;animation:pulse 1.4s infinite}
.auth .art h1{font-size:clamp(30px,3.6vw,48px);max-width:14ch}
.auth .art p{color:#C9CAD1;margin-top:12px;max-width:40ch}
.auth .form{display:flex;align-items:center;justify-content:center;padding:40px 24px}
.auth .form .box{width:min(400px,100%)}
@media (max-width:860px){.auth{grid-template-columns:1fr}.auth .art{min-height:220px;padding:28px}.auth .art .rec{left:28px;top:22px}}

/* toast */
.toasts{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);z-index:90;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:999px;font-size:14px;box-shadow:var(--shadow);animation:tin .25s ease-out}
.toast.bad{background:var(--red);color:#fff}
@keyframes tin{from{opacity:0;transform:translateY(8px)}}
.demo-bar{background:var(--amber-bg);color:var(--amber);font-size:13px;text-align:center;padding:7px 12px;border-bottom:1px solid var(--line)}
.spin{width:22px;height:22px;border-radius:50%;border:2px solid var(--line-2);border-top-color:var(--blue);animation:rot .8s linear infinite;margin:60px auto}
@keyframes rot{to{transform:rotate(360deg)}}
.fade-in{animation:fin .3s ease-out}
@keyframes fin{from{opacity:0;transform:translateY(6px)}}
@media (max-width:640px){
  .top{gap:10px;height:calc(58px + env(safe-area-inset-top,0px))}
  .brand span.nm,.brand .tag{display:none}
  .nav{margin-left:0;gap:0}
  .nav a,.nav button{padding:8px 9px;font-size:14px}
  .who{gap:6px}
  .who .avatar{width:30px;height:30px}
  .who .iconbtn{width:34px;height:34px}
  .card{padding:16px}
  .stat .n{font-size:24px}
  .main{padding-top:20px}
  .item{grid-template-columns:1fr}
  .item .r{justify-self:start}
  .drawer .db{padding:16px}
  .hide-sm{display:none!important}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* installed app */
.standalone body{overscroll-behavior-y:none}
.standalone .auth .art{padding-top:calc(48px + env(safe-area-inset-top,0px))}
.standalone .auth .art .rec{top:calc(32px + env(safe-area-inset-top,0px))}
.standalone .auth .form{padding-bottom:calc(40px + env(safe-area-inset-bottom,0px))}

/* video upload */
.drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:26px 18px;border:1.5px dashed var(--line-2);border-radius:14px;cursor:pointer;color:var(--muted);transition:border-color .15s,background .15s}
.drop b{color:var(--ink);font-weight:500}
.drop u{color:var(--blue-soft);text-underline-offset:3px}
.drop:hover,.drop.over{border-color:var(--blue);background:var(--blue-bg)}
.drop.off{opacity:.45;pointer-events:none}
.upl{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:var(--surface-2)}
.upl.error{border-color:var(--red)}
.upl.done{border-color:var(--green)}

/* profile photos */
.avatar.has-photo{background:var(--surface-2);overflow:hidden;padding:0}
.avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.avatar.xl{width:84px;height:84px;font-size:28px}
.avbtn{all:unset;cursor:pointer;border-radius:50%;display:inline-flex}
.avbtn:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.avbtn:hover .avatar{box-shadow:0 0 0 2px var(--line-2)}
/* PDF files */
.files{display:flex;flex-direction:column;gap:8px}
.file{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}
.file svg{flex:none;color:var(--muted)}
.file .fn{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.iconbtn.sm{width:28px;height:28px;font-size:12px}
.pending-files{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.script{font-size:15px;line-height:1.6}
/* new client messages */
.nbadge{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px;border-radius:999px;background:var(--red);color:#fff;font-size:11.5px;font-weight:600;white-space:nowrap}
.nbadge::before{content:"";width:6px;height:6px;border-radius:50%;background:#fff}
.nbadge.sm{height:20px;font-size:11px;margin-left:8px;vertical-align:1px}
.tcard.has-new{border-color:var(--red);box-shadow:0 0 0 1px var(--red) inset}
.iconbtn.bell-on{color:var(--green);border-color:var(--green)}
.iconbtn.bell-err{color:var(--red);border-color:var(--red)}
.snd{margin:0 0 18px}.snd-list{display:grid;gap:6px;max-height:300px;overflow:auto;padding-right:2px}
.snd-opt{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:transparent;color:inherit;font:inherit;cursor:pointer}
.snd-opt:hover{border-color:var(--muted)}.snd-opt.on{border-color:var(--blue);box-shadow:0 0 0 1px var(--blue) inset}
.snd-dot{width:14px;height:14px;border-radius:50%;border:2px solid var(--muted);flex:none}.snd-opt.on .snd-dot{border-color:var(--blue);background:var(--blue);box-shadow:0 0 0 2px var(--surface) inset}
.snd-play{opacity:.55;font-size:12px}
.pn-ok{border:1px solid var(--green);background:var(--green-bg);border-radius:12px;padding:10px 12px}
.pn-bad{border:1px solid var(--red);background:var(--red-bg);border-radius:12px;padding:10px 12px}
.nlog{border-top:1px solid var(--line);padding:9px 0;font-size:14px}
.nlog:first-child{border-top:0}
.nlog .tg{display:inline-block;margin:3px 6px 0 0;padding:1px 8px;border-radius:999px;font-size:12px;background:var(--surface-2)}
.nlog .tg.bad{background:var(--red-bg);color:var(--red)}
.nlog .tg.good{background:var(--green-bg);color:var(--green)}
/* leader (quality control) view */
.leadbar{display:flex;align-items:center;gap:12px;padding:12px 14px;margin-bottom:16px;border:1px solid var(--violet);background:var(--violet-bg);border-radius:12px}
.leadbar>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.pill.lead{background:var(--violet-bg);color:var(--violet)}
/* client portal: project search */
.osearch{display:flex;align-items:center;gap:10px;height:46px;padding:0 14px;margin-bottom:14px;border:1px solid var(--line-2);border-radius:12px;background:var(--bg-2);color:var(--muted);cursor:text}
.osearch:focus-within{border-color:var(--blue-soft)}
.osearch input{flex:1;min-width:0;height:100%;border:0;background:none;outline:none;color:var(--ink);font-size:15px}
.osearch input::-webkit-search-cancel-button{display:none}
.oclear{background:none;border:0;color:var(--muted);cursor:pointer;font-size:13px;padding:4px}
@media (max-width:640px){.osearch input{font-size:16px}}
/* delete a message */
.mdel{background:none;border:0;padding:0;color:var(--muted);font-size:11.5px;cursor:pointer;text-decoration:underline;text-underline-offset:2px}
.mdel:hover{color:var(--red)}
.mdel[data-medit]:hover{color:var(--ink)}
.medited{color:var(--muted);font-size:11.5px;font-style:italic}
/* brand kit, ratings, revisions, system (update 22) */
.logos{display:flex;flex-wrap:wrap;gap:10px}
.logo-th{width:132px;display:flex;flex-direction:column;gap:6px;align-items:stretch}
.logo-th>a,.logo-th>span{height:84px;border:1px solid var(--line);border-radius:10px;display:flex;align-items:center;justify-content:center;padding:8px;background:repeating-conic-gradient(var(--surface-2) 0 25%,var(--surface) 0 50%) 0 0/14px 14px}
.logo-th img{max-width:100%;max-height:100%;object-fit:contain}
.stars{display:inline-flex;gap:2px;font-size:15px;line-height:1;color:var(--line-2)}
.stars i{font-style:normal}.stars i.on{color:#F5A524}
.stars.lg{font-size:30px;gap:6px}
.starpick{display:inline-flex;gap:6px}
.starpick button{background:none;border:0;padding:2px;font-size:34px;line-height:1;cursor:pointer;color:var(--line-2);transition:transform .12s}
.starpick button.on{color:#F5A524}.starpick button:hover{transform:scale(1.12)}
.starpick button:focus-visible{outline:2px solid var(--blue-soft);outline-offset:2px;border-radius:6px}
.revb{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:999px;font-size:11px;font-weight:600;font-family:var(--mono);background:var(--gray-bg);color:var(--ink-2);white-space:nowrap}
.revb.full{background:var(--amber-bg);color:var(--amber)}
.revb.over{background:var(--red-bg);color:var(--red)}
.errrow{border-top:1px solid var(--line);padding:12px 0}
.errrow:first-child{border-top:0}
.errrow pre{white-space:pre-wrap;word-break:break-word;font-size:11.5px;max-height:180px;overflow:auto;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:8px;margin-top:6px}
.tpl-ta{min-height:150px;font-size:13.5px;line-height:1.5}
.part-row{padding:9px 0;border-top:1px solid var(--line);gap:12px}
.part-row:first-of-type{border-top:0}
.ptable{display:flex;flex-direction:column}
.ptable .prow{display:grid;grid-template-columns:minmax(0,1fr) 150px 170px 28px;gap:8px;align-items:center;padding:8px 0;border-top:1px solid var(--line)}
.ptable .prow:first-child{border-top:0}
.ptable .prow.mine{background:linear-gradient(90deg,var(--blue-bg),transparent);border-radius:8px;padding-left:8px}
@media (max-width:640px){.ptable .prow{grid-template-columns:minmax(0,1fr) 1fr;}.ptable .prow .pt{grid-column:1/-1}}
/* invoices (update 25) */
#pp-print{display:none}
.invwrap{background:#fff;border-radius:12px;max-height:68vh;overflow:auto}
.invdoc{background:#fff;color:#111;padding:36px 40px;font-size:13.5px;line-height:1.5;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif}
.invdoc .inv-top{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap}
.invdoc .inv-brand{font-weight:700;font-size:22px;letter-spacing:-.02em;color:#111}
.invdoc .inv-from{color:#555;margin-top:4px;font-size:12.5px}
.invdoc .inv-meta{text-align:right;color:#333}
.invdoc .inv-title{font-size:26px;font-weight:600;letter-spacing:-.02em;color:#111;margin-bottom:4px}
.invdoc .inv-st{display:inline-block;margin-top:6px;padding:2px 10px;border-radius:999px;font-size:11.5px;font-weight:600;background:#eef0ff;color:#2a3fd6}
.invdoc .inv-st.paid{background:#e4f7ec;color:#0e7a45}.invdoc .inv-st.overdue{background:#fde8e8;color:#c02626}.invdoc .inv-st.partial{background:#fff3dc;color:#8a5300}.invdoc .inv-st.void{background:#eee;color:#666}
.invdoc .inv-to{margin:26px 0 18px}.invdoc .inv-to span,.invdoc .inv-pay span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#888;margin-bottom:4px}
.invdoc .inv-t{width:100%;border-collapse:collapse}
.invdoc .inv-t th{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#888;text-align:left;border-bottom:1px solid #ddd;padding:8px 6px;font-weight:600}
.invdoc .inv-t td{border-bottom:1px solid #eee;padding:10px 6px;vertical-align:top;color:#111}
.invdoc .r{text-align:right;white-space:nowrap}
.invdoc .inv-sum{margin:16px 0 0 auto;max-width:300px}
.invdoc .inv-sum>div{display:flex;justify-content:space-between;gap:12px;padding:4px 6px}
.invdoc .inv-sum .sm{color:#555;font-size:12.5px}
.invdoc .inv-sum .ibal{color:#111;font-weight:600;border-top:2px solid #111;margin-top:6px;padding-top:8px;font-size:16px}
.invdoc .inv-pay{margin-top:26px;padding:12px 14px;background:#f6f7fb;border-radius:8px}
.invdoc .inv-note{margin-top:16px;color:#444;white-space:normal}
.invdoc .inv-foot{margin-top:30px;color:#999;font-size:12px;text-align:center}
@media (max-width:640px){.invdoc{padding:20px 16px}.invdoc .inv-meta{text-align:left}}
@media print{
  body.printing>*:not(#pp-print){display:none!important}
  body.printing{background:#fff!important}
  body.printing #pp-print{display:block}
  body.printing .invdoc{padding:0}
  @page{margin:16mm}
}
.payrow{display:grid;grid-template-columns:1fr auto;gap:8px}
.monbar{height:8px;border-radius:999px;background:var(--line);overflow:hidden;min-width:60px}
.monbar i{display:block;height:100%;background:var(--green);border-radius:999px}
.monbar.inv i{background:var(--blue)}
/* Payments PIN: money hidden in HQ while locked */
.nomoney .money{display:none!important}
body:not(.nomoney) .nomoney-only{display:none!important}

/* ClickUp-style orders table (HQ) */
.seg{display:inline-flex;border:1px solid var(--line-2);border-radius:10px;padding:2px;gap:2px;margin-left:auto}
.seg button{background:none;border:0;color:var(--muted);font:inherit;font-size:13px;padding:5px 12px;border-radius:8px;cursor:pointer}
.seg button.on{background:var(--surface-2);color:var(--ink);font-weight:500}
.ctbl-wrap{overflow:auto;max-height:calc(100vh - 230px)}
.ctbl{border-collapse:separate;border-spacing:0;table-layout:fixed;font-size:13px}
.rsz.auto{table-layout:auto!important;width:max-content!important;min-width:0}
body.col-resizing,body.col-resizing *{cursor:col-resize!important;user-select:none}
.ctbl th{position:relative;position:sticky;top:0;z-index:1;background:var(--surface);text-align:left;font-weight:500;font-size:12px;color:var(--muted);padding:0;border-bottom:1px solid var(--line);border-right:1px solid var(--line-soft);white-space:nowrap}
.ctbl-sort{all:unset;box-sizing:border-box;display:block;width:100%;padding:9px 10px;cursor:pointer;overflow:hidden;text-overflow:ellipsis}
.ctbl-sort:hover,.ctbl-sort.on{color:var(--ink)}
.ctbl-sort:focus-visible{outline:2px solid var(--blue-soft);outline-offset:-2px}
.ctbl td{padding:0 10px;height:36px;border-bottom:1px solid var(--line-soft);border-right:1px solid var(--line-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.ctbl tbody tr:hover td{background:var(--surface-2)}
.seltbl td.rn{color:var(--muted);font-family:var(--mono);font-size:11.5px;text-align:center;padding:0 4px}
.ctbl td.nm{font-weight:500}
.ctbl .dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:8px;vertical-align:middle}
.ctbl .ell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.ctbl .avatar{width:22px;height:22px;font-size:10px}
.ctbl .avatar+.avatar{margin-left:-10px;box-shadow:0 0 0 2px var(--surface)}
.cchip{display:inline-block;max-width:100%;vertical-align:middle;height:22px;line-height:22px;padding:0 8px;border-radius:5px;font-family:var(--mono);font-size:11.5px;font-weight:600;color:#fff;background:hsl(var(--h) 55% 42%);overflow:hidden;text-overflow:ellipsis}
.schip{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:5px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.prio{font-size:12.5px;color:var(--muted)}
.prio.urgent{color:var(--red)}.prio.high{color:var(--amber)}.prio.normal{color:var(--blue-soft)}
.ctbl-wrap{width:max-content;max-width:100%}
.ctbl-rz{position:absolute;top:0;right:-4px;width:8px;height:100%;cursor:col-resize;z-index:2}
.ctbl-rz::after{content:"";position:absolute;left:3px;top:20%;height:60%;width:2px;border-radius:2px;background:transparent;transition:background .15s}
.rsz th:hover .ctbl-rz::after,.ctbl-rz:active::after{background:var(--blue-soft)}
.rsz th:last-child .ctbl-rz{right:0}
.ctbl-chk{width:15px;height:15px;margin:0;accent-color:var(--blue);cursor:pointer;vertical-align:middle}
.seltbl td.rn{cursor:default}
.seltbl td.rn .ctbl-chk{display:none}
.seltbl tr:hover td.rn .n,.seltbl tr.sel td.rn .n{display:none}
.seltbl tr:hover td.rn .ctbl-chk,.seltbl tr.sel td.rn .ctbl-chk{display:inline-block}
.seltbl th.rn{text-align:center;padding:0}
.seltbl tr.sel td{background:var(--blue-bg)}
.selbar{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:40;display:flex;align-items:center;gap:10px;padding:8px 10px 8px 16px;border-radius:12px;background:var(--surface);border:1px solid var(--line-2);box-shadow:0 10px 30px rgba(0,0,0,.35)}
.selbar[hidden]{display:none}
.fitw{width:max-content;max-width:100%}
.grp-t.rsz{min-width:0}
.grp-t.rsz th{position:relative}
.grp-t.rsz td{white-space:nowrap}
.grp-t.rsz td>div{overflow:hidden;text-overflow:ellipsis}
.ctbl-wrap:focus{outline:none}
.ctbl td[data-c]{cursor:cell;user-select:none}
.ctbl td.cs{background:var(--blue-bg)!important}
.ctbl td.ca{box-shadow:inset 0 0 0 2px var(--blue)}
.ctbl td.ed.ca{cursor:pointer}
.ctbl td.nm{position:relative;padding-right:34px}
.openbtn{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:none;width:24px;height:22px;border-radius:6px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);font-size:12px;line-height:1;cursor:pointer;padding:0}
.openbtn:hover{border-color:var(--blue-soft);color:var(--blue-soft)}
.ctbl tr:hover .openbtn,.ctbl tr.rowon .openbtn,.openbtn:focus-visible{display:inline-flex;align-items:center;justify-content:center}
.cellpop{position:fixed;z-index:60;min-width:190px;max-height:320px;overflow:auto;padding:6px;border-radius:10px;background:var(--surface);border:1px solid var(--line-2);box-shadow:0 12px 32px rgba(0,0,0,.35);display:flex;flex-direction:column;gap:2px}
.cp-opt{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:none;border:0;border-radius:7px;padding:6px 8px;color:var(--ink);font:inherit;font-size:13px;cursor:pointer}
.cp-opt:hover,.cp-opt:focus-visible{background:var(--surface-2);outline:none}
.cp-opt.on{background:var(--blue-bg)}
.pinwrap{position:relative}
.pinwrap .in{width:100%;padding-left:64px;padding-right:64px}
.pineye{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:0;color:var(--blue-soft);font:inherit;font-size:12.5px;padding:6px 8px;border-radius:6px;cursor:pointer}
.pineye:hover{background:var(--surface-2)}

/* ===== Launch animation (logo) ===== */
html:has(#splash),html:has(#splash) body{background:#0B0C0F!important}
#splash{position:fixed;top:-50vh;bottom:-50vh;left:-20vw;right:-20vw;z-index:9999;display:grid;place-items:center;overflow:hidden;
  background:radial-gradient(60vmax 60vmax at 50% 50%,rgba(42,121,232,.22),rgba(42,121,232,0) 60%),#0B0C0F}
#splash::before{content:"";position:absolute;left:50%;top:50%;width:46vmin;height:46vmin;margin:-23vmin 0 0 -23vmin;border-radius:50%;
  background:radial-gradient(circle,rgba(91,160,255,.55),rgba(42,121,232,0) 65%);opacity:0;transform:scale(.4);animation:ppBloom 1.1s cubic-bezier(.2,.7,.2,1) .95s forwards}
#splash .splash-inner{position:relative;display:grid;justify-items:center}
#splash .splash-logo{width:128px;height:auto;overflow:visible}
#splash .sp-trace{fill:none;stroke:#fff;stroke-width:64;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1 2;stroke-dashoffset:1;
  animation:ppTrace .9s cubic-bezier(.7,0,.25,1) .15s forwards}
#splash .sp-head{fill:none;stroke:#DCEBFF;stroke-width:46;stroke-linecap:round;stroke-dasharray:.07 2;stroke-dashoffset:.07;opacity:0;
  filter:drop-shadow(0 0 10px #8FC0FF);animation:ppHead .9s cubic-bezier(.7,0,.25,1) .15s forwards}
#splash .sp-px{transform-box:fill-box;transform-origin:center;opacity:0}
#splash .sp-px1{transform:translate(-90px,-90px) scale(.3) rotate(-90deg);animation:ppSnap .42s cubic-bezier(.2,1.5,.4,1) .95s forwards}
#splash .sp-px2{transform:translate(90px,90px) scale(.3) rotate(90deg);animation:ppSnap .42s cubic-bezier(.2,1.5,.4,1) 1.05s forwards}
#splash .sp-sheen{transform:translateX(0) skewX(-18deg);animation:ppSheen .6s cubic-bezier(.4,0,.2,1) 1.3s forwards}
#splash .splash-logo{animation:ppKick .5s cubic-bezier(.3,1.6,.5,1) 1.05s both}
@keyframes ppTrace{to{stroke-dashoffset:0}}
@keyframes ppHead{0%{opacity:0;stroke-dashoffset:.07}8%{opacity:1}85%{opacity:1}100%{opacity:0;stroke-dashoffset:-1}}
@keyframes ppSnap{60%{opacity:1}to{opacity:1;transform:none}}
@keyframes ppSheen{to{transform:translateX(640px) skewX(-18deg)}}
@keyframes ppKick{0%{transform:scale(1);filter:drop-shadow(0 0 0 rgba(42,121,232,0))}40%{transform:scale(1.06);filter:drop-shadow(0 0 26px rgba(91,160,255,.9))}100%{transform:scale(1);filter:drop-shadow(0 0 14px rgba(42,121,232,.5))}}
@keyframes ppBloom{40%{opacity:.9}to{opacity:.35;transform:scale(1)}}
#splash.wait .splash-inner{animation:ppBreath 1.1s ease-in-out infinite alternate}
#splash.out{animation:ppSplashOut .45s cubic-bezier(.5,0,.75,0) forwards;pointer-events:none}
#splash.out .splash-inner{animation:ppSplashZoom .45s cubic-bezier(.5,0,.75,0) forwards}
@keyframes ppSplashOut{to{opacity:0;visibility:hidden}}
@keyframes ppSplashZoom{to{transform:scale(1.18);filter:blur(4px)}}
@keyframes ppBreath{from{transform:scale(1);opacity:1}to{transform:scale(.95);opacity:.8}}
@media (prefers-reduced-motion:reduce){
  #splash::before,#splash .splash-logo,#splash .sp-trace,#splash .sp-head,#splash .sp-px,#splash .sp-sheen,#splash.wait .splash-inner{animation:none}
  #splash .sp-trace{stroke-dashoffset:0}#splash .sp-head{opacity:0}#splash .sp-px{opacity:1;transform:none}
}

/* videos as sub-rows under an order (list views) */
.subhead{display:inline-flex;align-items:center;gap:6px;max-width:100%;vertical-align:middle}
.subtog{display:inline-flex;align-items:center;gap:3px;height:22px;padding:0 6px 0 4px;margin-left:-4px;border-radius:6px;border:0;background:none;color:var(--muted);font:500 11px var(--mono);cursor:pointer;flex:none}
.subtog:hover{background:var(--surface-2);color:var(--ink)}
.subtog svg{transition:transform .15s ease}
.subtog.open svg{transform:rotate(90deg)}
.tbl tr.subrow td{padding-top:9px;padding-bottom:9px;background:color-mix(in srgb,var(--surface-2) 45%,transparent)}
.tbl tr.subrow.mine td{background:color-mix(in srgb,var(--blue) 7%,transparent)}
.subcell{padding-left:34px!important}
.subline{display:flex;align-items:center;gap:10px;min-width:0}
.subt{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.subst{font-size:11px;font-family:var(--mono);letter-spacing:.03em;white-space:nowrap;opacity:.9}
.picwrap{position:relative;display:inline-flex;flex:none;width:22px;height:22px;align-items:center;justify-content:center;border-radius:50%}
label.picwrap{cursor:pointer}
label.picwrap:hover{background:var(--surface-2)}
.picwrap select{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%;font-size:16px}
@media (max-width:640px){.subcell{padding-left:22px!important}.subst{display:none}}

/* What's new (portal updates) */
.news{display:grid;gap:6px}.news .nt{font-size:16px;font-weight:650}.news p{margin:0;color:var(--ink-2);line-height:1.5}
.news ul{margin:2px 0 0;padding-left:20px;display:grid;gap:4px;color:var(--ink-2);line-height:1.5}
.newscard{position:relative;border:1px solid var(--line);border-left:3px solid var(--blue, #3050FF);border-radius:14px;padding:16px 44px 16px 18px;margin-bottom:18px;background:var(--surface, var(--bg))}
.newscard .x{position:absolute;top:10px;right:10px}
