:root{--ink:#242238;--muted:#77778a;--purple:#7757d8;--purple-dark:#5d3abf;--line:#e8e7ef;--paper:#fff;--canvas:#f7f7fb;--green:#2e8068;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);font-synthesis:none}*{box-sizing:border-box}body{margin:0;background:var(--canvas)}button,input,textarea,select{font:inherit}button,a,input,textarea,select{outline-offset:4px}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}a{color:var(--purple);text-decoration:none}button{border:0}h1,h2,h3,p{margin-top:0}.workspace{display:flex;min-height:100vh}.sidebar{width:252px;flex-shrink:0;background:#fff;border-right:1px solid var(--line);padding:32px 24px;display:flex;flex-direction:column}.brand{color:var(--ink);display:flex;gap:13px;align-items:center;font-size:27px;letter-spacing:-1.2px;font-weight:700}.brand small{font-size:8px;display:block;letter-spacing:1.5px;color:#9b95ac;margin-top:6px}.brand-mark{width:45px;height:45px;background:#eee8fc;border-radius:15px;color:var(--purple);font:italic 39px Georgia,serif;position:relative;text-align:center}.brand-mark span{font:14px system-ui;position:absolute;right:5px;top:1px}.new-chat{margin:39px 0 30px;text-align:left;background:#fff;border:1px solid #ddd8ef;border-radius:10px;color:#655190;font-size:13px;padding:13px}.new-chat span{font-size:20px;vertical-align:-1px;margin-right:9px}.side-label,.eyebrow{font-size:9px;letter-spacing:1.7px;font-weight:650;color:#9c92b1}.nav-item{padding:13px;border-radius:9px;font-size:13px;margin:14px 0;display:flex;align-items:center;gap:10px}.nav-item.active{background:#f0eafd;color:#7658bc}.nav-item>span:first-child{font-size:22px}.nav-dot{margin-left:auto;width:5px;height:5px;border-radius:50%;background:#9575d6}.side-guide{margin-top:39px}.side-guide>.side-label{font-size:8px;letter-spacing:1px}.side-guide ol{list-style:none;margin:25px 0 0;padding:0}.side-guide li{display:flex;gap:12px;margin:0 0 29px}.side-guide li>span{font-size:10px;border:1px solid var(--line);border-radius:50%;width:26px;height:26px;display:grid;place-items:center;color:#a39aa9;flex-shrink:0}.side-guide strong{font-size:11px;font-weight:550}.side-guide p{font-size:10px;color:#9a96a4;line-height:1.6;margin:5px 0}.sidebar-bottom{margin-top:auto;padding:30px 4px 0}.tiny-orb{display:block;font-size:25px;color:#bda5e9;margin-bottom:13px}.sidebar-bottom strong{font-family:Georgia,serif;font-size:20px;font-weight:400;line-height:1.4}.sidebar-bottom p{font-size:10px;color:#9b95a7;line-height:1.8;margin:13px 0 25px}.sidebar-bottom a{font-size:10px;color:#88828f}.main{min-width:0;flex:1}.topbar{height:82px;border-bottom:1px solid var(--line);padding:0 38px;display:flex;align-items:center;justify-content:space-between;font-size:11px;background:#fff9;gap:16px}.breadcrumb{color:#aaa4b6;margin-right:9px}.status-badge{font-size:10px;color:var(--green);background:#ebf5ef;border:1px solid #dfede5;border-radius:20px;padding:7px 11px}.notice{padding:10px 30px;background:#faf1da;color:#8b6723;font-size:11px;line-height:1.5;border-bottom:1px solid #eee0bf}.studio{display:grid;grid-template-columns:minmax(380px,1fr) 315px;min-height:calc(100vh - 82px)}.conversation{display:flex;flex-direction:column;padding:35px 45px 15px;min-width:0}.welcome{margin:auto 0;text-align:center;padding:35px 0 30px}.welcome-orb{display:grid;place-items:center;width:64px;height:64px;margin:0 auto 26px;background:radial-gradient(circle at 25% 25%,#f6eaff,#ddd0f7 65%,#e2daf4);box-shadow:0 10px 40px #d7c6ed70,inset 0 0 0 1px #fff;border-radius:23px;font-size:37px;color:#9470cb;transform:rotate(-8deg)}.welcome .eyebrow{font-size:8px;letter-spacing:1.8px;margin-bottom:20px}h1{font-weight:450;line-height:1.16;font-size:clamp(32px,3.2vw,49px);letter-spacing:-1.8px;margin-bottom:19px}h1 span{font-family:Georgia,serif;font-style:italic;color:#8063af;font-weight:400}.welcome>p{color:#8b8497;font-size:12px;line-height:1.9}.suggestions{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:30px auto 0;max-width:650px}.suggestions button{border:1px solid #e6dfed;background:#fff9;border-radius:11px;padding:15px;text-align:left;font-size:10px;line-height:1.5;color:#655971;transition:transform .2s,border-color .2s}.suggestions button:hover{transform:translateY(-3px);border-color:#bca7d7}.suggestions button span{display:block;font-size:19px;color:#a186c3;margin-bottom:13px}.suggestions small{display:block;font-size:9px;color:#a39aa8;margin-top:7px}.trust-line{display:flex;gap:22px;justify-content:center;margin-top:25px;font-size:9px;color:#a89caf}.composer-area{margin-top:auto}.composer{padding:16px 18px 10px;background:white;border:1px solid #e0d9ec;border-radius:15px;box-shadow:0 5px 20px #32265705}.composer textarea{resize:vertical;min-height:50px;max-height:180px;width:100%;border:0;background:transparent;color:var(--ink);font-size:12px;line-height:1.6}.composer textarea::placeholder{color:#b0a6ba}.composer textarea:focus{outline:0}.composer-bottom{display:flex;align-items:center;justify-content:space-between;color:#b0a5bc;font-size:9px;margin-top:8px}.composer-bottom button{border-radius:9px;background:var(--purple);color:white;width:32px;height:32px;font-size:21px}.composer-note{font-size:9px;color:#a79eaf;text-align:center;line-height:1.5;margin:11px 0 0}.selection{border-left:1px solid var(--line);padding:32px 23px;display:flex;flex-direction:column;background:#fcfbfe}.selection-heading h2{font-size:17px;font-weight:550;letter-spacing:-.4px;margin:12px 0 25px;display:flex;align-items:center;gap:10px}.selection-heading h2>span{font-size:10px;border-radius:5px;background:#ece5f7;color:#8e72b3;padding:4px 7px}.requirements{padding:18px;background:#fff;border:1px solid var(--line);border-radius:12px}.requirements h3{font-size:11px;font-weight:550;margin-bottom:15px}label{font-size:10px;color:#7d748b;display:block;margin-bottom:14px}label span{float:right;color:#b2a8bd}input,select{display:block;width:100%;padding:10px 12px;margin-top:8px;border:1px solid #e5e0ec;border-radius:7px;font-size:12px;background:#fdfcfe;color:var(--ink)}input::placeholder{color:#b7afc0}.secondary-button{padding:10px;width:100%;border:1px solid #e8e1f3;color:#8d73b3;background:#f8f4fd;border-radius:7px;font-size:10px}.empty-shortlist{text-align:center;padding:44px 16px;color:#aaa0b5}.empty-shortlist>span{font-size:34px;color:#d6cbe5;display:block;margin-bottom:19px}.empty-shortlist strong{font-size:11px;color:#8f809f;font-weight:500}.empty-shortlist p{font-size:10px;line-height:1.8;margin-top:10px}.source-footer{display:flex;gap:12px;color:#ad9fba;margin-top:auto;padding:25px 2px 0;border-top:1px dashed #e5dfee;font-size:10px}.source-footer>span{font-size:20px}.source-footer p{font-size:9px;line-height:1.8;margin:0}.messages:not(:empty){padding:10px 0 35px}.message{margin-bottom:23px;line-height:1.8;font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.message.user{margin-left:15%;padding:15px 18px;background:#eee8f8;border-radius:15px 15px 3px 15px;color:#655276}.message.assistant{border:1px solid #e5e0ed;background:#fff;padding:20px;border-radius:3px 15px 15px 15px}.message .speaker{font-weight:650;font-size:10px;color:#8e6cc2;display:block;letter-spacing:1px;margin-bottom:10px}.message .sources{margin-top:16px;border-top:1px solid var(--line);padding-top:8px;white-space:normal}.sources summary{cursor:pointer;font-size:10px;color:#8f76b0}.sources blockquote{font-size:10px;color:#93889e;margin:10px 0;padding-left:10px;border-left:2px solid #ddd0ee;white-space:pre-wrap}.source-title{font-size:10px;font-weight:650;color:#867292}.warning{font-size:11px;color:#9b6c32;background:#fff7e8;border-radius:8px;padding:10px;margin:10px 0}.quote-card{border:1px solid #e1d9ee;border-radius:12px;background:#fff;padding:17px;margin:15px 0}.quote-card .eyebrow{font-size:8px;color:#8a6eb3}.quote-card h3{font-size:13px;margin:10px 0;color:#51405f}.quote-card .price{font-size:23px;letter-spacing:-.6px;font-weight:550;margin:8px 0}.quote-card .price small{display:block;letter-spacing:0;font-size:9px;font-weight:400;color:#9d91aa;margin-top:4px}.quote-card p{color:#93839f;font-size:10px;line-height:1.8;margin:8px 0}.quote-card ul{list-style:none;margin:12px 0;padding:0;color:#8d7c99;font-size:10px;line-height:1.8}.quote-card li:before{content:'✓ ';color:#a493b6}.primary-button{background:var(--purple);color:#fff;padding:12px 18px;border-radius:8px;font-size:12px}.primary-button:hover{background:var(--purple-dark)}.quote-card .primary-button{width:100%;font-size:10px}.muted{font-size:11px;color:#92879d;line-height:1.7}.error{background:#fff0ee;color:#a14c40;border:1px solid #f1d9d3;border-radius:9px;padding:12px;font-size:12px;margin-bottom:12px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0)}[hidden]{display:none!important}dialog{border:1px solid #e3dbea;border-radius:20px;padding:28px;width:min(590px,95vw);max-height:90vh;box-shadow:0 25px 100px #29203530;color:var(--ink)}dialog::backdrop{background:#27203366;backdrop-filter:blur(3px)}.dialog-top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px}.dialog-top h2{font-size:23px;font-weight:500;margin:9px 0}.icon-button{background:#f4f0f9;color:#8c7d99;width:30px;height:30px;border-radius:8px;font-size:23px}.line-item,.total-line{display:flex;justify-content:space-between;gap:20px;font-size:12px;padding:10px 0;border-bottom:1px solid var(--line)}.total-line{font-size:18px;padding:16px 0;margin-bottom:15px}.line-item small{display:block;font-size:10px;color:var(--muted);margin-top:5px}.check-label{display:flex;gap:10px;align-items:flex-start;font-size:11px;line-height:1.6}.check-label input{width:auto;margin:3px 0 0}#purchase-form{margin-top:20px}.admin-layout,.checkout-layout{max-width:1100px;padding:40px 28px;margin:auto}.admin-layout header,.checkout-layout header{display:flex;align-items:center;justify-content:space-between;margin-bottom:35px}.admin-layout h1,.checkout-layout h1{font-size:32px;margin-top:30px}.panel{background:#fff;border:1px solid var(--line);border-radius:15px;padding:25px;margin:20px 0}.panel h2{font-size:18px;font-weight:550}.panel p{font-size:12px;color:var(--muted);line-height:1.8}.panel textarea{width:100%;min-height:140px;padding:15px;border:1px solid var(--line);border-radius:8px;font:12px ui-monospace,monospace;background:#fcfbfe}.panel pre{font:11px ui-monospace,monospace;white-space:pre-wrap;overflow-wrap:anywhere;max-height:400px;overflow:auto;line-height:1.8}.button-row{display:flex;gap:12px;flex-wrap:wrap;margin:15px 0}.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.admin-grid .panel{margin:0}.checkout-layout{max-width:700px}.success{padding:18px;background:#eaf6f0;color:#377760;border-radius:10px;font-size:13px;line-height:1.8}@media(min-width:1600px){.conversation{padding-left:max(45px,6vw);padding-right:max(45px,6vw)}.selection{padding-left:30px;padding-right:30px}.studio{grid-template-columns:minmax(380px,1fr) 355px}}@media(max-width:1100px){.sidebar{width:200px;padding:25px 17px}.brand{font-size:24px}.studio{grid-template-columns:minmax(320px,1fr) 280px}.conversation{padding:30px 25px 15px}.suggestions{grid-template-columns:1fr}.suggestions button{padding:12px}.suggestions button span{display:inline;margin:0 10px 0 0}.suggestions small{display:inline;margin-left:8px}.welcome{padding-top:10px}.sidebar-bottom strong{font-size:17px}}@media(max-width:850px){.sidebar{display:none}.topbar{padding:0 22px;height:65px}.studio{grid-template-columns:minmax(300px,1fr) 280px}.conversation{padding:25px 20px 15px}.welcome{padding-bottom:22px}.welcome>p br{display:none}.trust-line{gap:10px;font-size:8px}.selection{padding:25px 18px}}@media(max-width:620px){.studio{display:flex;flex-direction:column}.conversation{min-height:calc(100dvh - 110px);padding:25px 18px 15px}.selection{border-left:0;border-top:1px solid var(--line)}.welcome{padding:15px 3px 25px}.welcome-orb{width:50px;height:50px;font-size:28px;margin-bottom:20px}h1{font-size:36px}.suggestions{gap:8px;margin-top:20px}.topbar{font-size:10px;padding:0 18px}.status-badge{font-size:9px}.notice{padding:9px 18px;font-size:10px}.selection-heading{display:flex;justify-content:space-between;align-items:center}.selection-heading h2{margin:0 0 20px}.admin-grid{grid-template-columns:1fr}.brand small{display:none}.composer-note{font-size:8px}.message.user{margin-left:8%}.admin-layout,.checkout-layout{padding:25px 17px}}body.embedded .sidebar{display:none}body.embedded .studio{display:flex;flex-direction:column}body.embedded .topbar{height:55px;padding:0 18px}body.embedded .conversation{padding:25px 18px 15px;min-height:65vh}body.embedded .selection{border-left:0;border-top:1px solid var(--line)}body.embedded h1{font-size:34px}body.embedded .suggestions{grid-template-columns:1fr}body.embedded .suggestions button span{display:inline;margin-right:10px}

/* ── Kalpana intelligent layer: aurora canvas, glass surfaces, live AI states ── */
:root{--glow:#8b5cf6;--cyan:#22b8d6;--pink:#d66bd1;--glass:#ffffffb8;--glass-line:#ffffffe6}
body{background:radial-gradient(1200px 600px at 85% -10%,#e9defe 0%,transparent 60%),radial-gradient(900px 500px at -10% 110%,#d9f3fb 0%,transparent 55%),radial-gradient(700px 400px at 50% 50%,#fbf3ff 0%,transparent 70%),var(--canvas);background-attachment:fixed}
.sidebar,.selection,.topbar{background:var(--glass);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4)}
.topbar{position:sticky;top:0;z-index:5}
.status-badge{box-shadow:0 0 0 3px #2e806812}
.ai-orb{position:relative;width:46px;height:46px;border-radius:50%;flex-shrink:0;background:conic-gradient(from 0deg,var(--glow),var(--cyan),var(--pink),var(--glow));animation:orb-spin 6s linear infinite;box-shadow:0 0 28px #8b5cf655,0 0 60px #22b8d622}
.ai-orb span{position:absolute;inset:5px;border-radius:50%;background:radial-gradient(circle at 32% 28%,#fff 0%,#f3ecff 35%,#e5dbfb 70%,#d9cdf7 100%)}
.ai-orb span:after{content:'✦';position:absolute;inset:0;display:grid;place-items:center;color:var(--glow);font-size:16px;animation:orb-spin 6s linear infinite reverse}
.ai-orb.large{width:76px;height:76px;margin:0 auto 28px}.ai-orb.large span{inset:6px}.ai-orb.large span:after{font-size:26px}
@keyframes orb-spin{to{transform:rotate(360deg)}}
.welcome h1 span{background:linear-gradient(90deg,#7757d8,#c160c4 55%,#2aa7c9);-webkit-background-clip:text;background-clip:text;color:transparent}
.suggestions button{background:var(--glass);backdrop-filter:blur(8px);box-shadow:0 6px 24px #4a33880a}
.suggestions button:hover{box-shadow:0 10px 30px #7757d822}
.composer{background:#fffffff0;transition:box-shadow .25s,border-color .25s}
.composer:focus-within{border-color:#c9b6f3;box-shadow:0 0 0 4px #8b5cf61a,0 12px 40px #6d4fd21f}
.composer-actions{display:flex;gap:8px;align-items:center}
.composer-bottom .composer-actions button{background:linear-gradient(135deg,#7757d8,#9c5fd6)}
.composer-bottom .composer-actions .mic-button{background:#f1ecfb;color:#b25bbf;font-size:13px;border:1px solid #e3d8f5}
.mic-button.listening{background:#fdecef!important;color:#d6455d!important;animation:listen 1.2s ease-in-out infinite}
@keyframes listen{0%,100%{box-shadow:0 0 0 0 #d6455d55}50%{box-shadow:0 0 0 8px #d6455d00}}
.message.assistant{background:#ffffffe8;box-shadow:0 8px 30px #4a33880a}
.message.user{background:linear-gradient(135deg,#efe8fb,#e9f3fb)}
.message.thinking>div{background:linear-gradient(90deg,#9c8ab6 0%,#7757d8 40%,#22b8d6 50%,#9c8ab6 60%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 1.6s linear infinite}
.message.thinking .speaker:after{content:' ●●●';letter-spacing:2px;animation:pulse 1.2s ease-in-out infinite}
@keyframes shimmer{to{background-position:-250% 0}}
@keyframes pulse{50%{opacity:.25}}
.suggestion-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px;white-space:normal}
.suggestion-row button,.prompt-chips button{border:1px solid #e1d6f4;background:#faf7ff;color:#6e54a8;border-radius:20px;padding:8px 13px;font-size:11px;transition:transform .2s,box-shadow .2s,border-color .2s}
.suggestion-row button:hover,.prompt-chips button:hover{transform:translateY(-2px);border-color:#b9a2e6;box-shadow:0 6px 18px #7757d81f}
.understood-panel{padding:16px;background:#ffffffd9;border:1px solid var(--line);border-radius:14px}
.understood-panel h3{font-size:11px;font-weight:600;margin-bottom:12px}
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chip{display:inline-flex;align-items:baseline;gap:6px;padding:7px 11px;border-radius:20px;background:linear-gradient(135deg,#f3eeff,#ecf7fc);border:1px solid #e3daf5;font-size:11px;color:#4f3f74;line-height:1.4}
.chip small{font-size:8px;letter-spacing:1px;text-transform:uppercase;color:#9a8bb8}
.chip.assumed{background:#fffaf0;border:1px dashed #e0bf86;color:#7c5a24}
.chip.ghost{background:none;border:1px dashed #e0d8ec;color:#a79db5;font-size:10px;line-height:1.6;border-radius:10px}
.adjust{margin-top:12px}.adjust summary{cursor:pointer;font-size:10px;color:#8f76b0}
.adjust .requirements{border:0;padding:14px 0 0;background:none}
.quote-card{position:relative;transition:transform .2s,box-shadow .2s}
.quote-card:hover{transform:translateY(-2px);box-shadow:0 12px 34px #4a33881a}
.quote-card.best-match{border:1px solid transparent;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(135deg,#8b5cf6,#22b8d6,#d66bd1) border-box;box-shadow:0 10px 40px #8b5cf622}
.best-badge{position:absolute;top:-10px;right:14px;font-size:8px;letter-spacing:1.4px;font-weight:700;color:#fff;padding:5px 9px;border-radius:12px;background:linear-gradient(90deg,#7757d8,#22b8d6)}
.reasons{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.reason{font-size:9px;padding:4px 8px;border-radius:10px}
.reason.ok{background:#eaf6f0;color:#2e7a62}.reason.gap{background:#fff3e3;color:#9b6c32}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* ── Motion ── (all disabled by the prefers-reduced-motion rule above) */
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes slide-in-right{from{opacity:0;transform:translateX(18px)}to{opacity:1;transform:none}}
@keyframes pop{0%{opacity:0;transform:scale(.8)}60%{opacity:1;transform:scale(1.05)}100%{transform:none}}
@keyframes flash{0%{box-shadow:0 0 0 0 #8b5cf670;border-color:#a78bfa}100%{box-shadow:0 0 0 9px #8b5cf600}}
@keyframes border-flow{to{background-position:0 0,300% 0}}
@keyframes breathe{50%{box-shadow:0 0 46px #8b5cf690,0 0 90px #22b8d650}}
@keyframes drift{0%{transform:translate3d(0,0,0) rotate(0)}50%{transform:translate3d(3%,-2%,0) rotate(4deg)}100%{transform:translate3d(-2%,3%,0) rotate(-3deg)}}
@keyframes sheen{from{transform:translateX(-120%) skewX(-20deg)}to{transform:translateX(220%) skewX(-20deg)}}
@keyframes fade{from{opacity:0}}
body:before{content:'';position:fixed;inset:-15%;z-index:-1;pointer-events:none;background:radial-gradient(500px 340px at 78% 18%,#d9c8ff66,transparent 70%),radial-gradient(460px 320px at 15% 80%,#bfeaf766,transparent 70%),radial-gradient(380px 260px at 55% 55%,#f6d5f455,transparent 70%);animation:drift 26s ease-in-out infinite alternate}
.welcome>*{animation:rise .7s cubic-bezier(.2,.8,.2,1) both}
.welcome>:nth-child(2){animation-delay:.08s}.welcome>:nth-child(3){animation-delay:.16s}.welcome>:nth-child(4){animation-delay:.24s}.welcome>:nth-child(5){animation-delay:.32s}.welcome>:nth-child(6){animation-delay:.4s}
.suggestions button{animation:rise .6s cubic-bezier(.2,.8,.2,1) both}
.suggestions button:nth-child(1){animation-delay:.4s}.suggestions button:nth-child(2){animation-delay:.5s}.suggestions button:nth-child(3){animation-delay:.6s}
.ai-orb.large{animation:orb-spin 6s linear infinite,breathe 3.6s ease-in-out infinite}
.ai-orb.busy{animation:orb-spin 1.2s linear infinite,breathe 1.2s ease-in-out infinite}
.message{animation:rise .45s cubic-bezier(.2,.8,.2,1) both}
.message.user{animation-name:slide-in-right}
.suggestion-row button,.prompt-chips button{animation:pop .4s both;animation-delay:calc(.25s + var(--i,0) * 70ms)}
.chip{animation:pop .4s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i,0) * 45ms)}
.chip.fresh{animation:pop .4s cubic-bezier(.2,.8,.2,1) both,flash 1.3s .35s ease-out}
.quote-card{animation:rise .55s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i,0) * 110ms)}
.quote-card.best-match{background:linear-gradient(#fff,#fff) padding-box,linear-gradient(90deg,#8b5cf6,#22b8d6,#d66bd1,#8b5cf6) border-box;background-size:100% 100%,300% 100%;animation:rise .55s cubic-bezier(.2,.8,.2,1) both,border-flow 5s linear infinite}
.best-badge{background:linear-gradient(90deg,#7757d8,#22b8d6,#7757d8);background-size:200% 100%;animation:pop .5s .35s both,border-flow 3s linear infinite}
.reason{animation:pop .35s both;animation-delay:calc(.3s + var(--i,0) * 80ms)}
.primary-button,.composer-actions button{position:relative;overflow:hidden;transition:transform .15s,box-shadow .2s,background .2s}
.primary-button:hover{transform:translateY(-1px);box-shadow:0 8px 22px #7757d840}
.primary-button:after{content:'';position:absolute;top:0;bottom:0;width:40%;background:linear-gradient(90deg,transparent,#ffffff55,transparent);transform:translateX(-120%) skewX(-20deg)}
.primary-button:hover:after{animation:sheen .8s ease}
.primary-button:active,.composer-actions button:active{transform:scale(.94)}
dialog[open]{animation:pop .35s cubic-bezier(.2,.8,.2,1)}
dialog[open]::backdrop{animation:fade .3s}
.warning{animation:rise .4s both}

/* ── Live mascot ── */
.mascot{display:block;overflow:visible;cursor:pointer;filter:drop-shadow(0 10px 16px #5a3fa030)}
.mascot g,.mascot ellipse,.mascot circle,.mascot path,.mascot text{transform-box:fill-box;transform-origin:center}
.m-shadow{fill:#5a3fa024;animation:m-shadow 3.2s ease-in-out infinite}
.m-float{animation:m-float 3.2s ease-in-out infinite}
.m-head{transform-origin:50% 100%;transition:transform .4s cubic-bezier(.2,.8,.2,1)}
.m-eyes{animation:m-blink 4.6s infinite;transition:opacity .2s}
.m-eye{fill:#8ef0ff;filter:drop-shadow(0 0 3px #5ee1ff)}
.m-pupils{transition:transform .18s ease-out}
.m-happy-eyes{opacity:0;transition:opacity .2s}
.m-arc{fill:none;stroke:#8ef0ff;stroke-width:3.5;stroke-linecap:round}
.m-mouth{fill:none;stroke:#8ef0ff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.m-cheek{fill:#ff8fc8;opacity:0;transition:opacity .3s}
.m-antenna{animation:m-glow 2s ease-in-out infinite}
.m-pulse{fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:60;animation:m-ecg 2.2s linear infinite}
.m-arm{transform-origin:50% 8%!important}
.m-arm-left{animation:m-sway 3.2s ease-in-out infinite}
.m-arm-right{animation:m-sway-r 3.2s ease-in-out infinite}
.m-thoughts,.m-sparkles,.m-question{opacity:0;transition:opacity .3s}
.m-dot{fill:#a78bfa}
.m-question{font:800 24px system-ui,sans-serif;fill:#7c5ce0}
.m-spark{fill:#ffcf5c}
@keyframes m-float{50%{transform:translateY(-7px)}}
@keyframes m-shadow{50%{transform:scaleX(.8);opacity:.55}}
@keyframes m-blink{0%,93%,100%{transform:scaleY(1)}96%{transform:scaleY(.08)}}
@keyframes m-glow{50%{opacity:.5;transform:scale(.78)}}
@keyframes m-ecg{from{stroke-dashoffset:60}to{stroke-dashoffset:-60}}
@keyframes m-sway{50%{transform:rotate(7deg)}}
@keyframes m-sway-r{50%{transform:rotate(-7deg)}}
@keyframes m-nod{50%{transform:rotate(-6deg) translateY(1px)}}
@keyframes m-ponder{50%{transform:rotate(5deg)}}
@keyframes m-hop{0%,60%,100%{transform:translateY(0);opacity:.5}30%{transform:translateY(-7px);opacity:1}}
@keyframes m-bob{50%{transform:translateY(-4px) rotate(10deg)}}
@keyframes m-jump{0%,100%{transform:translateY(0)}40%{transform:translateY(-14px)}}
@keyframes m-wave{0%,100%{transform:rotate(-140deg)}50%{transform:rotate(-175deg)}}
@keyframes m-twinkle{0%,100%{transform:scale(.3);opacity:0}50%{transform:scale(1.15);opacity:1}}
.mascot.listening .m-head{animation:m-nod 1s ease-in-out infinite}
.mascot.listening .m-cheek{opacity:.6}
.mascot.listening .m-antenna{animation-duration:.7s}
.mascot.thinking .m-thoughts{opacity:1}
.mascot.thinking .m-dot{animation:m-hop .9s ease-in-out infinite}
.mascot.thinking .m-dot-1{animation-delay:.15s}.mascot.thinking .m-dot-2{animation-delay:.3s}
.mascot.thinking .m-head{animation:m-ponder 1.8s ease-in-out infinite}
.mascot.thinking .m-antenna{animation-duration:.35s}
.mascot.thinking .m-pulse{animation-duration:.8s}
.mascot.asking .m-head{transform:rotate(-10deg)}
.mascot.asking .m-question{opacity:1;animation:m-bob 1.1s ease-in-out infinite}
.mascot.happy .m-eyes{opacity:0}
.mascot.happy .m-happy-eyes{opacity:1}
.mascot.happy .m-cheek{opacity:.9}
.mascot.happy .m-mouth{fill:#8ef0ff40}
.mascot.happy .m-float{animation:m-jump .7s ease-in-out infinite}
.mascot.happy .m-arm-right{animation:m-wave .45s ease-in-out infinite}
.mascot.happy .m-sparkles{opacity:1}
.mascot.happy .m-spark{animation:m-twinkle 1s ease-in-out infinite}
.mascot.happy .m-spark-1{animation-delay:.2s}.mascot.happy .m-spark-2{animation-delay:.4s}.mascot.happy .m-spark-3{animation-delay:.6s}.mascot.happy .m-spark-4{animation-delay:.8s}
.mascot.sad .m-head{transform:translateY(3px) rotate(5deg)}
.mascot.sad .m-eye{fill:#a9bde0;filter:none}
.mascot.sad .m-antenna{animation:none;opacity:.35}
.mascot.sad .m-float{animation-duration:5s}
.mascot-slot{flex-shrink:0;width:104px}
.mascot-slot.large{width:120px;margin:0 auto 6px}
.mascot-bubble{position:relative;display:inline-block;margin-top:12px;padding:9px 14px;border-radius:14px;background:#fff;border:1px solid #e4dbf6;color:#5b4891;font-size:12px;line-height:1.5;box-shadow:0 8px 24px #5a3fa014;max-width:520px;text-align:left}
.mascot-bubble:empty{display:none}
.mascot-bubble:before{content:'';position:absolute;left:-7px;top:13px;width:12px;height:12px;background:#fff;border-left:1px solid #e4dbf6;border-bottom:1px solid #e4dbf6;transform:rotate(45deg)}
.mascot-bubble.center{margin:4px 0 22px}
.mascot-bubble.center:before{left:50%;top:-7px;margin-left:-6px;transform:rotate(135deg)}
.mascot-bubble.show{animation:pop .35s cubic-bezier(.2,.8,.2,1)}
.topbar-right{display:flex;align-items:center;gap:12px}
.mini-mascot{width:40px;height:47px}

/* ── Diagrams ── */
.visual-panel h2{margin:8px 0 20px}
.visual-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:28px;margin-top:26px}
.visual-grid h3{font-size:13px;margin:0 0 12px;color:#5b4891}
.flow{display:flex;align-items:center}
.flow-node{flex:1;min-width:0;text-align:center;padding:16px 10px;border-radius:14px;background:linear-gradient(135deg,#f5f0ff,#ebf8fc);border:1px solid #e4dbf6;animation:pop .5s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(var(--i,0) * .18s)}
.flow-icon{display:block;font-size:20px;color:#7c5ce0}
.flow-node strong{display:block;font-size:26px;font-weight:600;color:#3d2f6b;margin:4px 0}
.flow-node small{font-size:10px;color:#8a7a9c}
.flow-link{flex:0 0 38px;height:3px;position:relative;background:repeating-linear-gradient(90deg,#a78bfa 0 6px,transparent 6px 12px);background-size:24px 3px;animation:march .6s linear infinite}
.flow-link:after{content:'';position:absolute;right:-4px;top:-4px;border:5.5px solid transparent;border-left-color:#a78bfa}
@keyframes march{to{background-position:24px 0}}
.floor-plans{display:flex;flex-wrap:wrap;gap:12px}
.floor-plan{flex:1 1 240px;margin:0}
.floor-plan svg{width:100%;height:auto;display:block}
.fp-grid{fill:#fbf9ff;stroke:#eee8f7}
.fp-room{fill:#fff;stroke:#7c5ce0;stroke-width:2.5;stroke-dasharray:1400;animation:fp-draw 1.3s ease-out both}
@keyframes fp-draw{from{stroke-dashoffset:1400;fill-opacity:0}}
.fp-minimum{fill:none;stroke:#3fb28a;stroke-width:1.5;stroke-dasharray:5 4;animation:fade .8s 1s both}
.fp-minimum.short{stroke:#e0894a}
.fp-door{fill:none;stroke:#b4a6d4;stroke-width:1.5}
.fp-station{animation:pop .35s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(.9s + var(--i,0) * 45ms)}
.fp-desk{fill:#ece5fb;stroke:#9d86de;stroke-width:1}
.fp-seat{fill:#22b8d6}
.floor-plan figcaption{font-size:11px;color:#8a7a9c;margin-top:6px;text-align:center}
.fp-legend{flex-basis:100%;display:flex;gap:8px;align-items:center;font-size:10px;color:#8a7a9c;margin:2px 0 0}
.fp-legend i{width:18px;height:10px;border:1.5px dashed #3fb28a;border-radius:3px;flex-shrink:0}
.cost{display:grid;grid-template-columns:160px 1fr;gap:18px;align-items:center}
.donut-wrap{position:relative;width:160px;height:160px}
.donut{width:160px;height:160px;transform:rotate(-90deg)}
.donut-track{fill:none;stroke:#f0ebf8;stroke-width:18}
.donut-seg{fill:none;stroke-width:18;animation:donut-in 1s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(.3s + var(--i,0) * .14s)}
@keyframes donut-in{from{stroke-dasharray:0 var(--c)}}
.donut-center{position:absolute;inset:0;display:grid;place-content:center;text-align:center}
.donut-center strong{font-size:15px;color:#3d2f6b}
.donut-center small{font-size:9px;color:#9a8bb8}
.cost-legend{list-style:none;padding:0;margin:0;font-size:11px}
.cost-legend li{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid #f1ecf7;animation:rise .4s both;animation-delay:calc(.4s + var(--i,0) * 70ms)}
.cost-legend i{width:10px;height:10px;border-radius:3px;flex-shrink:0}
.cost-legend span{flex:1;min-width:0;color:#5d5170}
.cost-legend b{color:#3d2f6b;font-weight:600}
.cost .budget-bar{grid-column:1/-1}
.budget-bar{margin:12px 0}
.budget-track{position:relative;height:9px;border-radius:9px;background:#f0ebf8}
.budget-fill{height:100%;width:0;border-radius:9px;background:linear-gradient(90deg,#7c5ce0,#22b8d6);transition:width 1.1s cubic-bezier(.2,.8,.2,1) .25s}
.budget-fill.over{background:linear-gradient(90deg,#f2a541,#e5677d)}
.budget-marker{position:absolute;top:-4px;width:2px;height:17px;margin-left:-1px;background:#3d2f6b;border-radius:2px}
.budget-bar small{display:block;font-size:10px;color:#8a7a9c;margin-top:6px}
@media(max-width:700px){.visual-grid{grid-template-columns:1fr}.flow{flex-wrap:wrap;gap:8px}.flow-link{display:none}.flow-node{flex:1 1 40%}.cost{grid-template-columns:1fr;justify-items:center}.mascot-slot{width:80px}}
.shop-link{display:inline-block;font-size:10px;margin-top:4px;color:#6e54a8}
.sync-status p{margin:4px 0;font-size:12px}
.sync-warnings{font-size:12px;color:#8a6a2c;line-height:1.7;padding-left:18px}
