/* The House · Messenger Books. Look and feel from Jeremiah's own prototype: ink sidebar,
   paper ground, magenta to purple gradient, Sora display, Inter text, Fraunces book covers. */
:root{
  --ink:#131316; --ink-2:#1c1c21; --ink-soft:#5b5866; --ink-mute:#8d8899;
  --line:#efe7f1; --line-2:#e3d9e7; --paper:#fbf8fb; --blush:#fff3f8; --lilac:#f8e6fc;
  --mag:#fb1379; --pur:#ae05d2; --pur-d:#8a0aa6; --grad:linear-gradient(100deg,#ae05d2,#fb1379);
  --ok:#0f8a5b; --ok-bg:#e2f6ec; --warn:#a96a06; --warn-bg:#fff2d6; --bad:#cc2944; --bad-bg:#fde8ec; --info:#2457c5; --info-bg:#e8effd; --mute-bg:#f2eff4;
  --shadow:0 1px 2px rgba(19,19,22,.04),0 14px 34px -22px rgba(96,20,120,.28);
  --shadow-lg:0 2px 4px rgba(19,19,22,.05),0 24px 48px -24px rgba(96,20,120,.35);
  --r:22px; --side:256px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.45}
h1,h2,h3,h4,.disp{font-family:Sora,-apple-system,sans-serif;letter-spacing:-.02em;margin:0}
.serif{font-family:Fraunces,Georgia,serif}
.script{font-family:Caveat,cursive}
.grad-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.soft{color:var(--ink-soft)} .mute{color:var(--ink-mute)} .small{font-size:.82rem} .tiny{font-size:.72rem}
.b{font-weight:600} .bb{font-weight:700}
a{color:inherit;text-decoration:none;cursor:pointer}
button{font:inherit;cursor:pointer;color:inherit}
input,select,textarea{font:inherit;color:inherit}
img{max-width:100%}
.hide{display:none!important}
.row{display:flex;align-items:center;gap:.6rem} .row.top{align-items:flex-start} .wrap{flex-wrap:wrap}
.col{display:flex;flex-direction:column;gap:.5rem}
.grow{flex:1;min-width:0}
.between{justify-content:space-between}
.trunc{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.clamp2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gap0{gap:0}.gap2{gap:1rem}.mt{margin-top:1rem}.mt2{margin-top:1.6rem}.mt0{margin-top:.4rem}

/* boot */
.boot{min-height:100vh;display:grid;place-items:center;align-content:center;gap:14px;background:var(--ink)}
.boot img{border-radius:50%;animation:pulse 1.4s ease infinite}
.boot-word{font-family:Sora;font-weight:700;color:#fff;font-size:20px}.boot-word span{color:var(--mag)}
@keyframes pulse{50%{transform:scale(.94);opacity:.8}}

/* buttons, fields, chips */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;border-radius:999px;border:1px solid var(--line-2);background:#fff;padding:.55rem 1rem;font-weight:600;font-size:.88rem;white-space:nowrap;transition:background .15s,border-color .15s,transform .1s,filter .15s;min-height:38px}
.btn:hover{background:#fbf5fc;border-color:#dccfe2}
.btn:active{transform:scale(.98)}
.btn.grad{background:var(--grad);color:#fff;border:0;box-shadow:0 8px 20px -10px rgba(251,19,121,.7)}
.btn.grad:hover{filter:brightness(1.06)}
.btn.dark{background:var(--ink);color:#fff;border-color:var(--ink)}
.btn.dark:hover{background:#2a2a31}
.btn.sm{padding:.35rem .75rem;font-size:.8rem;min-height:32px}
.btn.xs{padding:.2rem .6rem;font-size:.74rem;min-height:26px}
.btn.ghost{background:transparent;border-color:transparent}
.btn.ghost:hover{background:#f4edf6}
.btn.danger{color:var(--bad)}
.btn[disabled]{opacity:.5;pointer-events:none}
.icon-btn{width:38px;height:38px;border-radius:12px;border:0;background:transparent;display:grid;place-items:center}
.icon-btn:hover{background:#f1ebf3}
.icon-btn svg,.btn svg{width:18px;height:18px}
.field{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.85rem}
.field>span{font-size:.78rem;font-weight:600;color:var(--ink-soft)}
.in{width:100%;border:1px solid var(--line-2);border-radius:14px;padding:.62rem .85rem;background:#fff;font-size:.93rem;outline:none;transition:border-color .15s,box-shadow .15s}
.in:focus{border-color:#e48bc0;box-shadow:0 0 0 4px rgba(251,19,121,.1)}
textarea.in{resize:vertical;min-height:90px;line-height:1.5}
select.in{appearance:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%238d8899' stroke-width='1.6'/%3E%3C/svg%3E") no-repeat right .8rem center;padding-right:2rem}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 .9rem}
.chip{display:inline-flex;align-items:center;gap:.35rem;padding:.16rem .58rem;border-radius:999px;font-size:.72rem;font-weight:600;white-space:nowrap;line-height:1.4;background:var(--mute-bg);color:var(--ink-soft)}
.chip.ok{background:var(--ok-bg);color:var(--ok)} .chip.warn{background:var(--warn-bg);color:var(--warn)} .chip.bad{background:var(--bad-bg);color:var(--bad)} .chip.info{background:var(--info-bg);color:var(--info)} .chip.pur{background:var(--lilac);color:var(--pur-d)} .chip.ink{background:var(--ink);color:#fff}
.chip.sample{background:#fff7dd;color:#8a6200;border:1px dashed #e9c96a}
.dot{width:.5rem;height:.5rem;border-radius:99px;display:inline-block;flex:none}
.check{appearance:none;width:20px;height:20px;border-radius:7px;border:1.6px solid #cfc3d6;background:#fff;display:inline-grid;place-items:center;flex:none;cursor:pointer;transition:all .15s;margin:0}
.check:checked{background:var(--ok);border-color:var(--ok)}
.check:checked::after{content:"";width:9px;height:5px;border-left:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(-45deg) translate(1px,-1px)}
.switch{appearance:none;width:40px;height:23px;border-radius:99px;background:#ddd3e2;position:relative;cursor:pointer;transition:background .2s;flex:none;margin:0}
.switch::after{content:"";position:absolute;top:3px;left:3px;width:17px;height:17px;border-radius:99px;background:#fff;transition:transform .2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.switch:checked{background:var(--mag)} .switch:checked::after{transform:translateX(17px)}

/* cards */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow)}
.card.pad{padding:1.25rem} .card.pad-s{padding:.9rem 1rem}
.card-flat{background:#fff;border:1px solid var(--line);border-radius:18px}
.lift{transition:transform .22s cubic-bezier(.2,.7,.3,1),box-shadow .22s}
.lift:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}
.surface-lilac{background:linear-gradient(160deg,#fbf0fe,#fff5fa);border:1px solid #f1dcf6;border-radius:var(--r)}
.surface-ink{background:var(--ink);color:#fff;border-radius:var(--r)}
.sec-h{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin:0 0 .75rem}
.sec-h h3{font-size:1.02rem;font-weight:700}
.page-title{font-family:Sora;font-weight:700;font-size:clamp(1.45rem,2.3vw,2rem);letter-spacing:-.025em;line-height:1.15;margin:0}
.lede{color:var(--ink-soft);margin:.3rem 0 0;max-width:64ch}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.4rem}
.empty{padding:2rem 1rem;text-align:center;color:var(--ink-mute);font-size:.9rem}
.empty b{display:block;color:var(--ink);font-family:Sora;font-size:1rem;margin-bottom:.25rem}
.list>*+*{border-top:1px solid var(--line)}
.li{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem}
.li.click{cursor:pointer;transition:background .12s}.li.click:hover{background:#fcf7fd}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}
.kpi{padding:1.05rem 1.15rem}
.kpi .k{font-size:.78rem;font-weight:600;color:var(--ink-mute)}
.kpi .v{font-family:Sora;font-weight:700;font-size:1.9rem;letter-spacing:-.03em;margin-top:.2rem;line-height:1.1}
.kpi .s{font-size:.78rem;color:var(--ink-soft);margin-top:.25rem}
.g2{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:1.25rem}
.g2e{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}
.g3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
.g2>*,.g2e>*,.g3>*,.kpis>*,.col>*,.grid2>*{min-width:0}
.bar{height:8px;border-radius:99px;background:#f1ecf3;overflow:hidden}
.bar>i{display:block;height:100%;border-radius:99px;transform-origin:left;animation:grow .9s cubic-bezier(.2,.7,.3,1) both}
@keyframes grow{from{transform:scaleX(0)}}
.fade{animation:fi .3s cubic-bezier(.2,.7,.3,1) both}
@keyframes fi{from{opacity:0;transform:translateY(6px)}}
.pop{animation:pop .3s cubic-bezier(.2,1.2,.4,1) both}
@keyframes pop{from{opacity:0;transform:scale(.97) translateY(6px)}}
.skel{background:linear-gradient(90deg,#f1ecf3 25%,#f9f6fa 37%,#f1ecf3 63%);background-size:400% 100%;animation:sk 1.2s ease infinite;border-radius:18px}
@keyframes sk{0%{background-position:100% 50%}100%{background-position:0 50%}}

/* avatars */
.av{border-radius:999px;display:inline-grid;place-items:center;color:#fff;font-weight:700;flex:none;overflow:hidden;font-family:Sora;letter-spacing:-.02em}
.av img{width:100%;height:100%;object-fit:cover}
.avs{display:flex}.avs .av{border:2px solid #fff;margin-left:-3px}.avs .av:first-child{margin-left:0}

/* book covers */
.bookc{border-radius:2px 6px 6px 2px;position:relative;overflow:hidden;color:#fff;flex:none;box-shadow:0 1px 0 rgba(0,0,0,.06),2px 4px 10px -2px rgba(19,19,22,.3),0 14px 26px -18px rgba(19,19,22,.5)}
.bookc::before{content:"";position:absolute;left:0;top:0;bottom:0;width:7%;background:linear-gradient(90deg,rgba(0,0,0,.28),rgba(0,0,0,.06) 70%,rgba(255,255,255,.18));z-index:2}
.bookc::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,rgba(255,255,255,.22) 0%,rgba(255,255,255,0) 38%),radial-gradient(120% 70% at 75% 8%,rgba(255,255,255,.28),rgba(255,255,255,0) 55%);z-index:1;pointer-events:none}
.bookc .bci{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;padding:12% 10% 10% 16%}
.bookc .t{font-family:Fraunces,Georgia,serif;font-weight:600;line-height:1.04;letter-spacing:-.01em;text-wrap:balance}
.bookc .ru{height:1px;background:rgba(255,255,255,.55);width:34%;margin:8% 0}
.bookc .au{font-weight:600;letter-spacing:.14em;text-transform:uppercase;opacity:.88;margin-top:auto;line-height:1.25}
.bookc img.cv{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.book3d{perspective:1200px;display:inline-block;position:relative}
.book3d>.bookc{transform:rotateY(-16deg) rotateX(2deg);transform-origin:left center;transition:transform .5s cubic-bezier(.2,.7,.3,1);box-shadow:18px 22px 40px -18px rgba(70,10,90,.55),2px 3px 8px rgba(19,19,22,.25)}
.book3d:hover>.bookc{transform:rotateY(-6deg) rotateX(1deg)}

/* sign in */
.signin{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}
.si-brand{background:var(--ink);color:#fff;position:relative;overflow:hidden;padding:2.6rem 3rem;display:flex;flex-direction:column}
.si-brand::before{content:"";position:absolute;inset:auto -20% -40% auto;width:720px;height:720px;border-radius:50%;background:radial-gradient(circle,rgba(251,19,121,.35),rgba(174,5,210,.18) 45%,transparent 70%);filter:blur(10px)}
.si-logo{display:flex;align-items:center;gap:.8rem;position:relative}
.si-logo img{width:44px;height:44px;border-radius:50%;box-shadow:0 0 0 2px var(--mag)}
.si-word{font-family:Sora;font-weight:700;font-size:1.2rem}.si-word span{color:var(--mag)}
.si-h{font-family:Sora;font-weight:700;font-size:clamp(2rem,3.6vw,3.3rem);letter-spacing:-.035em;line-height:1.04;margin:clamp(2.5rem,12vh,7rem) 0 1rem;position:relative;max-width:16ch}
.si-p{color:#c9c5d3;max-width:44ch;position:relative;font-size:1.02rem;line-height:1.6}
.si-shelf{display:flex;gap:14px;align-items:flex-end;margin-top:2.2rem;position:relative;overflow:hidden;padding:4px 18px 26px 0}
.si-feats{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1.8rem;position:relative}
.si-feats span{border:1px solid rgba(255,255,255,.16);border-radius:99px;padding:.3rem .75rem;font-size:.8rem;color:#ddd8e4;background:rgba(255,255,255,.04)}
.si-script{font-family:Caveat;font-size:2rem;color:#ff5aa5;position:relative;margin-top:1.6rem}
.si-form{display:grid;place-items:center;padding:2rem 1.25rem}
.si-card{width:min(420px,100%)}
.si-card h2{font-size:1.6rem;font-weight:700}
.si-mlogo{display:none;align-items:center;gap:.7rem;margin-bottom:1.6rem}
.si-mlogo img{width:40px;height:40px;border-radius:50%;box-shadow:0 0 0 2px var(--mag)}
.code-in{letter-spacing:.5em;font-size:1.5rem;text-align:center;font-family:Sora;font-weight:700}

/* team shell */
.shell{display:flex;min-height:100vh}
.side{width:var(--side);flex:none;background:var(--ink);position:sticky;top:0;height:100vh;display:flex;flex-direction:column;overflow-y:auto;scrollbar-width:none}
.side::-webkit-scrollbar{display:none}
.side-top{padding:1.2rem 1.25rem .7rem;display:flex;align-items:center;gap:.75rem}
.side-top img{width:38px;height:38px;border-radius:50%;box-shadow:0 0 0 2px var(--mag)}
.side-top .w{font-family:Sora;font-weight:700;color:#fff;font-size:15px;line-height:1.15}.side-top .w span{color:var(--mag)}
.side-top .s{font-size:11px;color:rgba(255,255,255,.45)}
.nav{padding:0 .75rem .75rem;display:flex;flex-direction:column;gap:2px}
.nav-g{font-size:.7rem;color:#6f6b7b;font-weight:600;padding:.9rem .8rem .3rem;text-transform:uppercase;letter-spacing:.06em}
.nav a{display:flex;align-items:center;gap:.7rem;padding:.5rem .75rem;border-radius:.8rem;color:#bdbac6;font-weight:500;font-size:.9rem;transition:background .15s,color .15s}
.nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.nav a.on{background:rgba(251,19,121,.15);color:#fff}
.nav a.on svg{color:#ff4f9b}
.nav svg{width:18px;height:18px;flex:none}
.nav .ct{margin-left:auto;font-size:11px;font-weight:700;color:rgba(255,255,255,.5)}
.nav .ct.hot{background:var(--mag);color:#fff;border-radius:99px;padding:0 .45rem;line-height:1.5}
.side-foot{margin-top:auto;padding:1rem}
.side-motto{border-radius:18px;padding:1rem;color:#fff;background:linear-gradient(140deg,rgba(174,5,210,.32),rgba(251,19,121,.32))}
.side-motto .script{font-size:1.6rem;line-height:1}
.side-me{display:flex;align-items:center;gap:.7rem;margin-top:.9rem;padding:.2rem;border-radius:14px}
.side-me:hover{background:rgba(255,255,255,.06)}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.hbar{position:sticky;top:0;z-index:30;background:rgba(251,248,251,.86);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.top-in{display:flex;align-items:center;gap:.6rem;padding:0 2rem;height:64px}
.biz{display:flex;gap:2px;background:#f1ebf3;border-radius:99px;padding:4px}
.biz button{border:0;background:transparent;white-space:nowrap;display:flex;align-items:center;gap:.4rem;padding:0 .8rem;height:30px;border-radius:99px;font-size:.8rem;font-weight:600;color:var(--ink-soft)}
.biz button.on{background:var(--ink);color:#fff}
.biz button .n{opacity:.55;font-weight:500}
.biz .shrt{display:none}
.search{display:flex;align-items:center;gap:.5rem;background:#fff;border:1px solid var(--line-2);border-radius:99px;padding:0 .85rem;height:38px;width:260px}
.search input{border:0;outline:0;background:transparent;flex:1;min-width:0;font-size:.88rem}
.search svg{width:16px;height:16px;color:var(--ink-mute)}
.content{padding:1.8rem 2rem 3rem;max-width:1480px;width:100%}
.mob-only{display:none}
.bnav{display:none}
.drawer{position:fixed;inset:0;z-index:70;background:rgba(19,19,22,.45)}
.drawer .side{position:absolute;left:0;top:0;bottom:0;height:100%;width:286px;animation:slin .25s ease both}
@keyframes slin{from{transform:translateX(-100%)}}

/* tables of work */
.task{display:flex;align-items:center;gap:.75rem;padding:.7rem 1rem}
.task .tt{font-weight:600;font-size:.92rem}
.task.done .tt{text-decoration:line-through;color:var(--ink-mute)}
.st-sel{border:0;border-radius:99px;font-size:.72rem;font-weight:700;padding:.22rem 1.4rem .22rem .6rem;appearance:none;cursor:pointer;background-repeat:no-repeat;background-position:right .45rem center;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5'%3E%3Cpath d='M.5.5l3.5 3.5L7.5.5' fill='none' stroke='currentColor' stroke-width='1.2'/%3E%3C/svg%3E")}
.grp-h{font-size:.74rem;font-weight:700;color:var(--ink-mute);text-transform:uppercase;letter-spacing:.06em;padding:.9rem 1rem .4rem;display:flex;gap:.5rem;align-items:center}
.seg{display:inline-flex;background:#f1ebf3;border-radius:99px;padding:3px;gap:2px;flex-wrap:wrap}
.seg button{border:0;background:transparent;border-radius:99px;padding:.32rem .8rem;font-size:.8rem;font-weight:600;color:var(--ink-soft)}
.seg button.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(19,19,22,.12)}
.tabs{display:flex;gap:1.3rem;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none;margin-bottom:1.25rem}
.tabs::-webkit-scrollbar{display:none}
.tabs button{border:0;background:transparent;padding:.75rem 0;font-weight:600;font-size:.88rem;color:var(--ink-soft);border-bottom:2px solid transparent;white-space:nowrap}
.tabs button.on{color:var(--ink);border-color:var(--mag)}
.tabs button .n{color:var(--ink-mute);font-weight:500;margin-left:.2rem}

/* pipeline */
.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(232px,1fr);gap:.9rem;overflow-x:auto;padding-bottom:1rem}
.kcol{background:#f6f0f7;border-radius:20px;padding:.75rem;min-height:300px}
.kcol-h{display:flex;align-items:center;gap:.5rem;padding:.15rem .3rem .7rem;font-weight:700;font-size:.86rem}
.kcard{background:#fff;border:1px solid var(--line);border-radius:16px;padding:.7rem;display:flex;gap:.7rem;margin-bottom:.6rem;cursor:pointer;transition:transform .18s,box-shadow .18s}
.kcard:hover{transform:translateY(-2px);box-shadow:var(--shadow)}

/* stage strip */
.journey{display:flex;gap:4px}
.journey i{flex:1;height:6px;border-radius:99px;background:#efe6f2}
.journey i.d{background:var(--ok)} .journey i.c{background:var(--grad)}

/* messages */
.thread{display:flex;flex-direction:column;gap:.85rem;padding:1rem}
.msg{display:flex;gap:.6rem;max-width:min(560px,92%)}
.msg .bub{background:#f6f0f7;border-radius:4px 18px 18px 18px;padding:.65rem .9rem;font-size:.92rem;line-height:1.5;white-space:pre-wrap;word-wrap:break-word}
.msg.me{margin-left:auto;flex-direction:row-reverse}
.msg.me .bub{background:var(--ink);color:#fff;border-radius:18px 4px 18px 18px}
.msg.ai .bub{background:linear-gradient(160deg,#fbf0fe,#fff5fa);border:1px solid #f1dcf6}
.msg.sys{max-width:100%;justify-content:center}
.msg.sys .bub{background:transparent;color:var(--ink-mute);font-size:.8rem;padding:.1rem}
.msg .meta{font-size:.72rem;color:var(--ink-mute);margin:.2rem .2rem 0}
.msg video,.msg img.media{display:block;max-width:100%;width:320px;border-radius:14px;margin-top:.5rem;background:#000}
.composer{border-top:1px solid var(--line);padding:.8rem;display:flex;flex-direction:column;gap:.55rem;background:#fff;border-radius:0 0 var(--r) var(--r)}
.composer textarea{border:1px solid var(--line-2);border-radius:16px;padding:.7rem .9rem;resize:none;min-height:70px;outline:none;font-size:.93rem}
.composer textarea:focus{border-color:#e48bc0}
.attach{display:flex;align-items:center;gap:.6rem;background:#f6f0f7;border-radius:14px;padding:.5rem .7rem;font-size:.84rem}
.ch{display:inline-flex;align-items:center;gap:.35rem;font-size:.8rem;font-weight:600;color:var(--ink-soft);padding:.25rem .55rem;border-radius:99px;border:1px solid var(--line-2);cursor:pointer;user-select:none}
.ch input{margin:0;accent-color:var(--mag)}
.ch.off{opacity:.5}

/* calendar */
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}
.cal>div{border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:112px;padding:.4rem;background:#fff}
.cal .dow{min-height:auto;background:#fbf7fc;font-size:.72rem;font-weight:700;color:var(--ink-mute);text-align:center;padding:.5rem}
.cal .out{background:#fcfafc;color:#c9c2cf}
.cal .today .dn{background:var(--mag);color:#fff}
.cal .dn{font-size:.75rem;font-weight:700;width:24px;height:24px;border-radius:99px;display:grid;place-items:center}
.cal .ev{display:flex;gap:.35rem;align-items:center;font-size:.72rem;font-weight:600;padding:.2rem;border-radius:8px;margin-top:.25rem;cursor:pointer}
.cal .ev:hover{background:#f8eef9}

/* modal */
.modal{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:1rem}
.modal-scrim{position:absolute;inset:0;background:rgba(19,19,22,.5);backdrop-filter:blur(2px);animation:fi .2s both}
.modal-box{position:relative;background:#fff;border-radius:26px;width:min(640px,100%);max-height:calc(100vh - 2rem);overflow:auto;box-shadow:0 40px 80px -30px rgba(19,19,22,.6);animation:pop .3s cubic-bezier(.2,1.2,.4,1) both}
.modal-box.wide{width:min(900px,100%)}
.mh{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.2rem 1.4rem .4rem}
.mh h3{font-size:1.2rem;font-weight:700}
.mb{padding:.6rem 1.4rem 1.2rem}
.mf{display:flex;justify-content:flex-end;gap:.6rem;padding:1rem 1.4rem 1.3rem;border-top:1px solid var(--line);position:sticky;bottom:0;background:#fff}

/* toast */
#toasts{position:fixed;top:1rem;right:1rem;z-index:95;display:flex;flex-direction:column;gap:.5rem;align-items:flex-end;pointer-events:none}
.toast{pointer-events:auto;background:var(--ink);color:#fff;border-radius:16px;padding:.75rem 1rem;font-size:.875rem;display:flex;gap:.65rem;align-items:flex-start;max-width:min(380px,calc(100vw - 2rem));box-shadow:0 18px 40px -16px rgba(19,19,22,.55);animation:pop .3s both}
.toast i{width:22px;height:22px;border-radius:99px;background:var(--grad);display:grid;place-items:center;flex:none;font-style:normal;font-size:12px}
.toast.err i{background:var(--bad)}

/* portal */
.portal{min-height:100vh;background:radial-gradient(1200px 520px at 85% -10%,#fbe2f7 0%,rgba(251,226,247,0) 60%),radial-gradient(900px 500px at -10% 0%,#fff0f6 0%,rgba(255,240,246,0) 55%),var(--paper)}
.ptop{position:sticky;top:0;z-index:30;background:rgba(251,248,251,.82);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.ptop-in{max-width:1120px;margin:0 auto;padding:0 1.25rem;height:64px;display:flex;align-items:center;gap:1rem}
.ptop img{width:34px;height:34px;border-radius:50%}
.ptabs{display:flex;gap:.25rem}
.ptabs a{padding:.45rem .9rem;border-radius:99px;font-size:.88rem;font-weight:600;color:var(--ink-soft)}
.ptabs a.on{background:var(--ink);color:#fff}
.ptabs a:hover:not(.on){background:#f6eef8}
.pwrap{max-width:1120px;margin:0 auto;padding:1.6rem 1.25rem 4rem}
.phero{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2.4rem;align-items:center;padding:2rem 2.2rem}
.preq{display:flex;gap:.85rem;align-items:center;padding:.9rem 1rem;cursor:pointer;transition:background .15s}
.preq:hover{background:#fcf6fd}
.req-ico{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;flex:none;font-size:18px;font-weight:700}
.preview-bar{background:var(--grad);color:#fff;text-align:center;font-size:.82rem;font-weight:600;padding:.45rem 1rem;position:sticky;top:0;z-index:40}
.preview-bar a{text-decoration:underline;margin-left:.6rem}
.stage-tl{position:relative;padding-left:2.2rem}
.stage-tl .node{position:absolute;left:0;top:.1rem;width:28px;height:28px;border-radius:99px;display:grid;place-items:center;font-size:.8rem;font-weight:700;background:#efe6f2;color:var(--ink-mute)}
.stage-tl .node.d{background:var(--ok);color:#fff}.stage-tl .node.c{background:var(--grad);color:#fff;box-shadow:0 0 0 5px rgba(251,19,121,.15)}
.stage-tl .line{position:absolute;left:13px;top:2.1rem;bottom:-.6rem;width:2px;background:var(--line)}
.ask-chip{border:1px solid #f1dcf6;background:#fff;border-radius:99px;padding:.4rem .8rem;font-size:.82rem;font-weight:600;color:var(--pur-d)}
.ask-chip:hover{background:#fbf0fe}
.typing span{width:6px;height:6px;border-radius:99px;background:#b9a9c4;display:inline-block;animation:tp 1s infinite;margin-right:3px}
.typing span:nth-child(2){animation-delay:.15s}.typing span:nth-child(3){animation-delay:.3s}
@keyframes tp{30%{transform:translateY(-3px);opacity:1}}
.rec-view{width:100%;aspect-ratio:16/10;background:#000;border-radius:18px;object-fit:cover}
.rec-dot{width:10px;height:10px;border-radius:99px;background:#ff3b5c;animation:pulse 1s infinite}

@media (max-width:1320px){
  .biz .full{display:none}
  .biz .shrt{display:inline}
}
@media (max-height:900px) and (min-width:1024px){.side-motto .tiny{display:none}}
@media (max-width:1180px){
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g2{grid-template-columns:1fr}
  .search{width:200px}
}
@media (max-width:1023px){
  .side.desk{display:none}
  .mob-only{display:inline-grid}
  .top-in{padding:0 1rem;height:58px}
  .content{padding:1.2rem 1rem 6.5rem}
  .biz .full{display:none}
  .biz .shrt{display:inline}
  .biz button{padding:0 .6rem}
  .top-in .biz{flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none}
  .top-in .biz::-webkit-scrollbar{display:none}
  .top-in>.grow{display:none}
  .bnav{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:45;background:rgba(255,255,255,.94);backdrop-filter:blur(14px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}
  .bnav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:.55rem 0 .5rem;font-size:.66rem;font-weight:600;color:var(--ink-mute);position:relative}
  .bnav a.on{color:var(--mag)}
  .bnav svg{width:22px;height:22px}
  .bnav .bdg{position:absolute;top:4px;left:calc(50% + 6px);background:var(--mag);color:#fff;border-radius:99px;font-size:.6rem;padding:0 .3rem;line-height:1.5}
  .signin{grid-template-columns:1fr}
  .si-form{order:-1;padding:1.6rem 1.25rem 2rem;background:#fff}
  .si-mlogo{display:flex}
  .si-brand .si-logo{display:none}
  .si-brand .si-h{margin-top:1.2rem}
  .si-brand{padding:1.6rem 1.4rem 2rem;min-height:auto}
  .si-h{margin-top:2.2rem;font-size:2.1rem}
  .si-shelf{margin-top:1.4rem}
  .phero{grid-template-columns:1fr;gap:1.4rem;padding:1.4rem;text-align:left}
  .ptabs.desk{display:none}
  .pwrap{padding:1.1rem 1rem 6.5rem}
  .g2e,.g3{grid-template-columns:1fr}
}
@media (max-width:640px){
  .search{display:none}
  .li[data-eid]{flex-wrap:wrap}
  .li[data-eid] .esc-act{width:100%;padding-left:46px}
  .tabs{-webkit-mask-image:linear-gradient(90deg,#000 85%,transparent);mask-image:linear-gradient(90deg,#000 85%,transparent)}
  .kanban{-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);mask-image:linear-gradient(90deg,#000 88%,transparent)}
  .biz .n{display:none}
  #onb{padding:0;width:38px;flex:none}
  .kpis{gap:.7rem}
  .kpi{padding:.85rem .9rem}.kpi .v{font-size:1.5rem}
  .grid2{grid-template-columns:1fr}
  .page-title{font-size:1.4rem}
  .modal{padding:0;place-items:end center}
  .modal-box{border-radius:24px 24px 0 0;max-height:92vh}
  .cal>div{min-height:64px;padding:.25rem}
  .cal .ev span.nm{display:none}
  .li,.task{padding:.7rem .8rem}
  .hide-s{display:none!important}
}
.a2hs{display:flex;gap:.85rem;align-items:flex-start;padding:.95rem 1rem;margin:0 0 1.1rem;border-color:#f3c6e4;background:linear-gradient(135deg,#fff,#fdf2fa)}
.a2hs img{border-radius:12px;flex:none}
.a2hs .tiny{color:var(--ink-soft);line-height:1.45;margin-top:.15rem}
@media (max-width:400px){
  .biz{gap:0;padding:3px}
  .biz button{padding:0 .45rem;gap:.28rem;font-size:.75rem;height:28px}
  .top-in{gap:.4rem}
}
@media (min-width:641px){.show-s{display:none!important}}
@media print{.side,.hbar,.bnav,.no-print{display:none!important}.content{padding:0}.card{box-shadow:none}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
:focus-visible{outline:2px solid var(--mag);outline-offset:2px}

/* team chat */
.chat-grid{display:grid;grid-template-columns:300px 1fr;gap:1rem;align-items:start}
.chat-list{max-height:calc(100vh - 210px);overflow:auto}
.chat-room.on{background:#fcf0f8}
.chat-ct{background:var(--mag);color:#fff;border-radius:99px;font-size:.72rem;font-weight:700;padding:0 .5rem;line-height:1.6}
.chat-pane{display:flex;flex-direction:column;min-height:420px;height:calc(100vh - 210px)}
.chat-pane .thread{flex:1;overflow:auto}
.chat-pane>.empty{margin:auto}
.chat-send{display:flex;gap:.6rem;align-items:flex-end;padding:.75rem;border-top:1px solid var(--line)}
.chat-send textarea{flex:1;resize:none;border:1px solid var(--line);border-radius:14px;padding:.6rem .8rem;font:inherit;font-size:.95rem;line-height:1.4;min-height:42px;max-height:160px}
.chat-send textarea:focus{outline:none;border-color:var(--mag)}
.chat-back{display:none}
@media (max-width:1023px){
  .chat-grid{grid-template-columns:1fr}
  .chat-grid.open .chat-wide.chat-list,.chat-grid:not(.open) .chat-wide.chat-pane{display:none}
  .chat-back{display:inline-block;margin-bottom:.3rem}
  .chat-list{max-height:none}
  .chat-pane{height:calc(100dvh - 250px);min-height:320px}
}
/* team chat: groups and attachments (2026-11-03) */
.msg audio{display:block;width:280px;max-width:100%;margin-top:.5rem;height:40px}
.chat-tools{display:flex;gap:.1rem;align-self:center}
.chat-tools .icon-btn{width:36px;height:36px;color:var(--ink-soft,#5b5866)}
.chat-tools .icon-btn:hover{background:#f6f0f7;color:var(--mag)}
.chat-att{margin:0 .75rem .1rem}
.chat-pick{max-height:min(50vh,360px);overflow:auto;margin-top:.4rem}
.chat-pick input{width:18px;height:18px;accent-color:var(--mag);flex:none}
.rec-voice{display:grid;place-items:center;min-height:150px;background:#f6f0f7;border-radius:18px;padding:1rem}
.rec-voice audio{width:100%}
.rec-mic{width:76px;height:76px;border-radius:99px;display:grid;place-items:center;background:var(--grad);color:#fff}
.rec-mic svg{width:34px;height:34px}
.rec-mic.on{animation:pulse 1s infinite}
@media (max-width:520px){.chat-tools .icon-btn{width:32px;height:32px}.chat-send{gap:.35rem;padding:.6rem}}
.chat-grid>*{min-width:0}
.chat-send textarea{min-width:0}
