/* ---------- shared ---------- */
.small{font-size:13px}
.sec-head{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin:34px 0 14px}
.sec-head h2{font-size:24px}
.sec-head a{color:var(--sky-ink)}
.h3i{display:flex;align-items:center;gap:10px;font-size:20px}
.h3i svg{width:20px;height:20px;color:var(--ink-3)}
.grid.two{grid-template-columns:1fr 1fr}.grid.three{grid-template-columns:repeat(3,1fr)}
@media (max-width:760px){.grid.two,.grid.three{grid-template-columns:1fr}}
.area-ico{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:var(--c);color:#fff;flex:none}
.area-ico svg{width:22px;height:22px}.area-ico.sm{width:36px;height:36px;border-radius:10px}
@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
@keyframes pop{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}

/* ---------- map ---------- */
.map-hero{display:flex;gap:28px;align-items:center;flex-wrap:wrap;background:linear-gradient(120deg,#fff 60%,var(--sky-wash));position:relative;overflow:hidden}
.mh-text{flex:1 1 280px;min-width:0;display:flex;flex-direction:column;gap:10px}
.mh-text h2{font-size:30px;max-width:22ch}
.mh-stats{display:flex;gap:22px;align-items:center;flex-wrap:wrap}
.stat b{display:block;font:800 40px/1 var(--display);letter-spacing:-.04em}
.stat b small{font-size:20px;color:var(--ink-3)}
.stat span{font-size:12.5px;color:var(--ink-2)}
.map-wrap{margin-top:18px;padding:18px 0 8px}
.map-legend{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:0 22px 6px}
.lg{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2)}
.lg-dot{width:16px;height:16px;border-radius:50%;background:var(--line);display:grid;place-items:center;font:700 10px/1 var(--mono);color:#fff;font-style:normal}
.lg-dot.done{background:var(--mint)}.lg-dot.req{background:var(--coral)}
.map-scroll{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.map{position:relative;margin:0 auto;background:radial-gradient(circle,var(--dot) 1px,transparent 1.3px) 0 0/22px 22px}
.map-svg{position:absolute;inset:0}
.jpath{fill:none;stroke:var(--line);stroke-width:26;stroke-linecap:round}
.jpath-draw{fill:none;stroke:url(#none);stroke:var(--ink);stroke-width:3;stroke-dasharray:1;stroke-dashoffset:1;stroke-linecap:round;animation:drawP 2.6s var(--e-io) .2s forwards;opacity:.85}
@keyframes drawP{to{stroke-dashoffset:0}}
.jdot{opacity:.95}
.engine-band::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.7) 50%,transparent 70%);transform:translateX(-100%);animation:sheen 5s var(--e-io) 1.5s infinite}
@keyframes sheen{60%,100%{transform:translateX(100%)}}
@keyframes march{to{stroke-dashoffset:-22}}
.epulse{fill:var(--violet);animation:pulseUp 2.4s var(--e-io) var(--del) infinite}
@keyframes pulseUp{0%{transform:translateY(0);opacity:0}15%{opacity:1}85%{opacity:1}100%{transform:translateY(-110px);opacity:0}}
.engine-band{position:absolute;left:24px;right:24px;height:200px;overflow:hidden;border-radius:22px;background:linear-gradient(180deg,rgba(21,21,28,.035),rgba(21,21,28,.06));border:1.5px dashed #D3D3DD;padding:12px 16px}
.cap{position:absolute;display:flex;flex-direction:column;align-items:center;gap:6px;width:116px;font:600 12px/1.2 var(--sans);color:var(--ink-2);text-align:center;animation:pop .6s var(--e-back) .4s both}
.cap svg{width:40px;height:40px;padding:9px;border-radius:50%;background:#fff;box-shadow:var(--shadow);color:var(--coral-ink)}
.cap-end svg{color:var(--amber)}
.node{position:absolute;width:176px;margin-left:-88px;margin-top:-37px;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;text-decoration:none;color:var(--ink);animation:nodeIn .7s var(--e-back) var(--d) both;z-index:2}
@keyframes nodeIn{from{opacity:0;transform:translateY(24px) scale(.7)}to{opacity:1;transform:none}}
.node-orb{position:relative;transition:transform .35s var(--e-back)}
.node:hover .node-orb{transform:scale(1.12) rotate(-4deg)}
.node .ring{box-shadow:0 10px 26px -10px var(--c)}
.node .ring b svg{width:26px;height:26px;color:var(--c)}
.node-orb::after{content:"";position:absolute;inset:-8px;border-radius:50%;border:2px solid var(--c);opacity:0}
.node.st-new .node-orb::after,.node.st-progress .node-orb::after{animation:halo 2.8s ease-out infinite;animation-delay:var(--d)}
@keyframes halo{0%{opacity:.5;transform:scale(.9)}100%{opacity:0;transform:scale(1.35)}}
.node-badge{position:absolute;right:-4px;top:-4px;width:24px;height:24px;border-radius:50%;background:var(--mint);color:#fff;display:grid;place-items:center;font:700 13px/1 var(--display);font-style:normal;box-shadow:0 0 0 3px #fff}
.node-badge svg{width:14px;height:14px}.node-badge.req{background:var(--coral)}
.node-stage{font:600 10.5px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:#fff;background:var(--c);padding:4px 8px;border-radius:999px}
.node-title{font:700 15px/1.15 var(--display);letter-spacing:-.015em}
.node-meta{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--ink-3)}
.node-meta .av{box-shadow:none}
.areas{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}
.area-card{position:relative;display:flex;flex-direction:column;gap:10px;padding:22px;border-radius:var(--r);background:#fff;box-shadow:var(--shadow);text-decoration:none;color:var(--ink);overflow:hidden;animation:rise .6s var(--e-out) var(--d) both;transition:transform .3s var(--e-back)}
.area-card:hover{transform:translateY(-4px)}
.area-card::before{content:"";position:absolute;right:-30px;top:-30px;width:110px;height:110px;border-radius:0 0 0 100%;background:var(--c);opacity:.12;transition:transform .5s var(--e-out)}
.area-card:hover::before{transform:scale(1.4)}
.area-card .area-ico{background:var(--c)}
.area-card b{font:700 20px/1.1 var(--display)}
.area-card p{font-size:13.5px;color:var(--ink-2);flex:1}
.area-own{display:flex;flex-direction:column;gap:8px;padding-top:10px;border-top:1px solid var(--line)}
.area-own small{display:block}.area-own span{font-size:13px;font-weight:600}

/* ---------- SOP page ---------- */
.sop-hero{position:relative;display:flex;gap:30px;padding:30px;border-radius:24px;background:#fff;box-shadow:var(--shadow);overflow:hidden;flex-wrap:wrap}
.sop-hero::after{content:"";position:absolute;right:-80px;bottom:-80px;width:260px;height:260px;border-radius:50%;background:var(--c);opacity:.08}
.sh-shape{width:130px;height:130px;flex:none;border-radius:0 0 50% 50%;background:var(--c);display:grid;place-items:center;animation:shapeIn .9s var(--e-back) both}
@keyframes shapeIn{from{transform:scale(.4) rotate(-30deg);opacity:0}to{transform:none;opacity:1}}
.sh-ico{color:#fff;animation:bob 3s ease-in-out infinite}
.sh-ico svg{width:54px;height:54px}
@keyframes bob{50%{transform:translateY(-6px)}}
.sh-body{flex:1 1 300px;min-width:0;display:flex;flex-direction:column;gap:14px;position:relative;z-index:1}
.sh-body h2{font-size:38px}
.sh-purpose{font-size:17px;color:var(--ink-2);max-width:62ch}
.sh-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;padding:16px 0;border-block:1px solid var(--line)}
.sh-meta p{font-size:14px;margin-top:6px}
.sh-meta .row{margin-top:6px}
.subtabs{display:flex;gap:8px;overflow-x:auto;padding:18px 2px 14px;scrollbar-width:none}
.subtab{display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:999px;border:1.5px solid var(--line);background:#fff;font-weight:600;font-size:14px;cursor:pointer;white-space:nowrap;transition:all .25s}
.subtab .mono{font-size:12px;color:var(--ink-3)}
.subtab.on{background:var(--ink);border-color:var(--ink);color:#fff}.subtab.on .mono{color:#C9C9D4}
.sub-card{animation:rise .5s var(--e-out) both}
.sub-head{display:flex;gap:24px;justify-content:space-between;flex-wrap:wrap;margin-bottom:20px}
.sub-head h3{font-size:28px;margin-top:4px}
.sub-meta{display:flex;gap:24px;flex-wrap:wrap}
.sub-meta>div{display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.sub-meta p{max-width:340px;font-size:14px;margin-top:4px}
.sub-meta .chip{margin-top:6px}
.flow{position:relative;display:grid;grid-template-columns:repeat(var(--lanes),minmax(0,1fr));gap:0 18px}
.lanes-head{grid-column:1/-1;display:grid;grid-template-columns:subgrid;margin-bottom:12px}
.lane-h{display:flex;justify-content:center;padding:6px 0}
.lanes-bg{grid-column:1/-1;grid-row:2/3;display:grid;grid-template-columns:subgrid;position:absolute;inset:44px 0 0;pointer-events:none}
.lane-bg{border-radius:18px;background:color-mix(in srgb,var(--c) 7%,transparent);border:1.5px dashed color-mix(in srgb,var(--c) 35%,transparent)}
.steps{grid-column:1/-1;display:grid;grid-template-columns:subgrid;row-gap:34px;padding:14px 10px 18px;position:relative;z-index:2}
.step{position:relative;background:#fff;border-radius:16px;padding:14px 16px;box-shadow:0 1px 2px rgba(21,21,28,.06),0 10px 24px -14px rgba(21,21,28,.25);border-top:4px solid var(--c);display:flex;flex-direction:column;gap:8px;animation:stepIn .55s var(--e-back) var(--d) both;margin:0 6px}
@keyframes stepIn{from{opacity:0;transform:translateY(18px) scale(.92)}to{opacity:1;transform:none}}
.step h4{font:600 15.5px/1.3 var(--sans);letter-spacing:0}
.step p{font-size:13px;color:var(--ink-2)}
.step-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.step-n{width:24px;height:24px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font:600 12px/1 var(--mono);flex:none}
.step-type{display:inline-flex;align-items:center;gap:5px;font:600 11px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}
.step-type svg{width:13px;height:13px}
.t-decide .step-type{color:#9A6B00}.t-handoff .step-type{color:var(--sky-ink)}.t-check .step-type{color:var(--mint-ink)}.t-escalate .step-type{color:var(--coral-ink)}
.t-decide .step-n{border-radius:4px;transform:rotate(45deg)}
.t-escalate{box-shadow:0 0 0 2px var(--coral-wash),0 10px 24px -14px rgba(214,60,42,.5)}
.step-hand{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--sky-ink);margin-left:auto}
.step-hand svg{width:12px;height:12px}
.step-foot{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.lane-mobile{display:none}
.flow-links{position:absolute;left:0;top:0;pointer-events:none;z-index:1;overflow:visible}
.link{fill:none;stroke:var(--ink-3);stroke-width:2;stroke-dasharray:6 6;animation:march 1s linear infinite,fadeIn .4s var(--d) both}
.link.cross{stroke:var(--sky-ink);stroke-width:2.5}
.link-head{fill:none;stroke:var(--ink-3);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
@media (max-width:760px){
  .flow{grid-template-columns:1fr!important}.lanes-head,.lanes-bg{display:none}
  .steps{grid-template-columns:1fr}.step{grid-column:1!important;grid-row:auto!important}.lane-mobile{display:inline-flex}
}
.edges-title{margin:30px 0 12px}
.edges{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.edge{display:grid;grid-template-columns:1fr auto 1.3fr;gap:12px;align-items:stretch;padding:16px;border-radius:16px;background:var(--wash);text-decoration:none;color:var(--ink);animation:rise .5s var(--e-out) var(--d) both;transition:transform .25s}
a.edge:hover{transform:translateY(-3px)}
.edge p{font-size:13.5px;margin-top:6px}
.edge-if{padding-right:4px}.edge-if p{font-weight:600}
.edge-arrow{display:grid;place-items:center;color:var(--coral)}
.edge-arrow svg{width:20px;height:20px;animation:nudgeX 1.6s ease-in-out infinite}
@keyframes nudgeX{50%{transform:translateX(4px)}}
.edge-then{background:#fff;border-radius:12px;padding:10px 12px}
.edge-who{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.sop-bottom{display:grid;grid-template-columns:1.2fr 1fr;gap:18px;margin-top:18px}
@media (max-width:900px){.sop-bottom{grid-template-columns:minmax(0,1fr)}}
.ladder{position:relative;display:flex;flex-direction:column-reverse;gap:12px;margin-top:16px;padding-left:22px}
.ladder::before{content:"";position:absolute;left:6px;top:6px;bottom:6px;width:3px;border-radius:2px;background:var(--line)}
.rung{position:relative;display:flex;gap:14px;align-items:flex-start;padding:12px 14px;border-radius:14px;background:var(--wash);margin-left:calc(var(--i)*18px);animation:rise .5s var(--e-out) var(--d) both}
.rung p{font-size:13.5px;color:var(--ink-2);margin-top:6px}
.rung-n{width:34px;height:34px;flex:none;border-radius:10px;background:var(--c,var(--ink));color:#fff;display:grid;place-items:center;font:700 13px/1 var(--mono)}
.climber{position:absolute;left:1px;bottom:6px;width:13px;height:13px;border-radius:50%;background:var(--coral);box-shadow:0 0 0 4px var(--coral-wash);animation:climb 3.2s var(--e-io) infinite}
@keyframes climb{0%{bottom:6px}80%,100%{bottom:calc(100% - 20px)}}
.donts{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}
.donts li{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:12px;background:var(--coral-wash);color:#7A2318;font-size:14px;animation:rise .45s var(--e-out) var(--d) both}
.donts svg{width:18px;height:18px;flex:none;margin-top:1px;color:var(--coral-ink)}

/* ---------- learn hub ---------- */
.lvl-card{display:flex;gap:26px;align-items:center;flex-wrap:wrap}
.lvl-big{width:110px;height:110px;border-radius:50%;background:conic-gradient(var(--coral),var(--sky),var(--mint),var(--violet),var(--coral));display:grid;place-items:center;position:relative;animation:spinSlow 12s linear infinite}
.lvl-big::before{content:"";position:absolute;inset:8px;border-radius:50%;background:#fff}
.lvl-big span,.lvl-big small{position:relative;animation:spinSlow 12s linear infinite reverse;grid-area:1/1}
.lvl-big span{font:800 46px/1 var(--display)}.lvl-big small{margin-top:62px;font:500 10px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
@keyframes spinSlow{to{transform:rotate(360deg)}}
.lvl-info{flex:1 1 260px;display:flex;flex-direction:column;gap:8px}
.lvl-info h2{font-size:30px}
.lvl-bar{height:10px;border-radius:5px;background:var(--line);overflow:hidden}
.lvl-bar i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,var(--coral),var(--violet));animation:barIn 1.2s var(--e-out) both}
@keyframes barIn{from{width:0}}
.badges{display:flex;flex-wrap:wrap;gap:10px;max-width:360px}
.badge{position:relative;width:54px;height:54px;border-radius:0 0 50% 50%;background:var(--c);color:#fff;display:grid;place-items:center;animation:pop .6s var(--e-back) var(--d) both}
.badge svg{width:22px;height:22px;margin-top:-8px}
.badge small{position:absolute;bottom:8px;font:700 10px/1 var(--mono)}
.badge.big{width:140px;height:140px;margin:0 auto}.badge.big svg{width:56px;height:56px}.badge.big small{font-size:16px;bottom:22px}
.lgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px}
.lcard{display:flex;align-items:center;gap:16px;padding:18px;border-radius:var(--r);background:#fff;box-shadow:var(--shadow);text-decoration:none;color:var(--ink);border-left:5px solid var(--c);animation:rise .5s var(--e-out) var(--d) both;transition:transform .25s var(--e-back)}
.lcard:hover{transform:translateY(-3px) scale(1.01)}
.lcard .ring b svg{width:22px;height:22px;color:var(--mint-ink)}
.lc-body{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}
.lc-body b{font:700 17px/1.2 var(--display)}
.lc-go{display:flex;align-items:center;gap:6px;font-weight:600;font-size:13px;color:var(--c)}
.lc-go svg{width:16px;height:16px}
.lcard.st-done{opacity:.85}

/* ---------- mission ---------- */
.mission{max-width:880px;margin:0 auto;display:flex;flex-direction:column;gap:22px}
.m-top{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.m-stages{list-style:none;margin:0 auto;padding:0;display:flex;gap:6px;flex-wrap:wrap}
.m-stages li{display:flex;align-items:center;gap:7px;padding:6px 12px 6px 6px;border-radius:999px;background:#fff;font-size:13px;font-weight:600;color:var(--ink-3)}
.m-stages li i{width:22px;height:22px;border-radius:50%;background:var(--line);display:grid;place-items:center;font:600 11px/1 var(--mono);font-style:normal}
.m-stages li i svg{width:12px;height:12px}
.m-stages li.on{color:var(--ink);box-shadow:var(--shadow)}.m-stages li.on i{background:var(--c);color:#fff}
.m-stages li.done i{background:var(--mint);color:#fff}
.m-xp{display:flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;background:var(--ink);color:#fff;font-size:13px}
.m-xp svg{width:16px;height:16px;color:#FFD84D}
.m-stage{position:relative}
.m-intro,.m-result,.m-sign,.m-done{background:#fff;border-radius:26px;padding:44px 32px;box-shadow:var(--shadow);text-align:center;display:flex;flex-direction:column;align-items:center;gap:16px;animation:modalIn .6s var(--e-back) both}
.m-intro h2,.m-result h2,.m-sign h2,.m-done h2{font-size:38px}
.lead{font-size:17px;color:var(--ink-2);max-width:56ch}
.m-ico{width:96px;height:96px;border-radius:0 0 50% 50%;background:var(--c);color:#fff;display:grid;place-items:center;animation:shapeIn .9s var(--e-back) both}
.m-ico svg{width:44px;height:44px}
.m-facts{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.m-facts div{padding:12px 18px;border-radius:14px;background:var(--wash);min-width:96px}
.m-facts b{display:block;font:800 28px/1 var(--display)}.m-facts span{font-size:12px;color:var(--ink-2)}
.wprog{height:8px;border-radius:4px;background:var(--line);overflow:hidden}
.wprog i{display:block;height:100%;background:var(--c);border-radius:4px;transition:width .5s var(--e-out)}
.wstage{perspective:1200px}
.wcard{background:#fff;border-radius:26px;padding:36px;box-shadow:0 30px 60px -30px rgba(21,21,28,.3);display:flex;flex-direction:column;gap:16px;border-top:8px solid var(--rc,var(--c));animation:cardIn .55s var(--e-back) both;min-height:300px}
@keyframes cardIn{from{opacity:0;transform:translateX(60px) rotateY(-14deg)}to{opacity:1;transform:none}}
.wcard h2{font-size:34px}
.wc-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.wc-grid,.wi-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:auto;padding-top:16px;border-top:1px solid var(--line)}
.wc-grid>div,.wi-row>div{display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.wintro{background:linear-gradient(135deg,#fff 55%,color-mix(in srgb,var(--c) 14%,#fff));border-top-color:var(--c)}
.wnav{margin-top:4px}
.m-head{text-align:center;display:flex;flex-direction:column;gap:6px}
.m-head h2{font-size:32px}
.flips{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.flip{position:relative;height:210px;border:0;padding:0;background:none;cursor:pointer;perspective:900px;animation:rise .5s var(--e-out) var(--d) both;text-align:left}
.flip>span{position:absolute;inset:0;border-radius:18px;padding:18px;display:flex;flex-direction:column;gap:10px;backface-visibility:hidden;transition:transform .7s var(--e-back);box-shadow:var(--shadow)}
.f-front{background:#fff;border:2px solid var(--line)}.f-front b{font:600 15px/1.35 var(--sans)}.f-front small{margin-top:auto;color:var(--ink-3);font-size:12px}
.f-back{background:var(--ink);color:#fff;transform:rotateY(180deg)}.f-back b{font:500 14.5px/1.4 var(--sans)}.f-back .tag{color:#9A9AAD}.f-back .chip{margin-top:auto;background:rgba(255,255,255,.12);color:#fff}
.flip.on .f-front{transform:rotateY(-180deg)}.flip.on .f-back{transform:none}
.qcard{background:#fff;border-radius:26px;padding:34px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:14px;animation:cardIn .5s var(--e-back) both}
.qcard h2{font-size:28px}
.qopts,.qorder{display:grid;gap:10px}
.qopt{display:flex;align-items:center;gap:12px;width:100%;padding:16px 18px;border-radius:16px;border:2px solid var(--line);background:#fff;text-align:left;font-size:15px;cursor:pointer;transition:transform .2s,border-color .2s,background .3s;animation:rise .4s var(--e-out) var(--d,0s) both}
.qopt:hover{border-color:var(--ink-3);transform:translateX(4px)}
.qopt.right{border-color:var(--mint);background:var(--mint-wash);animation:okPop .5s var(--e-back)}
.qopt.wrong{border-color:var(--coral);background:var(--coral-wash);animation:shake .45s}
.qopt.picked{border-color:var(--ink)}
.qnum{width:26px;height:26px;border-radius:50%;border:2px dashed var(--line);display:grid;place-items:center;font:700 12px/1 var(--mono);font-style:normal;flex:none}
.picked .qnum{background:var(--ink);color:#fff;border-style:solid;border-color:var(--ink)}
@keyframes okPop{50%{transform:scale(1.03)}}
@keyframes shake{20%,60%{transform:translateX(-8px)}40%,80%{transform:translateX(8px)}}
.qwhy{opacity:0;transform:translateY(8px);transition:all .35s var(--e-out);padding:14px 16px;border-radius:14px;font-size:14px}
.qwhy.show{opacity:1;transform:none}.qwhy.ok{background:var(--mint-wash);color:#0A4A33}.qwhy.no{background:var(--coral-wash);color:#7A2318}
.m-sign .field{width:min(420px,100%);text-align:left}
.xp-float{position:absolute;right:12px;top:-6px;font:700 14px/1 var(--display);color:var(--violet-ink);pointer-events:none;animation:floatUp 1.1s var(--e-out) forwards;z-index:5}
.btn .xp-float,.qopt .xp-float,.flip .xp-float{position:absolute}
.btn,.qopt,.flip{position:relative}
@keyframes floatUp{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-46px)}}
.confetti{position:fixed;left:50%;top:45%;z-index:200;pointer-events:none}
.confetti i{position:absolute;width:var(--sz);height:var(--sz);background:var(--c);border-radius:var(--br);animation:burst 2.4s cubic-bezier(.15,.8,.3,1) both}
@keyframes burst{0%{transform:scale(.2);opacity:0}8%{opacity:1}60%{transform:translate(var(--dx),var(--dy)) rotate(var(--r));opacity:1}100%{transform:translate(var(--dx),calc(var(--dy) + 260px)) rotate(calc(var(--r)*1.5));opacity:0}}

/* ---------- duties ---------- */
.people-pick{display:flex;gap:10px;overflow-x:auto;padding:4px 2px 14px}
.people-pick a{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 12px;border-radius:16px;text-decoration:none;font-size:12.5px;font-weight:600;color:var(--ink-2);transition:background .2s}
.people-pick a:hover{background:#fff}
.people-pick a.on{background:#fff;box-shadow:var(--shadow);color:var(--ink)}
.people-pick a.on .av{box-shadow:0 0 0 3px var(--coral)}
.duty-hero{display:flex;gap:24px;align-items:center;flex-wrap:wrap}
.duty-hero h2{font-size:32px;margin-top:4px}
.duty-hero>div:nth-child(2){flex:1 1 300px}
.dh-stats{display:flex;gap:12px}
.dh-stats div{padding:12px 16px;border-radius:14px;background:var(--wash);text-align:center;min-width:90px}
.dh-stats b{display:block;font:800 30px/1 var(--display)}.dh-stats span{font-size:12px;color:var(--ink-2)}
.dgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:16px}
.dgrid.compact{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}
@media (max-width:520px){.dgrid,.dgrid.compact{grid-template-columns:1fr}}
.dgroup{background:#fff;border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden;animation:rise .5s var(--e-out) var(--d) both}
.dg-head{display:flex;align-items:center;gap:12px;padding:14px 16px;background:color-mix(in srgb,var(--c) 10%,#fff);text-decoration:none;color:var(--ink)}
.dg-head b{display:block;font:700 16px/1.2 var(--display)}
.dg-head>svg{width:18px;height:18px;margin-left:auto;color:var(--ink-3)}
.dg-ico{width:36px;height:36px;border-radius:10px;background:var(--c);color:#fff;display:grid;place-items:center}
.dg-ico svg{width:18px;height:18px}
.dg-sub{padding:12px 16px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:8px}
.dg-subt{display:flex;gap:8px;align-items:baseline;font-size:13px;font-weight:600;text-decoration:none;color:var(--ink-2)}
.duty-row{display:grid;grid-template-columns:auto auto 1fr auto;gap:10px;align-items:center;font-size:14px}
.dr-ico svg{width:15px;height:15px;color:var(--ink-3)}
.duty-row .when{justify-self:end}
.esc-list{display:flex;flex-direction:column;gap:8px}
.esc-row{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;background:#fff;box-shadow:var(--shadow);text-decoration:none;color:var(--ink);font-size:14px}

/* ---------- who does what ---------- */
.search{display:flex;align-items:center;gap:12px;padding:10px 16px;position:sticky;top:76px;z-index:3}
.search .inp{border:0;box-shadow:none!important;font-size:17px;padding:10px 4px}
.s-ico svg{width:22px;height:22px;color:var(--ink-3)}
.results{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px;margin-top:14px}
.hit{display:flex;flex-direction:column;gap:8px;padding:16px;border-radius:16px;background:#fff;box-shadow:var(--shadow);text-decoration:none;color:var(--ink);border-left:4px solid var(--c);animation:rise .4s var(--e-out) var(--d) both}
.hit b{font-weight:600;font-size:14.5px}
.mx-wrap{padding:0;overflow:auto;max-height:72vh}
.mx{border-collapse:separate;border-spacing:0;width:100%;font-size:13.5px}
.mx th,.mx td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:center;white-space:nowrap}
.mx th{position:sticky;top:0;background:#fff;z-index:2;font-weight:600;border-bottom:3px solid var(--c,var(--line))}
.mx th:first-child,.mx td:first-child{position:sticky;left:0;background:#fff;text-align:left;z-index:1;white-space:normal;min-width:220px}
.mx th:first-child{z-index:3}
.mx td a{text-decoration:none}
.mx-h{display:inline-flex;align-items:center;gap:6px}
.mx-h svg{width:15px;height:15px;color:var(--c)}
.mx-sop td{background:var(--wash)!important;font-weight:600;text-align:left}
.mx-key{display:inline-grid;place-items:center;min-width:24px;height:24px;margin:1px;padding:0 6px;border-radius:7px;background:color-mix(in srgb,var(--c,var(--ink-3)) 18%,#fff);color:var(--ink);font:700 12px/1 var(--mono)}
.mx-key.own{background:var(--c,var(--ink));color:#fff}
.mx-key.edge{background:var(--coral-wash);color:var(--coral-ink)}
.sec-head .mx-key{--c:var(--ink-3)}

/* ---------- team ---------- */
.team{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
.tcard{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:26px 18px;border-radius:20px;background:#fff;box-shadow:var(--shadow);text-decoration:none;color:var(--ink);animation:rise .55s var(--e-out) var(--d) both;transition:transform .3s var(--e-back)}
.tcard:hover{transform:translateY(-5px) rotate(-.5deg)}
.tcard>b{font:700 19px/1.1 var(--display)}
.rank{position:absolute;left:14px;top:12px;font:600 18px/1 var(--display);color:var(--ink-3)}
.t-lv{display:flex;align-items:center;gap:8px}
.xp-pill{padding:5px 10px;border-radius:999px;background:var(--ink);color:#fff;font:600 12px/1 var(--sans)}
.t-bar{width:100%;height:8px;border-radius:4px;background:var(--line);overflow:hidden}
.t-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--mint),var(--sky));animation:barIn 1.2s var(--e-out) both}
.prof{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start}
.prof h3,.adm-bar+* h3{font-size:22px}

/* ---------- admin ---------- */
.adm-tabs{display:flex;gap:6px;overflow-x:auto;padding:4px 0 18px}
.adm-tabs a{display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:999px;text-decoration:none;font-weight:600;font-size:14px;color:var(--ink-2);background:#fff;white-space:nowrap}
.adm-tabs a svg{width:17px;height:17px}
.adm-tabs a.on{background:var(--ink);color:#fff}
.adm-bar{margin-bottom:16px}.adm-bar p{max-width:70ch}
.adm-bar a{color:var(--sky-ink)}
.mlist{display:flex;flex-direction:column;gap:10px}
.mrow{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:16px 20px;animation:rise .45s var(--e-out) var(--d) both}
.mrow.off{opacity:.55}
.mr-main{flex:1 1 200px;display:flex;flex-direction:column}
.mr-main b{font-size:16px}
.mr-tags{display:flex;gap:6px;flex-wrap:wrap;flex:2 1 260px}
.cred{display:grid;gap:12px;padding:16px;border-radius:14px;background:var(--wash)}
.cred div{display:flex;flex-direction:column;gap:4px}.cred b{font-size:18px;user-select:all}
.own-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:16px}
.own{display:flex;flex-direction:column;gap:12px;border-top:5px solid var(--c);animation:rise .45s var(--e-out) var(--d) both}
.own-head{display:flex;gap:10px;align-items:center}
.own-head .area-ico{background:var(--c)}
.own-name{font:700 17px/1 var(--display)!important}
.own-color{width:44px;height:40px;border:0;background:none;padding:0;cursor:pointer}
.ov-list{display:flex;flex-direction:column;gap:2px;padding:10px 16px}
.ov-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}
.slist{display:flex;flex-direction:column;gap:10px}
.srow{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:14px 18px;border-left:5px solid var(--c);animation:rise .4s var(--e-out) var(--d) both}
.srow .area-ico{background:var(--c)}
.sr-main{flex:1 1 280px;display:flex;flex-direction:column;gap:2px}
.sr-main b{font:700 17px/1.2 var(--display)}
.pcell{border:0;border-radius:999px;padding:6px 10px;font:600 11.5px/1 var(--sans);cursor:pointer;background:var(--wash);color:var(--ink-3);transition:transform .15s}
.pcell:hover{transform:scale(1.06)}
.pcell.k-auto.e-required{background:color-mix(in srgb,var(--coral) 12%,#fff);color:var(--coral-ink)}
.pcell.k-required{background:var(--coral);color:#fff}
.pcell.k-optional{background:var(--sky);color:var(--ink)}
.pcell.k-none{background:#fff;border:1.5px dashed var(--line)}
.pc{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;font:700 12px/1 var(--mono);background:var(--wash);color:var(--ink-3)}
.pc svg{width:16px;height:16px}
.pc.s-done{background:var(--mint);color:#fff}.pc.s-old{background:#FFE7A3;color:#7A5A00}.pc.s-progress{background:var(--sky-wash);color:var(--sky-ink)}.pc.s-new{background:var(--coral-wash);color:var(--coral-ink)}.pc.none{background:none}
.mx.prog .ring,.mx.prog .ring::before{--s:40px}
.log{display:flex;flex-direction:column}
.log-row{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--line);font-size:14px}

/* ---------- editor ---------- */
.editor{display:flex;flex-direction:column;gap:16px;max-width:1100px}
.ed-bar{position:sticky;top:76px;z-index:3;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 16px}
.ed-state{font:500 13px/1 var(--mono);color:var(--mint-ink)}
.ed-state.dirty{color:#9A6B00}
.ed-state.dirty::before{content:"●  ";animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:0}}
.ed-sec{display:flex;flex-direction:column;gap:14px}
.ed-sec h3{font-size:20px}
.ed-sec .sec-head{margin:0}
.ed-flow{padding:0;overflow:hidden}
.ef-head{display:flex;align-items:center;gap:8px;padding:10px 14px}
.ef-toggle{flex:1;display:flex;align-items:center;gap:12px;border:0;background:none;cursor:pointer;text-align:left;padding:6px}
.ef-toggle .mono{width:28px;height:28px;border-radius:8px;background:var(--ink);color:#fff;display:grid;place-items:center;font-size:12px}
.ef-toggle b{font-size:16px}
.ef-toggle svg{width:18px;height:18px;margin-left:auto;transition:transform .3s}
.ed-flow.open .ef-toggle svg{transform:rotate(180deg)}
.ef-body{padding:4px 18px 20px;display:flex;flex-direction:column;gap:12px;border-top:1px solid var(--line);animation:rise .35s var(--e-out) both}
.ed-h{font:600 12px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-top:8px}
.ed-rows{display:flex;flex-direction:column;gap:8px}
.ed-row{display:flex;gap:10px;align-items:flex-start;padding:10px;border-radius:14px;background:var(--wash);flex-wrap:wrap}
.er-main{flex:3 1 300px;display:flex;flex-direction:column;gap:6px}
.er-side{flex:2 1 220px;display:grid;grid-template-columns:1fr;gap:6px}
.step-ed .er-side{grid-template-columns:1fr 1fr}
.step-ed .er-side select:first-child{grid-column:1/-1}
.inp.small{font-size:13px;padding:8px 12px}
.ed-tools{display:flex;gap:4px}
.ed-tools .btn.icon{padding:7px}
.ed-tools svg{width:15px;height:15px}
.btn.icon.danger{color:var(--coral-ink)}

/* ---------- flow builder ---------- */
.fb{display:flex;flex-direction:column;gap:14px}
.fb-top{position:sticky;top:76px;z-index:6;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px}
.fb-code{width:84px!important;font:600 13px/1 var(--mono)!important}
.fb-title{flex:1 1 160px;min-width:0;border:0;background:none;font:700 22px/1.1 var(--display);letter-spacing:-.02em;padding:8px 6px;border-radius:10px}
.fb-title:hover,.fb-title:focus{background:var(--wash);outline:none}
.fb-mini{width:auto!important;padding:8px 10px!important;font-size:13px!important}
.fb-tabs{display:flex;gap:8px;overflow-x:auto;padding:2px;scrollbar-width:none}
.fb-tab{display:flex;align-items:center;gap:8px;padding:9px 14px;border-radius:12px;border:1.5px solid var(--line);background:#fff;font-weight:600;font-size:13.5px;cursor:pointer;white-space:nowrap;transition:all .2s}
.fb-tab .mono{width:22px;height:22px;border-radius:7px;background:var(--wash);display:grid;place-items:center;font-size:11px}
.fb-tab small{font:500 11px/1 var(--mono);color:var(--ink-3)}
.fb-tab.on{background:var(--ink);border-color:var(--ink);color:#fff}.fb-tab.on .mono{background:rgba(255,255,255,.15)}
.fb-tab.add{border-style:dashed;color:var(--ink-2)}.fb-tab.add svg{width:15px;height:15px}
.fb-main{display:grid;grid-template-columns:132px minmax(0,1fr) 300px;gap:14px;align-items:start}
.fb-palette{position:sticky;top:150px;display:flex;flex-direction:column;gap:8px;padding:14px}
.fb-tool{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:12px;background:var(--wash);font-weight:600;font-size:13.5px;cursor:grab;user-select:none;touch-action:none;transition:transform .2s var(--e-back),box-shadow .2s;border-left:4px solid var(--tc,var(--ink-3))}
.fb-tool:hover{transform:translateX(4px) scale(1.03);box-shadow:var(--shadow)}
.fb-tool svg{width:17px;height:17px}
.fb-tool.t-decide{--tc:#E0A400}.fb-tool.t-handoff{--tc:var(--sky-ink)}.fb-tool.t-check{--tc:var(--mint-ink)}.fb-tool.t-escalate{--tc:var(--coral-ink)}
.fb-canvas{position:relative;padding:14px;min-height:420px}
.fb-flowhead{display:flex;flex-direction:column;gap:4px;width:100%;text-align:left;padding:12px 130px 12px 14px;margin-bottom:12px;border-radius:14px;border:1.5px dashed var(--line);background:none;cursor:pointer}
.fb-flowhead b{font-size:15px}
.fb-flowhead.on,.fb-flowhead:hover{border-color:var(--sky-ink);background:var(--sky-wash)}
.fb-scroll{overflow-x:auto;padding-bottom:6px}
.fb-grid{display:grid;grid-template-columns:repeat(var(--lanes),minmax(178px,1fr));gap:0 12px;min-height:340px}
.fb-lane{grid-row:1;display:flex;flex-direction:column;border-radius:16px;background:color-mix(in srgb,var(--c) 6%,#fff);border:1.5px dashed color-mix(in srgb,var(--c) 40%,transparent);min-height:100%}
.fb-lh{display:flex;align-items:center;gap:8px;padding:10px;border-bottom:1.5px dashed color-mix(in srgb,var(--c) 30%,transparent);height:56px}
.fb-lh .dot{width:26px;height:26px;border-radius:50%;background:var(--c);display:grid;place-items:center;color:#fff;flex:none}
.fb-lh .dot svg{width:14px;height:14px}
.fb-lsel{flex:1;min-width:0;border:0;background:none;font:600 13.5px/1 var(--sans);cursor:pointer;padding:6px 2px}
.fb-x{width:26px;height:26px;border-radius:8px;border:0;background:none;display:grid;place-items:center;cursor:pointer;color:var(--ink-3)}
.fb-x:hover{background:var(--coral-wash);color:var(--coral-ink)}
.fb-x svg{width:14px;height:14px}
.fb-lanebody{flex:1;display:flex;align-items:center;justify-content:center}
.fb-empty{font-size:12.5px;color:var(--ink-3);padding:30px 10px;text-align:center}
.fb-addstep{display:flex;align-items:center;justify-content:center;gap:6px;margin:8px;padding:9px;border-radius:10px;border:1.5px dashed color-mix(in srgb,var(--c) 45%,transparent);background:none;font-weight:600;font-size:13px;color:var(--ink-2);cursor:pointer}
.fb-addstep:hover{background:#fff}.fb-addstep svg{width:14px;height:14px}
.fb-steps{grid-row:1;grid-column:1/-1;display:grid;grid-template-columns:subgrid;align-content:start;row-gap:14px;padding:68px 0 64px;pointer-events:none;z-index:2}
.fb-card{pointer-events:auto;display:flex;gap:6px;margin:0 8px;padding:10px 12px 12px 4px;border-radius:14px;background:#fff;border-top:4px solid var(--c);box-shadow:0 1px 2px rgba(21,21,28,.06),0 8px 20px -12px rgba(21,21,28,.3);cursor:grab;user-select:none;transition:box-shadow .2s,transform .2s var(--e-back);animation:stepIn .45s var(--e-back) both}
.fb-card:hover{transform:translateY(-2px);box-shadow:0 14px 28px -14px rgba(21,21,28,.4)}
.fb-card.on{outline:2.5px solid var(--sky-ink);outline-offset:2px}
.fb-grip{flex:none;width:20px;display:grid;place-items:center;color:#B9B9C6;cursor:grab;touch-action:none}
.fb-grip svg{width:16px;height:16px;fill:currentColor}
.fb-cbody{display:flex;flex-direction:column;gap:6px;min-width:0}
.fb-ctop{display:flex;align-items:center;gap:8px}
.fb-ct{font:600 14px/1.3 var(--sans)}
.fb-dragging{opacity:.3}
.fb-ghost{position:fixed;left:0;top:0;z-index:300;pointer-events:none;margin:0;box-shadow:0 30px 60px -20px rgba(21,21,28,.5)!important;opacity:.95}
body.fb-busy,body.fb-busy *{cursor:grabbing!important;user-select:none}
.fb-drop{position:absolute;height:4px;border-radius:2px;background:var(--c,var(--sky-ink));opacity:0;transition:top .12s,left .12s,width .12s;pointer-events:none;z-index:5;box-shadow:0 0 0 4px color-mix(in srgb,var(--c,var(--sky-ink)) 20%,transparent)}
.fb-drop.on{opacity:1}
.fb-drop::before,.fb-drop::after{content:"";position:absolute;top:-4px;width:12px;height:12px;border-radius:50%;background:inherit}
.fb-drop::before{left:-6px}.fb-drop::after{right:-6px}
.fb-addlane{position:absolute;right:24px;top:24px}
.fb-insp{position:sticky;top:150px;display:flex;flex-direction:column;gap:12px;max-height:calc(100vh - 170px);overflow:auto}
.fb-insp h3{font-size:20px}
.fb-close{position:absolute;right:12px;top:12px;display:none}
.fb-lbl{font-size:13px;font-weight:600;margin-top:4px}
.fb-chips{display:flex;flex-wrap:wrap;gap:6px}
.fb-chip{display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border-radius:999px;border:1.5px solid var(--line);background:#fff;font-size:12.5px;font-weight:600;cursor:pointer;transition:all .2s var(--e-back)}
.fb-chip i{width:10px;height:10px;border-radius:50%;background:var(--c)}
.fb-chip:hover{transform:translateY(-2px)}
.fb-chip.on{background:var(--c);border-color:var(--c);color:#fff}.fb-chip.on i{background:#fff}
.fb-chip[disabled]{opacity:.35;pointer-events:none}
.fb-types{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.fb-type{display:flex;align-items:center;justify-content:center;gap:6px;padding:9px 6px;border-radius:10px;border:1.5px solid var(--line);background:#fff;font-size:12.5px;font-weight:600;cursor:pointer}
.fb-type svg{width:14px;height:14px}
.fb-type.on{background:var(--ink);color:#fff;border-color:var(--ink);animation:okPop .4s var(--e-back)}
.fb-when{display:flex;flex-wrap:wrap;gap:6px}
.fb-w{padding:6px 10px;border-radius:999px;border:1.5px solid var(--line);background:#fff;font:500 12px/1 var(--mono);cursor:pointer}
.fb-w.on{background:#FFF6DC;border-color:#E0A400;color:#7A5A00}
.fb-acts{margin-top:6px;padding-top:12px;border-top:1px solid var(--line)}
.fb-tip{padding:10px 12px;border-radius:10px;background:var(--sky-wash);color:var(--sky-ink)}
.fb-toggle{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600;cursor:pointer}
.fb-toggle input{position:absolute;opacity:0}
.fb-toggle span{width:42px;height:24px;border-radius:12px;background:var(--line);position:relative;transition:background .2s}
.fb-toggle span::after{content:"";position:absolute;left:3px;top:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .3s var(--e-back)}
.fb-toggle input:checked+span{background:var(--mint)}.fb-toggle input:checked+span::after{transform:translateX(18px)}
.fb-lower{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:14px}
.fb-lower .sec-head{margin:0 0 12px}
.fb-list{display:flex;flex-direction:column;gap:8px}
.fb-item{display:flex;align-items:center;gap:8px;padding:10px 10px 10px 4px;border-radius:12px;background:var(--wash);font-size:13.5px;cursor:grab;user-select:none;transition:transform .2s,box-shadow .2s;border-top:3px solid transparent}
.fb-item:hover{box-shadow:var(--shadow)}
.fb-item.on{outline:2.5px solid var(--sky-ink)}
.fb-item.drop-before{border-top-color:var(--sky-ink)}
.fb-item>div{flex:1;min-width:0}
.fb-then{display:block;color:var(--ink-2);margin-top:2px}
.fb-dont .inp{background:#fff;padding:8px 10px}
@media (max-width:1100px){
  .fb-main{grid-template-columns:1fr}
  .fb-palette{position:static;flex-direction:row;overflow-x:auto;padding:10px}.fb-palette>p,.fb-palette>.tag{display:none}
  .fb-tool{flex:none}
  .fb-insp{position:fixed;left:0;right:0;bottom:0;top:auto;max-height:70vh;z-index:60;border-radius:22px 22px 0 0;transform:translateY(105%);transition:transform .4s var(--e-out);box-shadow:0 -20px 60px -20px rgba(0,0,0,.35);padding-bottom:calc(22px + env(safe-area-inset-bottom))}
  .fb-insp.open{transform:none}.fb-close{display:grid}
  .fb-lower{grid-template-columns:1fr}
  .fb-top{top:64px}
}

/* ---------- dashboard ---------- */
.dash-hero{display:flex;align-items:center;gap:24px;justify-content:space-between;flex-wrap:wrap;background:linear-gradient(120deg,#fff 55%,var(--mint-wash))}
.dh-left{display:flex;gap:18px;align-items:center;flex:1 1 260px;min-width:0}
.dh-left h2{font-size:28px;margin:4px 0}
.big-ring b{display:flex;flex-direction:column;align-items:center;font:800 26px/1 var(--display)}
.big-ring b small{font:500 10px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-top:4px}
.ring{animation:ringIn 1.3s var(--e-out) both}
@keyframes ringIn{from{--p:0}}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin:18px 0}
.kpi{display:flex;flex-direction:column;gap:6px;padding:18px;border-radius:var(--r);background:#fff;box-shadow:var(--shadow);border-bottom:4px solid var(--line);animation:rise .5s var(--e-out) both}
.kpi:nth-child(2){animation-delay:.06s}.kpi:nth-child(3){animation-delay:.12s}.kpi:nth-child(4){animation-delay:.18s}.kpi:nth-child(5){animation-delay:.24s}.kpi:nth-child(6){animation-delay:.3s}
.kpi b{font:800 36px/1 var(--display);letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.kpi small{font-size:12.5px;color:var(--ink-2)}
.kpi.good{border-color:var(--mint)}.kpi.warn{border-color:var(--amber)}.kpi.bad{border-color:var(--coral)}
.dash-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
@media (max-width:900px){.dash-cols{grid-template-columns:1fr}}
.dash-cols>.card,.dash-card{display:flex;flex-direction:column;gap:12px}
.dash-card+.dash-cols{margin-top:16px}
.next-list{display:flex;flex-direction:column;gap:8px}
.next{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:14px;background:var(--wash);text-decoration:none;color:var(--ink);animation:rise .45s var(--e-out) var(--d) both;transition:transform .25s var(--e-back)}
.next:hover{transform:translateX(6px)}
.next b{display:block;font-size:14.5px}.next>svg{width:18px;height:18px;margin-left:auto;color:var(--ink-3)}
.next .ring b svg{width:16px;height:16px;color:var(--c)}
.chg{display:flex;flex-direction:column;gap:2px;padding:10px 0;border-bottom:1px solid var(--line);text-decoration:none;color:var(--ink)}
.hbars{display:flex;flex-direction:column;gap:10px}
.hbar{display:grid;grid-template-columns:auto minmax(90px,180px) 1fr auto;gap:12px;align-items:center;text-decoration:none;color:var(--ink);font-size:13.5px;animation:rise .45s var(--e-out) var(--d) both}
.sop-bars .hbar{grid-template-columns:60px minmax(120px,260px) 1fr auto}
.hb-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.hb-track{height:12px;border-radius:6px;background:var(--line);overflow:hidden}
.hb-track i{display:block;height:100%;width:var(--w);border-radius:6px;animation:barW 1.2s var(--e-out) both;animation-delay:inherit}
@keyframes barW{from{width:0}}
.hbar b{font:600 12.5px/1 var(--mono)}
.cols-chart{display:grid;grid-template-columns:repeat(14,1fr);gap:6px;align-items:end;height:190px;padding-top:10px}
.cc{display:flex;flex-direction:column;align-items:center;gap:4px;height:100%;justify-content:flex-end}
.cc i{display:block;width:100%;max-width:28px;height:max(4px,var(--h));border-radius:8px 8px 3px 3px;background:linear-gradient(180deg,var(--violet),var(--sky));transform-origin:bottom;animation:growY .9s var(--e-back) var(--d) both}
@keyframes growY{from{transform:scaleY(0)}}
.cc small{font:500 10.5px/1 var(--mono);color:var(--ink-3)}
.cc-n{font:600 11px/1 var(--mono);color:var(--ink-2);min-height:11px}
.amb{display:flex;flex-direction:column;gap:8px}
.amb-row{display:flex;gap:12px;align-items:flex-start;padding:10px 12px;border-radius:12px;background:var(--wash);text-decoration:none;color:var(--ink);font-size:13.5px;animation:rise .4s var(--e-out) var(--d) both}
.amb-row i{width:10px;height:10px;border-radius:50%;margin-top:5px;flex:none;background:var(--ink-3)}
.amb-row.high i{background:var(--coral);box-shadow:0 0 0 4px var(--coral-wash);animation:halo2 1.6s infinite}
.amb-row.mid i{background:var(--amber)}
.amb-row span{display:block;color:var(--ink-2);font-size:12.5px}
@keyframes halo2{50%{box-shadow:0 0 0 7px rgba(255,102,85,.12)}}

/* ---------- mobile bottom bar ---------- */
.tabbar{display:none}
@media (max-width:900px){
  .tabbar{display:flex;position:fixed;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:50;justify-content:space-around;padding:6px;border-radius:20px;background:rgba(21,21,28,.92);backdrop-filter:blur(10px);box-shadow:0 20px 40px -14px rgba(0,0,0,.45)}
  .tabbar a{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 8px;border-radius:14px;color:#A9A9B8;text-decoration:none;font-size:10.5px;font-weight:600;flex:1}
  .tabbar a svg{width:21px;height:21px;transition:transform .3s var(--e-back)}
  .tabbar a.on{color:#fff;background:rgba(255,255,255,.12)}.tabbar a.on svg{transform:translateY(-2px) scale(1.1)}
  .tabbar .count{position:absolute;right:16%;top:3px;min-width:16px;height:16px;border-radius:8px;background:var(--coral);color:#fff;font:700 10px/16px var(--mono);text-align:center}
  .view{padding-bottom:110px}
  .top h1{font-size:21px}
  .sh-body h2{font-size:28px}.sop-hero{padding:20px;gap:18px}.sh-shape{width:84px;height:84px}.sh-ico svg{width:36px;height:36px}
  .mh-text h2{font-size:23px}.wcard{padding:22px;min-height:0}.wcard h2{font-size:24px}.qcard{padding:22px}.qcard h2{font-size:21px}
  .m-intro,.m-result,.m-sign,.m-done{padding:28px 18px}.m-intro h2,.m-result h2,.m-sign h2,.m-done h2{font-size:28px}
  .edge{grid-template-columns:1fr}.edge-arrow{transform:rotate(90deg);justify-self:start}
  .hbar,.sop-bars .hbar{grid-template-columns:auto 1fr auto;}.hbar .hb-track{grid-column:1/-1;grid-row:2}
  .m-stages li{font-size:0;padding:4px}.m-stages li i{font-size:11px}
  .duty-row{grid-template-columns:auto 1fr;}.duty-row .dr-ico{display:none}.duty-row .when{grid-column:2;justify-self:start}
  .fb-top{position:static}
  .xp>div{display:none}.xp{padding:5px}
  .flow{grid-template-columns:minmax(0,1fr)!important}.steps{grid-template-columns:minmax(0,1fr)}.step{margin:0}
  .step-foot .chip,.step-foot .when{white-space:normal}
  .kpi b{font-size:28px}.kpis{grid-template-columns:1fr 1fr;gap:10px}
  .dash-hero{flex-direction:column;align-items:flex-start}.dh-left h2{font-size:22px}
  .dh-left{flex:none}.sop-bottom{grid-template-columns:minmax(0,1fr)}.rung{margin-left:calc(var(--i)*8px)}
  .lvl-card{flex-direction:column;align-items:flex-start}
}

/* ---------- micro-animations ---------- */
.btn{overflow:hidden}
.btn::after{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle at var(--rx,50%) var(--ry,50%),rgba(255,255,255,.45) 0,transparent 60%);opacity:0;transition:opacity .5s}
.btn:active::after{opacity:1;transition:0s}
.nav svg,.adm-tabs a svg{transition:transform .35s var(--e-back)}
.nav:hover svg,.adm-tabs a:hover svg{transform:rotate(-10deg) scale(1.15)}
.nav.on svg{animation:navPop .5s var(--e-back)}
@keyframes navPop{50%{transform:scale(1.3) rotate(-8deg)}}
.xp.bump .lvl{animation:okPop .6s var(--e-back)}
.xp.bump{animation:xpGlow 1s ease-out}
@keyframes xpGlow{30%{box-shadow:0 0 0 6px color-mix(in srgb,var(--violet) 25%,transparent),var(--shadow)}}
.combo{position:fixed;left:50%;top:24%;z-index:150;translate:-50% 0;padding:12px 20px;border-radius:999px;background:var(--ink);color:#fff;font:800 22px/1 var(--display);pointer-events:none;animation:comboIn 1.2s var(--e-back) forwards}
.combo b{color:#FFD84D}
@keyframes comboIn{0%{opacity:0;transform:scale(.4)}20%{opacity:1;transform:scale(1.1)}35%{transform:scale(1)}80%{opacity:1}100%{opacity:0;transform:translateY(-40px)}}
.levelup{text-align:center;align-items:center}
.levelup .lvl-big{margin:0 auto;width:140px;height:140px}
.levelup .lvl-big span{font-size:60px}
.badge:hover{animation:wiggle .5s}
@keyframes wiggle{25%{transform:rotate(-8deg)}75%{transform:rotate(8deg)}}
.card,.lcard,.tcard{will-change:transform}
