:root{--purple:#6F30B7;--violet:#9B43FF;--blue:#2C76EC;--green:#23B574;--pink:#FF93AA;--red:#FF3B48;--ink:#000;--body:#3D3D45;--muted:#6E6E78;--line:#E4E1EC;--wash:#F6F4FB;--white:#fff;
 --s1:var(--violet);--s2:var(--blue);--s3:var(--green);--s4:var(--pink);--s5:var(--red)}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--white);color:var(--body);font:15px/1.5 Poppins,system-ui,-apple-system,"Segoe UI",sans-serif}
button,input{font:inherit}
:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.band{height:6px;display:grid;grid-template-columns:repeat(5,1fr)}.band i:nth-child(1){background:var(--violet)}.band i:nth-child(2){background:var(--blue)}.band i:nth-child(3){background:var(--green)}.band i:nth-child(4){background:var(--pink)}.band i:nth-child(5){background:var(--red)}
/* gate */
#gate{min-height:100%;display:grid;place-items:center;padding:24px}
.gatebox{max-width:520px;width:100%}
.gatebox h1{color:var(--ink);font-size:clamp(26px,4vw,38px);line-height:1.15;margin:0 0 12px}
.gatebox h1 span{color:var(--purple)}
.gatebox p{margin:0 0 20px}
.gaterow{display:flex;gap:8px}
.gaterow input{flex:1;min-width:0;padding:12px 14px;border:1.5px solid var(--line);border-radius:10px}
.btn{background:var(--purple);color:#fff;border:0;border-radius:10px;padding:12px 18px;font-weight:600;cursor:pointer}
.btn.ghost{background:transparent;color:var(--purple);border:1.5px solid var(--purple)}
.err{color:var(--red);min-height:22px;margin-top:8px;font-size:14px}
.fine{font-size:13px;color:var(--muted)}
/* app */
#app{display:none}
header.top{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px clamp(16px,3vw,32px);border-bottom:1px solid var(--line)}
.brand{font-weight:700;color:var(--ink)}.brand small{font-weight:500;color:var(--muted);margin-left:10px}
.synth{font-size:13px;background:var(--wash);color:var(--purple);border-radius:999px;padding:4px 12px;font-weight:600}
main{display:grid;grid-template-columns:250px minmax(0,1fr);gap:0;min-height:calc(100vh - 76px)}
aside{border-right:1px solid var(--line);padding:20px;background:var(--wash)}
aside h2,.sec h2{font-size:13px;color:var(--muted);font-weight:600;margin:0 0 10px;letter-spacing:.2px}
.member{display:block;width:100%;text-align:left;background:#fff;border:1.5px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px;cursor:pointer}
.member b{color:var(--ink);font-size:16px}.member p{margin:4px 0 0;font-size:13px}
.member[aria-pressed=true]{border-color:var(--purple);box-shadow:inset 4px 0 0 var(--purple)}
.whatif{margin-top:18px}
.ctl{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;border-top:1px solid var(--line);font-size:14px}
.ctl input[type=range]{width:120px;accent-color:var(--purple)}
.sw{position:relative;width:40px;height:22px;flex:0 0 auto}.sw input{opacity:0;width:0;height:0}.sw span{position:absolute;inset:0;background:#CFCBD8;border-radius:999px;transition:.2s}.sw span:before{content:"";position:absolute;width:16px;height:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s}.sw input:checked+span{background:var(--purple)}.sw input:checked+span:before{transform:translateX(18px)}.sw input:focus-visible+span{outline:3px solid var(--blue);outline-offset:2px}
.reset{margin-top:12px;width:100%}
.content{padding:20px clamp(16px,3vw,32px) 120px;min-width:0}
main>*{min-width:0}
html,body{overflow-x:hidden}
/* week strip: the memorable element */
.week{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:22px}
.day{background:#fff;border:1.5px solid var(--line);border-radius:14px;padding:12px;text-align:left;cursor:pointer;position:relative;min-height:92px}
.day .d{font-size:12px;color:var(--muted)}.day .t{display:block;color:var(--ink);font-weight:600;font-size:14px;line-height:1.3;margin-top:4px}
.day .o{display:block;font-size:12px;margin-top:6px;color:var(--purple);font-weight:600}
.day[aria-pressed=true]{border-color:var(--ink);background:var(--ink)}.day[aria-pressed=true] .t{color:#fff}.day[aria-pressed=true] .d{color:#B9B6C4}.day[aria-pressed=true] .o{color:var(--pink)}
.day.none .o{color:var(--muted)}
.grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:start}
.steps{display:grid;gap:12px}
.step{border:1px solid var(--line);border-radius:14px;padding:14px 16px;background:#fff}
.step h3{margin:0 0 8px;font-size:15px;color:var(--ink);display:flex;align-items:center;gap:10px}
.step h3 .n{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;color:#fff;font-size:12px;font-weight:700}
.step:nth-child(1) .n{background:var(--s1)}.step:nth-child(2) .n{background:var(--s2)}.step:nth-child(3) .n{background:var(--s3)}.step:nth-child(4) .n{background:var(--s4)}.step:nth-child(5) .n{background:var(--s5)}
.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{font-size:13px;background:var(--wash);border-radius:8px;padding:4px 10px}
.list{margin:0;padding:0;list-style:none}.list li{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-top:1px solid var(--line);font-size:14px}.list li:first-child{border-top:0}
.out{color:var(--muted)}.out s{color:var(--muted)}.why{font-size:12px;color:var(--red)}
.rank{display:grid;gap:10px}
.r{display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:8px;align-items:center;font-size:14px}
.r .bar{grid-column:1/-1;height:12px;border-radius:6px;background:var(--wash);display:flex;overflow:hidden}
.bar i{display:block;height:100%;transition:width .45s ease}
@media (prefers-reduced-motion:reduce){.bar i{transition:none}}
.bar .rel{background:var(--violet)}.bar .val{background:var(--blue)}.bar .pri{background:var(--green)}.bar .pac{background:var(--pink)}
.r .sc{font-weight:700;color:var(--ink);text-align:right}
.r.best .ti{color:var(--ink);font-weight:600}
.legend{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--muted);margin-top:8px}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.reason{font-size:14px;color:var(--ink)}
/* device */
.device{position:sticky;top:16px}
.phone{width:280px;margin:0 auto;border:10px solid var(--ink);border-radius:36px;background:#fff;min-height:520px;overflow:hidden}
.browser{border:1.5px solid var(--ink);border-radius:12px;overflow:hidden;background:#fff}
.browser .bar2{background:var(--ink);color:#fff;font-size:12px;padding:8px 12px;display:flex;gap:8px;align-items:center}.browser .bar2 b{font-weight:500;opacity:.85}
.scr{padding:16px}
.scr .app{font-weight:700;color:var(--ink);display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.scr .app small{font-weight:500;color:var(--muted)}
.ocard{border-radius:14px;padding:14px;margin-bottom:10px;background:var(--wash)}
.ocard .sp{font-size:12px;color:var(--muted)}.ocard .ot{display:block;color:var(--ink);font-weight:600;margin:2px 0 8px;line-height:1.35}
.ocard .act{display:inline-block;background:var(--purple);color:#fff;border-radius:8px;padding:6px 12px;font-size:13px;font-weight:600}
.ocard.lead{background:var(--purple)}.ocard.lead .sp{color:#E3D5F7}.ocard.lead .ot{color:#fff}.ocard.lead .act{background:#fff;color:var(--purple)}
.push{margin:40px 10px;background:rgba(0,0,0,.82);color:#fff;border-radius:16px;padding:12px 14px;font-size:14px}.push b{display:block;font-size:12px;opacity:.8;margin-bottom:2px}
.progress{height:8px;background:var(--line);border-radius:4px;margin:6px 0 4px;overflow:hidden}.progress i{display:block;height:100%;background:var(--green)}
.empty{padding:40px 16px;text-align:center;color:var(--muted);font-size:14px}
.caption{font-size:13px;color:var(--muted);text-align:center;margin-top:10px}
/* partner */
.partner{margin-top:14px;border:1.5px solid var(--purple);border-radius:14px;padding:14px;background:#fff}
.partner h3{margin:0 0 8px;font-size:15px;color:var(--ink)}
pre{margin:6px 0;background:var(--wash);border-radius:10px;padding:10px 12px;font-size:12px;white-space:pre-wrap;overflow-x:auto}
.notrec{font-size:13px}.notrec li{margin:2px 0}
.guard{margin-top:22px;background:var(--ink);color:#fff;border-radius:14px;padding:14px 18px;font-size:14px}.guard b{color:var(--pink);font-weight:600}
/* old agent */
#agentBtn{position:fixed;right:20px;bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:5;box-shadow:0 6px 20px rgba(111,48,183,.35)}
#agent{position:fixed;right:20px;bottom:calc(20px + env(safe-area-inset-bottom,0px));width:min(440px,calc(100vw - 40px));height:min(620px,calc(100vh - 110px));background:#fff;border:1.5px solid var(--ink);border-radius:18px;display:none;flex-direction:column;z-index:6;overflow:hidden}
#agent header{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;background:var(--ink);color:#fff}
#agent header b{font-weight:600}#agent header button{background:transparent;border:0;color:#fff;font-size:20px;cursor:pointer;line-height:1}
#log{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px}
.msg{max-width:90%;padding:10px 12px;border-radius:12px;font-size:14px;white-space:pre-wrap}
.msg.u{align-self:flex-end;background:var(--purple);color:#fff}
.msg.a{align-self:flex-start;background:var(--wash);color:var(--ink)}
.trace{align-self:flex-start;font-size:12px;color:var(--muted);max-width:90%}.trace summary{cursor:pointer;color:var(--purple);font-weight:600}.trace code{display:block;margin:3px 0;color:var(--body)}
.sugg{display:flex;flex-wrap:wrap;gap:6px;padding:0 14px 8px}.sugg button{background:var(--wash);border:0;border-radius:999px;padding:6px 10px;font-size:12px;cursor:pointer;color:var(--purple);font-weight:600}
#agent form{display:flex;gap:8px;padding:10px 12px;border-top:1px solid var(--line)}#agent input{flex:1;min-width:0;padding:10px 12px;border:1.5px solid var(--line);border-radius:10px}
.agentnote{font-size:11px;color:var(--muted);padding:0 14px 10px}

/* welcome */
#welcome{min-height:calc(100vh - 6px);display:grid;place-items:center;padding:24px}
.hello{max-width:760px;width:100%}
.avatar{width:64px;height:64px;border-radius:50%;background:conic-gradient(var(--violet),var(--blue),var(--green),var(--pink),var(--red),var(--violet));display:grid;place-items:center;margin-bottom:18px}
.avatar span{width:52px;height:52px;border-radius:50%;background:#fff;display:grid;place-items:center;font-weight:700;color:var(--purple);font-size:18px}
.say{font-size:clamp(18px,2.2vw,22px);line-height:1.45;color:var(--ink);margin:0 0 12px}
.say.sm{font-size:16px;color:var(--body)}
.say .pron{color:var(--purple);font-weight:600}
.choices{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.type{display:inline-block;border-right:2px solid var(--purple);animation:blink 1s step-end infinite;height:1.1em;vertical-align:-2px;margin-left:2px}
@keyframes blink{50%{border-color:transparent}}
@media (prefers-reduced-motion:reduce){.type{animation:none}}
.agenda{list-style:none;margin:16px 0;padding:0;display:grid;gap:8px}
.agenda li{display:flex;gap:12px;align-items:flex-start;background:var(--wash);border-radius:12px;padding:10px 12px;font-size:14px}
.agenda b{color:var(--ink)}
.dn{flex:0 0 auto;color:#fff;font-weight:700;font-size:12px;border-radius:8px;padding:4px 8px;min-width:42px;text-align:center}
.btn.big{padding:14px 24px;font-size:16px}
.alt{font-size:14px;color:var(--muted);margin-top:12px}
.link{background:none;border:0;padding:0;color:var(--purple);font-weight:600;text-decoration:underline;cursor:pointer}
.tourbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:8px 16px;border-bottom:1px solid var(--line);font-size:12px;color:var(--muted)}
.tourbar .dots{display:flex;gap:4px}.tourbar .dots i{width:18px;height:4px;border-radius:2px;background:var(--line)}.tourbar .dots i.on{background:var(--purple)}
.tourbar button{background:none;white-space:nowrap;border:0;color:var(--purple);font-weight:600;cursor:pointer;font-size:12px}
.profile{border:1.5px solid var(--ink);border-radius:18px;padding:18px;background:#fff}
.ph{display:flex;gap:12px;align-items:center;margin-bottom:14px}.ph b{display:block;color:var(--ink);font-size:18px}.ph span{font-size:12px;color:var(--muted)}
.pav{width:48px;height:48px;border-radius:50%;background:var(--purple);color:#fff;display:grid;place-items:center;font-weight:700;font-size:20px}
.pg{display:grid;grid-template-columns:1fr 1fr;gap:10px}.pg span{display:block;font-size:12px;color:var(--muted)}.pg b{color:var(--ink);font-size:20px}
.pl{font-size:12px;color:var(--muted);margin:14px 0 6px}
.pe{list-style:none;margin:0;padding:0;font-size:14px}.pe li{padding:5px 0;border-top:1px solid var(--line)}.pe li:first-child{border-top:0}.pe b{color:var(--ink)}
body.intro #steps,body.intro #partnerBox,body.intro .week,body.intro .viewbar,body.intro #mvside,body.intro .guard{opacity:.28;pointer-events:none;transition:opacity .4s}
.whole{margin-top:14px;background:var(--purple);color:#fff;border-radius:14px;padding:14px;text-align:center}.whole span{display:block;font-size:12px;opacity:.85}.whole b{font-size:18px}
.prin{margin:0;padding-left:20px;font-size:14px;display:grid;gap:10px}.prin b{color:var(--ink)}
#welcome{background:radial-gradient(1200px 500px at 85% -10%,rgba(155,67,255,.10),transparent 60%),radial-gradient(900px 500px at -10% 110%,rgba(44,118,236,.08),transparent 60%)}
.meet{display:flex;align-items:center;gap:22px;margin-bottom:18px}
.bigav{position:relative;width:96px;height:96px;flex:0 0 auto}
.bigav i{position:absolute;inset:0;border-radius:50%;background:conic-gradient(var(--violet),var(--blue),var(--green),var(--pink),var(--red),var(--violet));animation:spin 12s linear infinite}
.bigav span{position:absolute;inset:8px;border-radius:50%;background:#fff;display:grid;place-items:center;font-weight:700;color:var(--purple);font-size:32px}
@keyframes spin{to{transform:rotate(360deg)}}
.kick{margin:0 0 4px;font-size:13px;font-weight:600;color:var(--purple);letter-spacing:.3px}
.hi{margin:0;color:var(--ink);font-size:clamp(34px,5vw,52px);line-height:1.05;font-weight:700}
.pron{margin:6px 0 0;color:var(--muted);font-size:15px}
.lead{font-size:clamp(17px,2vw,20px);line-height:1.5;color:var(--ink);margin:0 0 18px}
.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:22px}
.tile{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px}
.tile p{margin:8px 0 0;font-size:14px;line-height:1.5}
.tn{display:inline-block;color:#fff;font-size:12px;font-weight:700;border-radius:8px;padding:3px 9px}
.ask{color:var(--ink);font-weight:600;margin:0 0 10px}
.rise{opacity:0;transform:translateY(8px);animation:rise .6s ease forwards;animation-delay:calc(var(--d) * .22s)}
@keyframes rise{to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.rise{opacity:1;transform:none;animation:none}.bigav i{animation:none}}
@media (max-width:760px){.tiles{grid-template-columns:1fr}.meet{gap:14px}.bigav{width:72px;height:72px}.bigav span{font-size:24px}}
#tcard{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom,0px));right:24px;width:min(460px,calc(100vw - 32px));background:#fff;border-radius:18px;box-shadow:0 18px 50px rgba(20,10,40,.35);z-index:75;display:none;padding:18px 20px 14px}
#tcard .th{display:flex;align-items:center;gap:10px;margin-bottom:8px}
#tcard .th .avatar{width:34px;height:34px;margin:0}#tcard .th .avatar span{width:27px;height:27px;font-size:11px}
#tcard .ts{font-size:12px;color:var(--muted)}#tcard h2{margin:0;font-size:18px;color:var(--ink);line-height:1.25}
#tcard .tb p{margin:0 0 8px;font-size:15px;line-height:1.55;color:var(--body)}
#tcard .more{background:var(--wash);border-radius:10px;padding:10px 12px;font-size:14px;margin:4px 0 8px;color:var(--ink)}
#tcard .tf{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px;border-top:1px solid var(--line);padding-top:10px}
#tcard .dots{display:flex;gap:4px}#tcard .dots i{width:16px;height:4px;border-radius:2px;background:var(--line)}#tcard .dots i.on{background:var(--purple)}
#tcard .sp{flex:1}
.linkbtn{background:none;border:0;padding:0;color:var(--purple);font-weight:600;cursor:pointer;font-size:13px}
.spot{position:relative;z-index:60;box-shadow:0 0 0 9999px rgba(18,10,30,.55),0 0 0 4px var(--violet);border-radius:14px;background:#fff}
body.touring .week,body.touring #steps,body.touring #partnerBox,body.touring aside,body.touring .guard{transition:opacity .3s}
@media (max-width:760px){#tcard{bottom:0;left:0 !important;right:0 !important;width:100vw;border-radius:18px 18px 0 0}}
.paths{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:18px 0 6px}
.path{text-align:left;background:#fff;border:1.5px solid var(--line);border-radius:16px;padding:18px;cursor:pointer;display:flex;flex-direction:column;gap:8px;font:inherit;color:var(--body)}
.path:hover,.path:focus-visible{border-color:var(--purple);box-shadow:0 8px 24px rgba(111,48,183,.15)}
.path b{color:var(--ink);font-size:18px;line-height:1.25}.path span:not(.tn){font-size:14px;line-height:1.5}.path em{font-style:normal;color:var(--purple);font-weight:600;margin-top:auto}
.path .tn{align-self:flex-start}
.viewbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:0 0 16px}
.seg{display:inline-flex;background:var(--wash);border-radius:12px;padding:4px}
.seg button{border:0;background:transparent;padding:8px 14px;border-radius:9px;font-weight:600;color:var(--muted);cursor:pointer}
.seg button[aria-selected=true]{background:#fff;color:var(--ink);box-shadow:0 1px 4px rgba(0,0,0,.08)}
.scale{font-size:13px;color:var(--muted)}.scale b{color:var(--ink)}
.mv{display:grid;grid-template-columns:320px minmax(0,1fr);gap:28px;align-items:start}
.mvside{display:grid;gap:12px}
.mvcard{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px}
.mvcard h4{margin:0 0 6px;font-size:13px;color:var(--muted);font-weight:600}
.mvcard p{margin:0;font-size:15px;color:var(--ink);line-height:1.5}
.mvcard.sig{border-color:var(--purple);background:#FBF8FF}
.mvcard.not p{color:var(--body);font-size:14px}
.bar .sig{background:var(--red)}
.chip.sigc{background:var(--purple);color:#fff}
@media (max-width:1100px){.mv{grid-template-columns:1fr}.paths{grid-template-columns:1fr}}
.rfpwrap{display:grid;grid-template-columns:300px minmax(0,1fr);min-height:calc(100vh - 82px)}
.rfpnav{background:var(--wash);border-right:1px solid var(--line);padding:20px;overflow-y:auto}
.rfpnav h2{font-size:13px;color:var(--muted);font-weight:600;margin:0 0 12px}
.topic{margin-bottom:14px}.topic b{display:block;color:var(--ink);font-size:14px;margin-bottom:6px}
.topic button{display:block;width:100%;text-align:left;background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin-bottom:6px;font-size:13px;cursor:pointer;color:var(--body)}
.topic button:hover,.topic button:focus-visible{border-color:var(--purple);color:var(--purple)}
.rfpmain{display:flex;flex-direction:column;max-width:860px;width:100%;margin:0 auto;padding:24px clamp(16px,3vw,32px)}
#rlog{flex:1;display:flex;flex-direction:column;gap:16px;padding-bottom:16px}
.qa{border-bottom:1px solid var(--line);padding-bottom:16px}
.qa .q{font-weight:600;color:var(--ink);font-size:17px;margin:0 0 8px}
.qa .a{font-size:15px;line-height:1.6;white-space:pre-wrap;color:var(--body);margin:0}
.cites{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.cite{background:var(--wash);border:0;border-radius:8px;padding:5px 10px;font-size:12px;font-weight:600;color:var(--purple);cursor:default}
.excerpt{margin-top:8px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:13px;color:var(--body)}
.rintro h1{margin:0 0 8px;color:var(--ink);font-size:clamp(24px,3vw,32px);line-height:1.2}.rintro p{margin:0 0 12px;font-size:15px}
.rform{display:flex;gap:8px;position:sticky;bottom:0;background:#fff;padding:12px 0 calc(12px + env(safe-area-inset-bottom,0px))}.rform input{flex:1;min-width:0;padding:12px 14px;border:1.5px solid var(--line);border-radius:10px}
@media (max-width:900px){.rfpwrap{grid-template-columns:1fr}.rfpnav{border-right:0;border-bottom:1px solid var(--line)}}
#gate{min-height:calc(100vh - 6px);display:grid;place-items:center;padding:32px clamp(16px,4vw,48px);background:radial-gradient(1100px 520px at 90% -10%,rgba(155,67,255,.12),transparent 60%),radial-gradient(900px 520px at -10% 110%,rgba(44,118,236,.09),transparent 60%)}
.gwrap{width:100%;max-width:1180px;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:48px;align-items:center}
.ghead{margin:6px 0 12px;color:var(--ink);font-size:clamp(40px,6vw,68px);line-height:1.02;font-weight:700}
.glead{font-size:clamp(17px,1.8vw,20px);line-height:1.5;color:var(--ink);margin:0 0 18px;max-width:600px}
.ginside{list-style:none;margin:0 0 20px;padding:0;display:grid;gap:10px;max-width:600px}
.ginside li{display:flex;gap:12px;align-items:flex-start;font-size:14px;line-height:1.5}
.ginside .tn{flex:0 0 auto;min-width:104px;text-align:center}
.gcard{background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:0 12px 36px rgba(40,20,80,.08);max-width:600px}
.gask{margin:0 0 10px;color:var(--ink);font-weight:600}
.gright{display:flex;flex-direction:column;align-items:center}
.orbit{position:relative;width:min(440px,100%);aspect-ratio:1}
.ring{position:absolute;inset:12%;border-radius:50%;border:1.5px dashed #D6CDEA}
.core{position:absolute;inset:33%;border-radius:50%;background:#fff;box-shadow:0 10px 40px rgba(111,48,183,.18);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:4px}
.core .bigav{width:64px;height:64px}.core .bigav span{font-size:22px;inset:6px}
.core b{color:var(--ink);font-size:16px;line-height:1.2}
.core{gap:8px;padding:0}
.core .bigav{margin:0}.core small{font-size:11px;color:var(--muted)}
.node{position:absolute;transform:translate(-50%,-50%);background:#fff;border:1.5px solid var(--c);color:var(--ink);font-size:13px;font-weight:600;border-radius:999px;padding:7px 12px;white-space:nowrap;box-shadow:0 6px 18px rgba(0,0,0,.06);animation:float 6s ease-in-out infinite}
.node:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--c);margin-right:7px;vertical-align:1px}
.n1{left:50%;top:10%}.n2{left:88%;top:38%;animation-delay:-1.2s}.n3{left:74%;top:84%;animation-delay:-2.4s}.n4{left:26%;top:84%;animation-delay:-3.6s}.n5{left:12%;top:38%;animation-delay:-4.8s}
@keyframes float{50%{transform:translate(-50%,calc(-50% - 6px))}}
@media (prefers-reduced-motion:reduce){.node{animation:none}}
@media (max-width:980px){.gwrap{grid-template-columns:1fr;gap:28px}.gright{order:-1}.orbit{width:min(340px,100%)}}
.qa .src{font-size:12px;color:var(--muted);margin:8px 0 0}
/* MIRA panel */
#mira{position:fixed;top:0;right:0;bottom:0;width:min(420px,100vw);border-left:1.5px solid var(--ink);display:flex;flex-direction:column;background:#fff;z-index:80;transform:translateX(105%);transition:transform .35s ease;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
#mira.open{transform:none}
@media (prefers-reduced-motion:reduce){#mira{transition:none}}
.mclose{background:none;border:0;font-size:22px;cursor:pointer;color:var(--ink);margin-left:6px;line-height:1}
.askbtn{margin-left:12px}
#mira .mh{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--line)}
#mira .mh .avatar{width:38px;height:38px;margin:0}#mira .mh .avatar span{width:30px;height:30px;font-size:12px}
#mira .mh b{color:var(--ink);display:block;line-height:1.2}#mira .mh small{color:var(--muted);font-size:12px}
.mode{margin-left:auto;white-space:nowrap;font-size:11px;font-weight:600;border-radius:999px;padding:3px 9px;background:var(--wash);color:var(--purple)}
.mode.live{background:var(--green);color:#fff}
#log{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px}
.msg{max-width:92%;padding:10px 12px;border-radius:12px;font-size:14px;white-space:pre-wrap}
.msg.u{align-self:flex-end;background:var(--purple);color:#fff}
.msg.a{align-self:flex-start;background:var(--wash);color:var(--ink)}
.acts{display:flex;flex-wrap:wrap;gap:6px;align-self:flex-start}
.acts button{background:#fff;border:1.5px solid var(--purple);color:var(--purple);border-radius:999px;padding:6px 12px;font-size:13px;font-weight:600;cursor:pointer}
.acts button.pri{background:var(--purple);color:#fff}
.trace{align-self:flex-start;font-size:12px;color:var(--muted);max-width:92%}.trace summary{cursor:pointer;color:var(--purple);font-weight:600}.trace code{display:block;margin:3px 0;color:var(--body)}
#mira form{display:flex;gap:8px;padding:10px 12px;border-top:1px solid var(--line)}#mira input{flex:1;min-width:0;padding:10px 12px;border:1.5px solid var(--line);border-radius:10px}
.agentnote{font-size:11px;color:var(--muted);padding:0 14px 10px}
/* focus highlight used by the tour */
.focus{outline:3px solid var(--violet);outline-offset:4px;border-radius:14px;transition:outline-color .3s}

@media (max-width:1100px){.grid{grid-template-columns:1fr}}

@media (max-width:1100px){.grid{grid-template-columns:1fr}.device{position:static}}
@media (max-width:760px){main{grid-template-columns:1fr}aside{border-right:0;border-bottom:1px solid var(--line)}.week{grid-template-columns:repeat(5,minmax(120px,1fr));overflow-x:auto}}

/* Visual QA fixes */
.step h3 .sub{font-weight:500;color:var(--muted);font-size:14px}
.ghead{font-size:clamp(34px,4.6vw,56px);line-height:1.06;max-width:640px}
.glead2{font-size:16px;line-height:1.55;color:var(--body);margin:-6px 0 20px;max-width:600px}
#gate,#welcome{grid-template-columns:minmax(0,1fr)}
.gwrap,.hello{min-width:0;justify-self:center}
.gleft,.gright{min-width:0}
.ginside li{display:grid;grid-template-columns:118px minmax(0,1fr);gap:14px;align-items:start}
.ginside .tn{min-width:0;width:100%;text-align:center;margin-top:1px}
.err:empty{display:none}
.err{margin:8px 0 0}
.gcard .fine{margin:12px 0 0}
.node:before{display:none}
.node{z-index:2;background:#fff}
.core{z-index:3}
.ring{z-index:0}
.trav{position:absolute;inset:12%;z-index:1;animation:orbit 16s linear infinite}
.trav i{position:absolute;left:50%;top:0;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--purple);box-shadow:0 0 0 6px rgba(111,48,183,.15)}
@keyframes orbit{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.trav{animation:none}}
@media (max-width:980px){.gwrap{grid-template-columns:1fr !important;gap:28px}.ginside li{grid-template-columns:1fr;gap:6px}.ginside .tn{width:auto;justify-self:start}}
