:root{
  --deep:#2D5040; --lg:#009874; --sun:#E2B244; --ivory:#F2F0E5; --mg:#C1D0CA; --soft:#EDF2F0; --page:#F8FAF9; --white:#fff;
  --ink:#2D5040; --ink-soft:#4f6a5d; --line:rgba(45,80,64,.14); --line-strong:rgba(45,80,64,.24); --mint:#9fe3cd;
  --radius:10px; --radius-sm:6px;
  --overlay: linear-gradient(180deg,rgba(18,38,30,.34),rgba(18,38,30,.30) 40%,rgba(18,38,30,.66));
  --appbar: 60px; --tabbar: 64px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;overflow-x:clip}
body{font-family:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;font-size:16px;color:var(--ink);background:var(--page);line-height:1.5;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{letter-spacing:-.01em}
:focus-visible{outline:2px solid var(--lg);outline-offset:3px;border-radius:4px}
.lg{display:inline-block;flex:none;background-image:var(--li);background-repeat:no-repeat;background-position:left center;background-size:contain}
.silk{background-image:var(--overlay),var(--silk-dark);background-size:cover;background-position:center}
a{color:var(--deep)}
button,input,select,textarea{font-family:inherit}
button{cursor:pointer}
.mono{font-family:'IBM Plex Mono',monospace}
.wrap{max-width:1120px;margin:0 auto;padding:0 clamp(20px,4vw,40px)}
.eyebrow{font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase}
.hide{display:none!important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ---------- entry portal ---------- */
#gate{min-height:100vh;background-image:var(--overlay),var(--silk-dark);background-size:cover;background-position:center;color:#fff;display:flex;flex-direction:column}
#gate .foot{padding:20px 24px;display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:12px;color:rgba(255,255,255,.75)}
#gate .top{padding:20px 24px;display:flex;align-items:center;gap:12px}
.wordmark{font-weight:600;font-size:20px;letter-spacing:-.01em;color:#fff}
.wordmark b{color:var(--mint);font-weight:600}
#gate .body{flex:1;display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center;max-width:1180px;margin:0 auto;padding:24px 24px 48px;width:100%}
#gate .eyebrow{color:var(--mint)}
#gate h1{font-size:48px;line-height:1.05;font-weight:600;margin:10px 0 12px}
#gate .lede{font-size:18px;color:rgba(255,255,255,.85);max-width:520px;margin:0 0 28px}
.msbtn{display:inline-flex;align-items:center;gap:12px;background:#fff;color:#1b1b1b;border:0;border-radius:var(--radius-sm);padding:14px 22px;font-weight:600;font-size:16px;min-height:52px}
.msbtn:hover{background:var(--ivory)}
.msbtn svg{width:20px;height:20px}
.gate-note{font-size:13px;color:rgba(255,255,255,.7);margin-top:14px}
.access{background:rgba(255,255,255,.97);color:var(--ink);border-radius:14px;padding:24px;box-shadow:0 20px 50px rgba(0,0,0,.25)}
.access h2{font-size:20px;margin:0 0 4px}
.access .sub{margin:0 0 16px}
.access ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}
.access li{display:grid;grid-template-columns:32px 1fr;gap:12px}
.access .num{width:32px;height:32px;border-radius:50%;background:var(--soft);display:grid;place-items:center;font-weight:600;font-size:14px}
.access b{display:block;font-size:15px}
.access span{font-size:14px;color:var(--ink-soft)}
.access .help{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);font-size:14px;color:var(--ink-soft)}


/* ---------- app bar ---------- */
.appbar{position:sticky;top:0;z-index:30;background:rgba(248,250,249,.9);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--line);color:var(--ink)}
.appbar .wrap{display:flex;align-items:center;gap:14px;height:var(--appbar)}
.appbar .brandlink{display:flex;align-items:center;text-decoration:none}
.appbar .divider{width:1px;height:24px;background:var(--line-strong)}
.appbar .pname{font-weight:600;font-size:15px;white-space:nowrap}
.badge-soft,.badge{display:inline-flex;align-items:center;font-size:12px;font-weight:600;border-radius:999px;padding:4px 11px;white-space:nowrap}
.badge-soft,.badge--soft{background:var(--soft);color:var(--deep)}
.badge--green{background:var(--deep);color:#fff}
.badge--accent{background:var(--sun);color:var(--deep)}
.appbar nav{display:flex;gap:2px;margin-left:16px}
.appbar nav a{color:var(--ink);text-decoration:none;font-size:14px;font-weight:500;padding:8px 12px;border-radius:var(--radius-sm)}
.appbar nav a:hover{color:var(--lg)}
.appbar nav a.on{background:var(--soft);color:var(--deep)}
.spacer{flex:1}
.me{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--ink-soft)}
.me .av{width:32px;height:32px;border-radius:50%;background:var(--deep);color:#fff;display:grid;place-items:center;font-weight:600;font-size:12px}
.me select{background:#fff;color:var(--deep);border:1px solid var(--mg);border-radius:var(--radius-sm);padding:5px 6px;font-size:12px}
.me select option{color:var(--ink)}

/* ---------- hero + search ---------- */
.hero{background-image:var(--overlay),var(--silk-dark);background-size:cover;background-position:center;color:#fff;padding:44px 0 48px}
.hero .eyebrow{color:var(--mint)}
.hero h1{font-size:clamp(34px,5vw,54px);font-weight:600;margin:12px 0 10px;line-height:1.08;letter-spacing:-.02em}
.hero .lede{color:rgba(255,255,255,.88);font-size:18px;max-width:52ch;margin:0 0 26px}
#v-home>.hero{padding:clamp(56px,9vw,104px) 0 clamp(52px,7vw,84px)}
.searchbox{position:relative;max-width:760px}
.searchbox .field{display:flex;align-items:center;background:#fff;border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.2);padding:0 8px 0 16px;min-height:58px}
.searchbox svg.mag{width:22px;height:22px;stroke:var(--ink-soft);fill:none;stroke-width:2;flex:none}
.searchbox input{flex:1;border:0;outline:none;font-size:17px;padding:16px 12px;color:var(--ink);background:transparent;min-width:0}
.searchbox kbd{font-family:'IBM Plex Mono',monospace;font-size:12px;border:1px solid var(--mg);border-radius:4px;padding:1px 6px;color:var(--ink-soft)}
.searchbox .clear{border:0;background:var(--soft);border-radius:50%;width:30px;height:30px;color:var(--deep);font-size:16px}
.suggest{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px;align-items:center}
.suggest small{color:rgba(255,255,255,.7);font-size:13px;margin-right:2px}
.suggest button{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.26);color:#fff;border-radius:999px;padding:6px 13px;font-size:13px;font-weight:500;min-height:34px}
.suggest button:hover{background:rgba(255,255,255,.22)}
.callout{margin-top:22px;display:inline-flex;gap:10px;align-items:center;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);border-radius:var(--radius);padding:10px 14px;font-size:14px;color:rgba(255,255,255,.9)}
.callout b{color:var(--sun)}
.herobtns{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.callout.cta{color:#fff;text-decoration:none;font-weight:600;cursor:pointer;transition:background .2s}
.callout.cta:hover{background:rgba(255,255,255,.18)}
.callout.cta svg{width:16px;height:16px;stroke:var(--sun);fill:none;stroke-width:2}
.contrib{display:flex;gap:18px;align-items:center;justify-content:space-between;background:var(--ivory);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px}
.contrib .eyebrow{color:var(--ink-soft)}
.contrib h3{margin:4px 0 2px;font-size:18px}
.contrib .sub{margin:0}
.contrib .btn{flex:none;text-decoration:none}
.subgrid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:18px;align-items:start}
.flabel{font-size:13px;font-weight:500;color:var(--ink-soft);margin-bottom:6px}
.form input.ro{background:var(--soft);color:var(--ink-soft)}
.form .hint{font-weight:400;font-size:12px;color:var(--ink-soft)}
.form .hide{display:none}
.fpick{position:relative}.fpick input[type=text]{width:100%;box-sizing:border-box}
.fpanel{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:5;max-height:300px;overflow:auto;background:var(--white);border:1px solid var(--mg);border-radius:var(--radius-sm);box-shadow:0 10px 28px rgba(0,0,0,.14);padding:4px}
.fopt{display:block;width:100%;text-align:left;border:0;background:none;padding:8px 10px;border-radius:6px;font:inherit;font-size:13.5px;line-height:1.35;color:var(--ink);cursor:pointer;white-space:normal;overflow-wrap:anywhere}
.fopt:hover,.fopt:focus{background:var(--soft)}.fopt .fp{color:var(--ink-soft)}.fopt b{font-weight:600}
.fmore{padding:8px 10px;font-size:12px;color:var(--ink-soft)}
.steps{margin:10px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:12px;counter-reset:st}
.steps li{display:grid;grid-template-columns:26px 1fr;gap:2px 10px;counter-increment:st}
.steps li::before{content:counter(st);grid-row:span 2;width:24px;height:24px;border-radius:50%;background:var(--deep);color:#fff;font-size:12px;font-weight:600;display:grid;place-items:center}
.steps b{font-size:14px}.steps span{font-size:13px;color:var(--ink-soft)}
.mine{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column}
.mine li{display:flex;gap:8px;align-items:center;justify-content:space-between;padding:10px 0;border-top:1px solid var(--line)}
.mine li:first-child{border-top:0}
.mine li>div{min-width:0;display:flex;flex-direction:column}
.mine b{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis}
.mine .badge{font-size:11px;padding:3px 9px;flex:none}
.subnav .cnt{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--sun);color:var(--deep);font-size:11px;margin-left:4px}
.subnav .cnt.hide{display:none}
.btn .bsub{display:block;width:100%;font-weight:400;font-size:12px;color:var(--ink-soft);margin-top:1px}
.btn .bsub.light{color:rgba(255,255,255,.8)}
.btn:has(.bsub){flex-wrap:wrap;min-height:54px;padding-top:8px;padding-bottom:8px}
.btn.secondary:hover .bsub{color:rgba(255,255,255,.85)}
.linkline .btn{flex:none}

/* ---------- sections ---------- */
section{padding:clamp(44px,6vw,72px) 0 0}
.secband{border-bottom:1px solid var(--line);padding-bottom:clamp(44px,6vw,72px)}
h2{font-size:clamp(24px,3vw,30px);font-weight:600;margin:6px 0 0}
.head .eyebrow{color:var(--ink-soft)}
h3{font-size:19px;font-weight:600;margin:0}
.sub{color:var(--ink-soft);font-size:15px;margin:2px 0 0}
.head{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:24px}
.linkbtn{background:none;border:0;color:var(--deep);font-weight:600;font-size:14px;padding:6px 0;white-space:nowrap}
.linkbtn:hover{color:var(--lg)}

/* new resources */
.newrow{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.ncard{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 1px 2px rgba(45,80,64,.04);transition:box-shadow .2s,transform .2s,border-color .2s;overflow:hidden;display:flex;flex-direction:column;text-align:left;padding:0;color:var(--ink)}
.ncard:hover{border-color:var(--line-strong);box-shadow:0 14px 34px rgba(45,80,64,.12);transform:translateY(-2px)}
.ncard .band{height:112px;background-image:var(--overlay),var(--silk-dark);background-size:cover;background-position:center;position:relative;display:flex;align-items:flex-end;padding:12px 14px}
.ncard .band .new{position:absolute;top:12px;left:14px}
.ncard .band .fmtw{font-family:'IBM Plex Mono',monospace;font-size:11px;color:#fff;opacity:.85}
.ncard .band{overflow:hidden}
.ncard .band.has{height:124px}
.ncard .band .peek{position:absolute;right:16px;top:18px;width:46%;max-width:180px;background:#fff;border-radius:4px 4px 0 0;box-shadow:0 10px 26px rgba(10,24,18,.45);transform:rotate(3deg);transform-origin:top right;transition:transform .25s}
.ncard .band .peek.wide{top:22px;width:54%;max-width:220px;border-radius:4px}
.ncard:hover .band .peek{transform:rotate(1deg) translateY(-4px)}
.ncard .band.has .fmtw{max-width:46%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 1px 2px rgba(0,0,0,.35)}
.ncard .nb{padding:14px;display:flex;flex-direction:column;gap:6px;flex:1}
.ncard .nt{font-weight:600;font-size:15px;line-height:1.35}
.ncard .nf{display:flex;gap:8px;align-items:center;margin-top:auto;padding-top:8px}

/* pathway tiles */
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.tile{position:relative;background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:20px 44px 20px 20px;transition:border-color .2s,box-shadow .2s;text-align:left;color:var(--ink);min-height:84px;display:flex;flex-direction:column;justify-content:center;gap:2px}
.tile b{font-weight:600;font-size:15px}
.tile .n{font-size:13px;color:var(--ink-soft)}
.tile::after{content:'→';position:absolute;right:16px;top:50%;transform:translate(-4px,-50%);opacity:0;transition:.15s;color:var(--lg);font-weight:600}
.tile:hover{border-color:var(--line-strong);box-shadow:0 10px 26px rgba(45,80,64,.09)}
.tile:hover::after{opacity:1;transform:translate(0,-50%)}
.stages{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.stage{background:var(--white);border:1px solid var(--line);border-radius:12px;padding:18px;text-align:left;color:var(--ink);position:relative}
.stage .l{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--ink-soft);letter-spacing:.1em}
.stage h3{margin:4px 0 2px}
.stage p{margin:0;font-size:14px;color:var(--ink-soft)}
.stage .bar{position:absolute;left:0;top:0;height:4px;width:100%;border-radius:12px 12px 0 0}
.stage:hover{border-color:var(--lg)}

/* list rows */
.rows{display:flex;flex-direction:column;gap:8px}
.row{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;transition:border-color .2s,box-shadow .2s;display:grid;grid-template-columns:72px minmax(0,1fr) auto;gap:16px;align-items:start;cursor:pointer}
.row .rbody{min-width:0}
/* small preview in the row: the real page 1 or frame when it exists, else the branded placeholder */
.rthumb{position:relative;width:72px}
.rthumb .thumb{width:72px;border-radius:5px;box-shadow:0 1px 3px rgba(18,38,30,.12)}
.rthumb .thumb.wide,.rthumb .thumb.sq{width:72px}
.rthumb .thumb .tt,.rthumb .thumb .dn,.rthumb .thumb .vt,.rthumb .thumb .pt,.rthumb .thumb .jt,.rthumb .thumb .jk,.rthumb .thumb .wm{display:none}
.rthumb .thumb .tb{padding:10% 10% 0}
.rthumb .thumb .tb .lg{height:6px;width:30px}
.rthumb .thumb .tf .lg{height:5px;width:22px}
.rthumb .thumb .tbody{gap:3px;padding:10%}
.rthumb .thumb .ln{height:2px}
.rthumb .thumb .play,.rthumb .thumb.pod .mic{width:22px;height:22px}
.rthumb .thumb .play::after{border-left-width:7px;border-top-width:5px;border-bottom-width:5px;margin-left:2px}
.rthumb .thumb.pod .mic svg{width:11px;height:11px}
.rthumb .thumb.journal .jh{padding:12% 10% 8%;min-height:30%}
.rthumb .thumb.journal .cols{gap:8%;padding:8% 10%}
.rthumb .thumb.web .tbody{gap:3px}
.rthumb .thumb.web .tbody span{display:none}
/* file type: symbol + label on every row, and as the heading of each group in a list */
.rtop{display:flex;align-items:center;gap:8px;margin-bottom:4px}
.rsize{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--ink-soft)}
.rtype{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;border-radius:5px;padding:3px 8px 3px 6px;color:#fff;background:var(--deep);white-space:nowrap}
.rtype svg,.th svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.rtype.pdf{background:#b3382c}.rtype.ppt{background:#c4551b}.rtype.word{background:#2b5aa6}.rtype.excel{background:#1e7145}
.rtype.video{background:#5b2d8e}.rtype.podcast{background:#8a5a00}.rtype.audio{background:#8a5a00}.rtype.link{background:#1f6f8b}.rtype.gas{background:#a86f00}.rtype.course{background:#2D5040}
.rtype.order{background:#6b4f3a}.rtype.image{background:#3f7a3f}.rtype.kit{background:#2D5040}.rtype.text{background:#5b6b66}.rtype.zip{background:#5b6b66}
.tgroup{margin:0 0 18px}
.th{display:flex;align-items:center;gap:8px;margin:0 0 8px;padding:8px 10px;border-radius:var(--radius-sm);background:var(--soft);font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--deep);border-left:4px solid var(--deep)}
.th svg{width:18px;height:18px}
.th .c{font-family:'IBM Plex Mono',monospace;font-weight:500;background:#fff;border-radius:4px;padding:0 6px;letter-spacing:0;text-transform:none}
.th.pdf{border-left-color:#b3382c;color:#8c2a20}.th.ppt{border-left-color:#c4551b;color:#9b4214}.th.word{border-left-color:#2b5aa6;color:#234a88}.th.excel{border-left-color:#1e7145;color:#1a5c39}
.th.video{border-left-color:#5b2d8e;color:#4a2473}.th.podcast,.th.audio{border-left-color:#8a5a00;color:#6b4600}.th.link{border-left-color:#1f6f8b;color:#1a5c73}.th.gas{border-left-color:#a86f00;color:#7a5000}
.th.order{border-left-color:#6b4f3a}.th.image{border-left-color:#3f7a3f;color:#2f5e2f}.th.text,.th.zip{border-left-color:#5b6b66;color:#5b6b66}
.rsum{margin:6px 0 0;font-size:13.5px;line-height:1.5;color:var(--ink-soft);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rsum.draft{color:#6b4d05}
.rphase{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:8px}
.rphase .rl{font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.08em;color:var(--ink-soft);margin-right:2px}
.stg{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;border-radius:999px;padding:2px 10px 2px 7px;border:1px solid var(--line);background:var(--white);color:var(--deep);white-space:nowrap}
.stg i{width:8px;height:8px;border-radius:50%;background:var(--mg)}
.stg.teach i{background:var(--deep)}.stg.tailor i{background:var(--lg)}.stg.take i{background:var(--sun)}
.stg.none{color:var(--ink-soft);font-weight:500;border-style:dashed}
.row .hit{margin-top:8px}
/* folder explorer */
.ftiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px;margin-bottom:22px}
.tile.folder{flex-direction:row;align-items:center;gap:12px;padding:14px 40px 14px 14px;min-height:72px}
.tile.folder>svg{width:26px;height:26px;stroke:var(--sun);fill:rgba(226,178,68,.22);stroke-width:1.8;flex:none}
.tile.folder>span{display:flex;flex-direction:column;gap:1px;min-width:0}
.tile.folder b{line-height:1.3;overflow-wrap:anywhere}
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;width:100%;font-size:14px;margin:4px 0 10px;padding:10px 12px;background:var(--white);border:1px solid var(--line);border-radius:var(--radius-sm)}
.crumbs .linkbtn{padding:0;white-space:normal;text-align:left;font-weight:500}
.crumbs .sep{color:var(--mg)}
.crumbs b{font-weight:600}
.seg.bmode{margin-right:6px;background:var(--white)}
.seg.bmode button{display:inline-flex;align-items:center;gap:6px;min-height:34px}
.seg.bmode svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2}
.fpath{padding:0;white-space:normal;text-align:left;font-weight:500;font-size:13.5px;display:block}
.row:hover{border-color:var(--line-strong);box-shadow:0 8px 22px rgba(45,80,64,.08)}
.fmt{width:44px;height:44px;border-radius:8px;background:var(--soft);display:grid;place-items:center;font-family:'IBM Plex Mono',monospace;font-size:10.5px;font-weight:500;color:var(--deep);text-align:center}
.row .t{font-weight:600;font-size:15px;line-height:1.35}
.meta{display:flex;flex-wrap:wrap;gap:6px 10px;margin-top:4px;font-size:13px;color:var(--ink-soft);align-items:center}
.tag{font-family:'IBM Plex Mono',monospace;font-size:11.5px;background:var(--soft);border-radius:4px;padding:1px 6px;color:var(--deep);white-space:nowrap}
.tag.sun{background:rgba(226,178,68,.24)}
.tag.ok{background:rgba(0,152,116,.12);color:#00664e}
.hit{display:block;font-size:13px;color:var(--ink-soft);margin-top:4px}
.hit mark{background:rgba(226,178,68,.35);color:var(--ink);border-radius:3px;padding:0 2px}
.ra{display:flex;gap:6px}
.iconbtn{width:40px;height:40px;border-radius:var(--radius-sm);border:1px solid var(--mg);background:var(--white);display:grid;place-items:center;color:var(--deep)}
.iconbtn:hover{border-color:var(--lg);color:var(--lg)}
.iconbtn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2}
.iconbtn[disabled]{opacity:.35;cursor:not-allowed}
.btn{border:0;border-radius:var(--radius-sm);padding:10px 16px;font-weight:600;font-size:14px;min-height:42px;display:inline-flex;align-items:center;gap:8px;justify-content:center}
.btn.primary{background:var(--deep);color:#fff}.btn.primary:hover{background:var(--lg)}
.btn.secondary{background:var(--white);color:var(--deep);border:1.5px solid var(--deep)}.btn.secondary:hover{background:var(--deep);color:#fff}
.btn.accent{background:var(--sun);color:var(--deep)}.btn.accent:hover{background:#d4a531}
.btn.sm{padding:6px 12px;font-size:13px;min-height:34px}
.btn svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2}
.empty{padding:28px;text-align:center;color:var(--ink-soft);background:var(--white);border:1px dashed var(--mg);border-radius:var(--radius)}

/* search results */
.resgroup{margin:6px 0 20px}
.resgroup h4{font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 10px;display:flex;gap:8px;align-items:center}
.resgroup h4 .c{font-family:'IBM Plex Mono',monospace;background:var(--soft);border-radius:4px;padding:0 6px}
.fchips{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 18px;overflow-x:auto}
.fchip{border:1px solid var(--mg);background:var(--white);border-radius:999px;padding:6px 12px;font-size:13px;font-weight:500;color:var(--ink);white-space:nowrap;min-height:34px}
.fchip.on{background:var(--deep);border-color:var(--deep);color:#fff}
.didyou{font-size:14px;color:var(--ink-soft);margin:-6px 0 14px}

/* drawer + sheet */
.scrim{position:fixed;inset:0;background:rgba(18,38,30,.4);opacity:0;pointer-events:none;transition:.2s;z-index:50}
.scrim.on{opacity:1;pointer-events:auto}
.drawer{position:fixed;top:0;right:0;height:100%;width:min(540px,100%);background:var(--white);z-index:51;transform:translateX(100%);visibility:hidden;transition:transform .25s,visibility .25s;display:flex;flex-direction:column;box-shadow:-8px 0 30px rgba(0,0,0,.14)}
.drawer.on{transform:none;visibility:visible}
.dh{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;gap:12px;align-items:flex-start}
.dh h3{flex:1;line-height:1.3}
.x{border:0;background:var(--soft);width:36px;height:36px;border-radius:8px;font-size:20px;color:var(--deep);flex:none}
.db{padding:20px;overflow:auto;flex:1}
.df{padding:14px 20px calc(14px + env(safe-area-inset-bottom));border-top:1px solid var(--line);display:flex;gap:8px;flex-wrap:wrap}
.df .btn{flex:1}
.preview{border-radius:var(--radius);background:var(--soft);display:grid;place-items:center;margin-bottom:18px;border:1px solid var(--line);padding:18px}
.preview .thumb{width:min(220px,70%)}
dl{display:grid;grid-template-columns:130px 1fr;gap:9px 12px;margin:0;font-size:14px}
dt{color:var(--ink-soft)} dd{margin:0;font-weight:500}
.note{background:var(--soft);border-left:4px solid var(--deep);border-radius:0 var(--radius-sm) var(--radius-sm) 0;padding:10px 12px;font-size:13px;color:var(--ink-soft);margin-top:16px}
.note.warn{background:rgba(226,178,68,.16);border-left-color:var(--sun);color:#6b4d05}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:52;background:var(--white);border-radius:16px 16px 0 0;padding:10px 20px calc(20px + env(safe-area-inset-bottom));transform:translateY(105%);visibility:hidden;transition:transform .25s,visibility .25s;max-width:560px;margin:0 auto;box-shadow:0 -10px 30px rgba(0,0,0,.18);max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);overflow-y:auto;overscroll-behavior:contain}
.sheet.on{transform:none;visibility:visible}
.sheet .grab{width:40px;height:4px;border-radius:2px;background:var(--mg);margin:0 auto 14px}
.sheet h3{margin-bottom:2px}
.sheet .opts{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:16px 0 12px}
.sheet .opt{text-decoration:none;border:1px solid var(--line);background:var(--page);border-radius:12px;padding:14px 8px;display:flex;flex-direction:column;align-items:center;gap:8px;font-weight:600;font-size:14px;color:var(--ink);min-height:92px}
.sheet .opt:hover{border-color:var(--lg)}
.sheet .opt .ic{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;color:#fff}
.sheet .opt .ic svg{width:20px;height:20px;stroke:#fff;fill:none;stroke-width:2}
.sheet .opt small{font-weight:400;font-size:11.5px;color:var(--ink-soft)}
.sheet .opt.rec{border-color:var(--sun);background:rgba(226,178,68,.1)}
.linkline{display:flex;gap:8px;align-items:center;background:var(--soft);border-radius:var(--radius-sm);padding:8px 10px;font-family:'IBM Plex Mono',monospace;font-size:12px;overflow:hidden}
.linkline span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.toast{position:fixed;left:50%;bottom:calc(var(--tabbar) + 20px);transform:translate(-50%,20px);background:var(--deep);color:#fff;padding:10px 16px;border-radius:999px;font-size:14px;font-weight:500;opacity:0;transition:.2s;z-index:60;pointer-events:none;white-space:nowrap}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* ---------- admin ---------- */
.subnav{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:20px;overflow-x:auto}
.subnav button{border:0;background:none;padding:10px 14px;font-weight:600;font-size:14px;color:var(--ink-soft);border-bottom:2px solid transparent;white-space:nowrap}
.subnav button.on{color:var(--deep);border-bottom-color:var(--deep)}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.toolbar input,.toolbar select{border:1px solid var(--mg);border-radius:var(--radius-sm);padding:9px 12px;font-size:14px;background:var(--white);color:var(--ink);min-height:40px}
.toolbar input{flex:1;min-width:200px}
table.t{width:100%;border-collapse:collapse;background:var(--white);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;font-size:14px}
.t th{text-align:left;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);background:var(--soft);padding:10px 12px}
.t td{padding:10px 12px;border-top:1px solid var(--line);vertical-align:middle}
.t td.num,.t th.num{text-align:right;font-family:'IBM Plex Mono',monospace}
.t tr:hover td{background:#fbfcfb}
.form{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form .full{grid-column:1/-1}
.form label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:500;color:var(--ink-soft)}
.form input[type=text],.form select,.form textarea{border:1px solid var(--mg);border-radius:var(--radius-sm);padding:10px 12px;font-size:15px;color:var(--ink);background:var(--white)}
.form textarea{min-height:80px;resize:vertical}
.drop{border:2px dashed var(--mg);border-radius:var(--radius);padding:22px;text-align:center;color:var(--ink-soft);font-size:14px;background:var(--page)}
.drop b{color:var(--deep)}
.check{flex-direction:row!important;align-items:flex-start;gap:10px!important;background:var(--soft);border-radius:var(--radius-sm);padding:12px;color:var(--ink)!important;font-size:14px!important}
.check input{width:20px;height:20px;accent-color:var(--deep);margin:1px 0 0;flex:none}
.check b{display:block;font-size:14px}
.check span{font-weight:400;color:var(--ink-soft);font-size:13px}
.check.feat{background:rgba(226,178,68,.16)}
.kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:16px}
.kpi{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:14px}
.kpi .l{font-size:12.5px;color:var(--ink-soft);font-weight:500}
.kpi .v{font-size:26px;font-weight:600;line-height:1.15;margin-top:2px}
.kpi .d{font-size:12px;color:var(--ink-soft);margin-top:2px}
.kpi .d.up{color:#00664e}
.panel{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:16px}
.panel h3{font-size:16px;margin-bottom:2px}
.panel .sub{font-size:13px;margin-bottom:12px}
.grid2{display:grid;grid-template-columns:1.4fr 1fr;gap:14px;margin-bottom:14px}
.samplebar{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-bottom:14px}
.pill{font-size:12px;font-weight:600;border-radius:999px;padding:3px 10px;background:rgba(226,178,68,.22);color:#6b4d05}
.seg{display:inline-flex;border:1px solid var(--mg);border-radius:var(--radius-sm);overflow:hidden}
.seg button{border:0;background:var(--white);padding:7px 12px;font-size:13px;font-weight:600;color:var(--ink-soft)}
.seg button.on{background:var(--deep);color:#fff}
.chart{position:relative}
.chart svg{display:block;width:100%;height:auto}
.tip{position:absolute;pointer-events:none;background:var(--deep);color:#fff;font-size:12px;padding:6px 9px;border-radius:6px;white-space:nowrap;transform:translate(-50%,-115%);opacity:0;transition:opacity .1s}
.hbar{display:grid;grid-template-columns:minmax(0,1fr) 120px 44px;gap:10px;align-items:center;font-size:13.5px;padding:5px 0}
.hbar .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hbar .tr{height:10px;background:var(--soft);border-radius:0 4px 4px 0}
.hbar .tr i{display:block;height:100%;background:var(--deep);border-radius:0 4px 4px 0}
.hbar .vv{text-align:right;font-family:'IBM Plex Mono',monospace;font-size:12.5px}
.vel{font-weight:600;font-family:'IBM Plex Mono',monospace;font-size:13px}
.vel.up{color:#00664e}.vel.dn{color:var(--ink-soft)}
.audit{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px}
.audit.done{background:var(--soft)}
.audit .ops{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.audit .rev{width:64px;font-size:13px;border:1px solid var(--mg);border-radius:var(--radius-sm);padding:6px 8px}
/* expandable audit and submission rows */
.audit .ttl{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.audit .ttl .linkbtn{padding:0;text-align:left;font-weight:600;font-size:15px;color:var(--ink);white-space:normal;display:inline-flex;gap:6px;align-items:flex-start;line-height:1.35}
.chev{width:16px;height:16px;flex:none;margin-top:2px;display:inline-grid;place-items:center;color:var(--deep);transition:transform .15s}
.chev svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.audit.open>div>.ttl .chev{transform:rotate(90deg)}
.audit .adetail{grid-column:1/-1;border-top:1px solid var(--line);padding-top:14px;margin-top:2px;display:grid;grid-template-columns:150px minmax(0,1fr);gap:16px;align-items:start}
.adetail .pv .thumb{width:100%}
.adetail dl{grid-template-columns:110px 1fr;gap:6px 10px;font-size:13.5px;margin-bottom:12px}
.adetail .acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.adetail .rpx .ai{margin:0 0 10px}
.adetail.sub{display:flex;flex-direction:column;gap:14px;align-items:stretch}
.adetail.inner{border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px;background:var(--white);margin:0}
.subblock h5{margin:0 0 8px;font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}
.frame{grid-column:1/-1;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;background:#fff}
.frame .frh{display:flex;justify-content:space-between;gap:10px;padding:8px 12px;font-size:13px;background:var(--soft);color:var(--ink-soft);border-bottom:1px solid var(--line)}
.frame .frh a{color:var(--deep);font-weight:600}
.frame iframe{display:block;width:100%;height:600px;border:0;background:#fff}
.months{display:grid;grid-template-columns:repeat(10,1fr);gap:6px;margin:8px 0 18px}
.month{background:var(--white);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 4px;text-align:center;font-size:12px;color:var(--ink)}
.month b{display:block;font-size:16px}
.month.on{background:var(--deep);color:#fff;border-color:var(--deep)}
.month.now:not(.on){border:2px solid var(--sun)}
.progress{height:10px;background:var(--soft);border-radius:999px;overflow:hidden;margin:6px 0}
.progress i{display:block;height:100%;background:var(--lg)}

/* footer */
footer{margin-top:56px;background:var(--ivory);color:var(--ink)}
footer .wrap{display:flex;justify-content:space-between;align-items:center;padding:24px;gap:16px}

footer small{font-size:12px;color:var(--ink-soft);text-align:right;line-height:1.5}


/* hover preview */
.pop{position:fixed;z-index:70;width:300px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 18px 44px rgba(18,38,30,.22);padding:10px;pointer-events:none;opacity:0;transform:translateY(6px);transition:opacity .15s,transform .15s}
.pop.on{opacity:1;transform:none}
.pop .cap{display:flex;justify-content:space-between;gap:8px;margin-top:10px;font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.06em}
.thumb{position:relative;width:100%;border-radius:6px;overflow:hidden;border:1px solid var(--line);background:#fff;font-family:'IBM Plex Sans',sans-serif}
.thumb.page{aspect-ratio:3/4}
.thumb.wide{aspect-ratio:16/9}
.thumb.sq{aspect-ratio:1/1}
.thumb .tb{background-image:var(--overlay),var(--silk-dark);background-size:cover;background-position:center;height:34%;padding:9% 9% 0;color:#fff;display:flex;flex-direction:column;gap:6%}
.thumb .tb .lg{height:12px;width:56px}
.thumb .tt{font-size:11px;font-weight:600;line-height:1.25;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.thumb .tbody{padding:8% 9%;display:flex;flex-direction:column;gap:6px}
.thumb .ln{height:4px;border-radius:2px;background:var(--soft)}
.thumb .ln.s{width:62%}.thumb .ln.m{width:84%}
.thumb .dn{font-family:'IBM Plex Mono',monospace;font-size:8px;color:var(--ink-soft)}
.thumb .tf{position:absolute;left:9%;right:9%;bottom:6%;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:5%}
.thumb .tf .lg{height:9px;width:44px}
.thumb.journal .jh{padding:10% 9% 4%;border-bottom:2px solid var(--deep)}
.thumb.journal .jk{font-family:'IBM Plex Mono',monospace;font-size:7.5px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.08em}
.thumb.journal .jt{font-family:Georgia,serif;font-size:11.5px;line-height:1.25;color:#1f2a25;margin-top:5px;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.thumb.journal .cols{display:grid;grid-template-columns:1fr 1fr;gap:6%;padding:6% 9%}
.thumb.video{background-image:var(--overlay),var(--silk-dark);background-size:cover;background-position:center;color:#fff}
.thumb .play{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.92);display:grid;place-items:center}
.thumb .play::after{content:'';border-left:12px solid var(--deep);border-top:8px solid transparent;border-bottom:8px solid transparent;margin-left:3px}
.thumb .vt{position:absolute;left:7%;right:7%;bottom:8%;font-size:10.5px;font-weight:600;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.thumb.pod{background-image:var(--silk-corn);background-size:cover;display:flex;flex-direction:column;justify-content:flex-end;padding:9%}
.thumb.pod .mic{width:38px;height:38px;border-radius:50%;background:var(--deep);display:grid;place-items:center;margin-bottom:auto}
.thumb.pod .mic svg{width:18px;height:18px;stroke:#fff;fill:none;stroke-width:2}
.thumb.pod .pt{font-size:11px;font-weight:600;color:var(--deep);line-height:1.25}
.thumb.web .bar{height:14%;background:var(--soft);display:flex;align-items:center;gap:4px;padding:0 6%}
.thumb.web .bar i{width:5px;height:5px;border-radius:50%;background:var(--mg)}
.thumb.web .bar span{flex:1;height:6px;border-radius:3px;background:#fff;margin-left:6px}
.thumb.kit{display:grid;grid-template-columns:1fr 1fr;gap:6%;padding:9%;background:var(--ivory)}
.thumb.kit div{border-radius:4px;background:#fff;border:1px solid var(--line);background-size:70%;background-repeat:no-repeat;background-position:center}
/* AI summary */
.ai.answer{margin:0;box-shadow:0 10px 30px rgba(45,80,64,.08)}
.ai.answer .aib{font-size:15px}
.ai .linkbtn{white-space:normal;overflow-wrap:anywhere;text-align:left}
.ai{margin:18px 0 4px;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.ai .aih{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--soft);border-bottom:1px solid var(--line)}
.ai .aih b{font-size:13px}
.ai .spark{width:22px;height:22px;border-radius:6px;background:var(--deep);display:grid;place-items:center}
.ai .spark svg{width:13px;height:13px;fill:var(--sun)}
.ai .aib{padding:12px 14px;font-size:14px;line-height:1.55}
.ai .aib p{margin:0 0 8px}
.ai .aib h5{margin:10px 0 4px;font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}
.ai .chips{display:flex;flex-wrap:wrap;gap:6px}
.ai .aif{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 14px;border-top:1px solid var(--line);font-size:12px;color:var(--ink-soft)}
.ai .aif button{border:1px solid var(--mg);background:#fff;border-radius:6px;padding:3px 8px;font-size:12px;color:var(--deep)}
.ai.loading .aib{color:var(--ink-soft)}
.typing{display:inline-flex;gap:4px;vertical-align:middle}
.typing i{width:6px;height:6px;border-radius:50%;background:var(--mg);animation:bl 1s infinite}
.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}
@keyframes bl{0%,80%,100%{opacity:.3}40%{opacity:1}}
@media (hover:none){.pop{display:none}}

.attest{margin:14px 0 4px;border:1px solid var(--line);border-left:4px solid var(--sun);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:rgba(226,178,68,.08);padding:12px 14px;display:flex;flex-direction:column;gap:10px}
.att-warn{background:#fff;border:1px solid rgba(226,178,68,.6);border-radius:var(--radius-sm);padding:9px 11px;font-size:13px;line-height:1.45;color:#5c4204}
.att-h{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;color:var(--ink-soft)}
.att-r{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:500;color:var(--ink-soft)}
.att-r select{border:1px solid var(--mg);border-radius:var(--radius-sm);padding:10px 12px;font-size:15px;color:var(--ink);background:#fff;min-height:44px}
.att-c{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;line-height:1.45;color:var(--ink);cursor:pointer}
.att-c input{width:22px;height:22px;accent-color:var(--deep);flex:none;margin:0}
.locked{opacity:.38;pointer-events:none;filter:grayscale(.4);transition:opacity .2s}
.use{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;border-radius:999px;padding:2px 9px;white-space:nowrap}
.use::before{content:'';width:6px;height:6px;border-radius:50%}
.use.ext{background:rgba(0,152,116,.12);color:#00664e}.use.ext::before{background:var(--lg)}
.use.int{background:rgba(226,178,68,.2);color:#6b4d05}.use.int::before{background:var(--sun)}
.useband{display:flex;gap:10px;align-items:flex-start;border-radius:var(--radius-sm);padding:10px 12px;margin:0 0 16px;font-size:13.5px;line-height:1.45}
.useband b{display:block;font-size:12px;letter-spacing:.12em;text-transform:uppercase}
.useband.ext{background:rgba(0,152,116,.09);color:#00513e;border:1px solid rgba(0,152,116,.25)}
.useband.int{background:rgba(226,178,68,.14);color:#5c4204;border:1px solid rgba(226,178,68,.45)}
.thumb .wm{position:absolute;left:0;right:0;bottom:0;background:rgba(226,178,68,.92);color:var(--deep);font-size:8.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;text-align:center;padding:3px 0}
.radio2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.radio2 label{flex-direction:row!important;gap:10px!important;align-items:flex-start;border:1.5px solid var(--mg);border-radius:var(--radius-sm);padding:12px;cursor:pointer;color:var(--ink)!important;font-size:13px!important}
.radio2 input{accent-color:var(--deep);width:18px;height:18px;margin:1px 0 0;flex:none}
.radio2 b{display:block;font-size:14px}
.radio2 span{color:var(--ink-soft);font-weight:400}
.form>*,.radio2 label{min-width:0}
.db{overflow-x:hidden}
.radio2 label:has(input:checked){border-color:var(--deep);background:var(--soft)}
.ferr{color:#9a3b1e;font-size:12.5px;margin-top:4px}
/* mobile tab bar */
.tabbar{display:none}

@media (max-width:980px){
  .kpis{grid-template-columns:repeat(3,1fr)}
  .grid2{grid-template-columns:1fr}
  #gate .body{grid-template-columns:1fr;gap:28px}
}
@media (max-width:760px){
  .wrap{padding:0 16px}
  .appbar nav,.appbar .divider,.appbar .pname,.me .rolelbl{display:none}
  .badge-soft{font-size:11px}
  .hero{padding:24px 0 26px}
  .hero h1{font-size:28px;margin-bottom:14px}
  .searchbox kbd{display:none}
  .callout{display:none}
  #gate h1{font-size:34px}
  #gate .lede{font-size:16px}
  .msbtn{width:100%;justify-content:center}
  section{padding:28px 0 0}
  h2{font-size:22px}
  .newrow{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;margin:0 -16px;padding:0 16px 8px}
  .ncard{flex:0 0 78%;scroll-snap-align:start}
  .stages{grid-template-columns:1fr}
  .tiles{grid-template-columns:1fr 1fr}
  .tile{padding:14px;min-height:76px}
  .tile::after{display:none}
  .row{grid-template-columns:56px minmax(0,1fr);padding:12px;gap:12px}
  .row .ra{grid-column:1/-1;justify-content:flex-end}
  .rthumb,.rthumb .thumb{width:56px}
  .fmt{width:40px;height:40px}
  .ftiles{grid-template-columns:1fr}
  .kpis{grid-template-columns:1fr 1fr}
  .form{grid-template-columns:1fr}
  .t .hm{display:none}
  .months{grid-template-columns:repeat(5,1fr)}
  .audit{grid-template-columns:minmax(0,1fr)}
  .audit .ops{justify-content:flex-start}
  .audit .adetail{grid-template-columns:minmax(0,1fr)}
  .adetail .pv{width:min(200px,60%)}
  .frame iframe{height:420px}
  body.app{padding-bottom:calc(var(--tabbar) + env(safe-area-inset-bottom))}
  .tabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--white);border-top:1px solid var(--line);height:calc(var(--tabbar) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom)}
  .tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;font-weight:600;color:var(--ink-soft);text-decoration:none}
  .tabbar a svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8}
  .tabbar a.on{color:var(--deep)}
  .tabbar.admin{grid-template-columns:repeat(6,1fr)}
  .subgrid{grid-template-columns:1fr}
  .contrib{flex-direction:column;align-items:flex-start}
  .contrib .btn{width:100%}
  .ncard .band .peek{width:42%}
  footer .wrap{flex-direction:column;align-items:flex-start;gap:6px}
  .hbar{grid-template-columns:minmax(0,1fr) 70px 40px}
}

/* ---------- production additions ---------- */
.thumb.img{background:#fff}
.thumb.img img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}
.me .av{cursor:default}
.me .out{font-size:13px;color:var(--ink-soft);text-decoration:none}
.me .out:hover{color:var(--deep);text-decoration:underline}
.loading{padding:28px 0;color:var(--ink-soft);font-size:14px}
.err{background:#fbeeee;border:1px solid #e4b9b9;color:#7a2424;border-radius:var(--radius-sm);padding:10px 12px;font-size:14px;margin:10px 0}
.err .errraw{font-family:'IBM Plex Mono',monospace;font-size:11.5px;background:rgba(255,255,255,.7);border-radius:4px;padding:6px 8px;margin-top:8px;overflow-wrap:anywhere;color:#5a1d1d}
.errbtns{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:10px}
.chks{display:flex;flex-direction:column;gap:8px}
.chk{display:grid;grid-template-columns:28px minmax(0,1fr);gap:10px;align-items:start;border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;background:var(--white);font-size:14px}
.chk .st{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:14px;background:var(--soft);color:var(--ink-soft)}
.chk.ok .st{background:rgba(0,152,116,.15);color:#00664e}
.chk.bad .st{background:#fbeeee;color:#7a2424}
.chk.warn .st{background:rgba(226,178,68,.25);color:#6b4d05}
.chk b{font-size:14px}
.chk .d{font-size:13px;color:var(--ink-soft);overflow-wrap:anywhere;margin-top:2px}
.chk.bad .d{color:#7a2424}
.flist{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.flist li{display:flex;align-items:center;gap:10px;justify-content:space-between;border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px;font-size:14px;background:#fff}
.flist li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.flist li .acts{display:flex;gap:6px;flex:none}
.cats{display:flex;flex-wrap:wrap;gap:6px}
.cats label{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--mg);border-radius:999px;padding:5px 10px;font-size:13px;color:var(--ink);background:#fff;cursor:pointer}
.cats input{accent-color:#2D5040;margin:0}
.tool{border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:16px;margin-bottom:12px}
.tool h3{margin:0 0 4px;font-size:16px}
.tool .row2{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:10px}
.tlog{font-family:'IBM Plex Mono',monospace;font-size:12px;background:var(--soft);border-radius:6px;padding:8px 10px;max-height:180px;overflow:auto;margin-top:10px;white-space:pre-wrap;color:var(--ink-soft)}
.counts{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:14px}
.ai .draft{background:var(--sun);color:var(--deep)}
a.btn{text-decoration:none}
.upl{font-size:13px;color:var(--ink-soft);margin-top:6px}
.form .cats label{flex-direction:row;align-items:center;gap:6px;font-weight:400;color:var(--ink)}
.form .cats input{width:16px;height:16px}
.form input[type=email]{border:1px solid var(--mg);border-radius:var(--radius-sm);padding:10px 12px;font-size:15px}
.me .out{white-space:nowrap}
@media (max-width:760px){.me .out{display:none}}

/* ---------- email builder ---------- */
.embtn{position:relative;display:inline-flex;align-items:center;gap:7px;border:1px solid var(--mg);background:var(--white);color:var(--deep);border-radius:999px;padding:6px 12px 6px 10px;font-weight:600;font-size:13px;min-height:34px}
.embtn:hover{border-color:var(--lg);color:var(--lg)}
.embtn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.embtn .cnt{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--sun);color:var(--deep);font-size:11px;font-weight:700}
.embtn .cnt.hide{display:none}
.embtn.has{border-color:var(--deep);background:var(--soft)}
.btn.buildbtn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.emseg{width:100%}.emseg button{flex:1}
.emseg .segn{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--sun);color:var(--deep);font-size:11px;margin-left:4px}
.emlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.emitem{display:grid;grid-template-columns:56px minmax(0,1fr) 36px;gap:12px;align-items:start;border:1px solid var(--line);border-radius:var(--radius);padding:10px;background:var(--white)}
.emthumb,.emthumb .thumb{width:56px}
.emitem .t{font-weight:600;font-size:14px;line-height:1.3;margin:4px 0 4px}
.emitem .meta{display:flex;flex-wrap:wrap;gap:6px 10px;font-size:12px;color:var(--ink-soft);align-items:center}
.emitem .rtop{display:flex;gap:8px;align-items:center}
.emitem .rsize{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--ink-soft)}
.emmode{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.emmode label{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--mg);border-radius:999px;padding:4px 10px;font-size:12.5px;font-weight:500;color:var(--ink);cursor:pointer;background:#fff}
.emmode label.on{border-color:var(--deep);background:var(--soft)}
.emmode label.off{opacity:.45;cursor:not-allowed}
.emmode input{accent-color:var(--deep);margin:0;width:14px;height:14px}
.emx{width:36px;height:36px}
.emx svg{width:16px;height:16px}
.empv{margin-top:16px;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.empvh{font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);background:var(--soft);padding:8px 12px;border-bottom:1px solid var(--line)}
.empvb{padding:14px 16px;background:#fff;font-size:14px;overflow-wrap:anywhere}
.empvb table{width:100%}
.emdone{text-align:center;padding:28px 10px;display:flex;flex-direction:column;gap:10px;align-items:center}
.emdone .emok{width:52px;height:52px;border-radius:50%;background:rgba(0,152,116,.15);color:#00664e;font-size:26px;font-weight:700;display:grid;place-items:center}
.emdone h4{margin:4px 0 0;font-size:18px}
.emdone p{margin:0;color:var(--ink-soft);max-width:38ch}
.emdone .btn{min-width:220px;margin-top:6px}
.emrow,.emmonth{border:1px solid var(--line);border-radius:var(--radius);background:#fff;margin-bottom:8px}
.emrow summary,.emmonth summary{list-style:none;cursor:pointer;padding:10px 12px}
.emrow summary::-webkit-details-marker,.emmonth summary::-webkit-details-marker{display:none}
.emrh{display:grid;gap:3px}
.emrh b{font-size:14px;font-weight:600;line-height:1.3}
.emrm{font-size:12.5px;color:var(--ink-soft)}
.emrs{font-size:12.5px}
.emst{color:var(--ink-soft);font-weight:500}
.emri{list-style:none;margin:0;padding:4px 12px 12px;display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--line)}
.emri li{display:flex;flex-direction:column;gap:2px;padding-top:6px}
.emrt{font-size:13.5px;font-weight:500}
.emrd{font-size:12px;color:var(--ink-soft)}
.emrow>a.linkbtn{display:inline-block;margin:0 12px 10px}
.emolder{margin:18px 0 8px;font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}
.emmonth{background:var(--soft)}
.emmonth summary{display:flex;justify-content:space-between;align-items:center;gap:10px}
.emmh{display:flex;flex-direction:column;gap:2px}
.emmh b{font-size:14px}
.emmonth summary::after{content:'›';font-size:20px;line-height:1;color:var(--ink-soft);transition:transform .15s;flex:none}
.emmonth[open] summary::after{transform:rotate(90deg)}
.emmb{padding:0 8px 8px}
.emmb .emrow{margin-bottom:6px}
@media (max-width:760px){.embtn .hm{display:none}.embtn{padding:6px 9px}.emitem{grid-template-columns:48px minmax(0,1fr) 32px;gap:10px}.emthumb,.emthumb .thumb{width:48px}}
