:root{--ink:#0B0A12;--ember:#FF6B1A;--gold:#FFC24B;--magenta:#FF2D95;--violet:#6D3BFF;--blue:#4FA8FF;--ok:#66d19e;--panel:rgba(255,255,255,.05);--line:rgba(255,255,255,.1)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{font-family:'Inter',system-ui,-apple-system,sans-serif;color:#f5f5f7;background:radial-gradient(120% 90% at 50% 6%,#1a1526 0%,#0B0A12 55%,#060509 100%);height:100dvh;display:flex;flex-direction:column;overflow:hidden}
button{font-family:inherit;cursor:pointer}
.header{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-bottom:1px solid var(--line);z-index:20}
.brand{font-weight:900;font-size:19px;letter-spacing:-.02em}
.brand .c{color:var(--ember)}.brand .f{color:var(--magenta)}
.tag{font-size:10px;text-transform:uppercase;letter-spacing:.2em;color:rgba(255,255,255,.4);margin-left:8px}
.hbtns{display:flex;align-items:center;gap:8px}
.rolechip{font-size:11px;text-transform:uppercase;letter-spacing:.12em;padding:5px 10px;border-radius:999px;border:1px solid var(--line);color:rgba(255,255,255,.6)}
.rolechip.admin{color:var(--gold);border-color:rgba(255,194,75,.5)}
.pill{display:flex;align-items:center;gap:6px;font-size:12px;padding:7px 12px;border-radius:999px;border:1px solid var(--line);color:rgba(255,255,255,.7);background:none;transition:.15s}
.pill:hover{border-color:rgba(255,255,255,.28)}
.pill.active{color:var(--blue);border-color:rgba(79,168,255,.5)}
.pill.gold.active{color:var(--gold);border-color:rgba(255,194,75,.5)}
.tabs{display:flex;gap:4px;overflow-x:auto;padding:8px 12px;border-bottom:1px solid var(--line);z-index:10}
.tab{white-space:nowrap;font-size:13px;padding:8px 14px;border-radius:999px;border:none;background:none;color:rgba(255,255,255,.55)}
.tab.on{background:var(--panel);color:#fff}
.panel{flex:1;overflow-y:auto;display:none;flex-direction:column}
.panel.on{display:flex}
.wrap{max-width:760px;width:100%;margin:0 auto;padding:16px 18px}
h2.h{font-size:20px;font-weight:900;letter-spacing:-.02em;margin:0 0 4px}
.muted{color:rgba(255,255,255,.55);font-size:13px;line-height:1.5}
.disclaim{font-size:12px;color:var(--gold);background:rgba(255,194,75,.08);border:1px solid rgba(255,194,75,.25);border-radius:10px;padding:10px 12px;margin:12px 0}
/* coach */
.stage{position:relative;height:150px;flex:0 0 auto}
#flame{width:100%;height:100%;display:block}
.status{position:absolute;left:0;right:0;bottom:6px;text-align:center;font-size:11px;text-transform:uppercase;letter-spacing:.3em;color:rgba(255,255,255,.5)}
.feed{flex:1;overflow-y:auto;padding:14px 18px;display:flex;flex-direction:column;gap:10px}
.welcome{max-width:460px;margin:2px auto 0;text-align:center}
.welcome h1{font-size:24px;font-weight:900;letter-spacing:-.02em;margin:0}
.welcome p{font-size:14px;color:rgba(255,255,255,.6);line-height:1.5;margin:8px 0 0}
.starters{display:flex;flex-direction:column;gap:8px;margin-top:18px}
.starter{text-align:left;font-size:14px;padding:10px 15px;border-radius:12px;background:var(--panel);border:1px solid rgba(255,255,255,.05);color:#f5f5f7;display:flex;align-items:center;gap:8px}
.starter:hover{background:rgba(255,255,255,.1)}.starter .d{color:var(--gold)}
.row{display:flex}.row.user{justify-content:flex-end}
.bubble{max-width:86%;padding:10px 15px;border-radius:18px;font-size:14px;line-height:1.55;white-space:pre-wrap;word-wrap:break-word}
.bubble.user{background:rgba(255,255,255,.1);border-bottom-right-radius:4px}
.bubble.blaze{background:linear-gradient(135deg,rgba(255,107,26,.14),rgba(255,45,149,.10));border:1px solid rgba(255,107,26,.2);border-bottom-left-radius:4px}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.chip{font-size:11px;padding:4px 9px;border-radius:999px;background:rgba(0,0,0,.3);border:1px solid var(--line);color:rgba(255,255,255,.7)}
.signals{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:10px}
.sig{background:rgba(0,0,0,.25);border:1px solid rgba(255,255,255,.06);border-radius:10px;padding:8px 10px;font-size:11px}
.sig .k{color:rgba(255,255,255,.45);text-transform:uppercase;letter-spacing:.08em;font-size:9px}
.sig .v{font-weight:600;margin-top:2px}.sig .v.ok{color:var(--ok)}.sig .v.warn{color:var(--gold)}.sig .v.bad{color:var(--magenta)}
.spinner{width:16px;height:16px;border:2px solid rgba(255,194,75,.3);border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.inputbar{padding:8px 14px 14px;border-top:1px solid var(--line)}
.attachrow{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.attach{display:flex;align-items:center;gap:6px;font-size:11px;padding:5px 9px;border-radius:8px;background:var(--panel);border:1px solid var(--line)}
.attach button{background:none;border:none;color:rgba(255,255,255,.5);font-size:13px;line-height:1}
.inputrow{display:flex;align-items:flex-end;gap:8px}
.circle{flex:0 0 auto;width:44px;height:44px;border-radius:999px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);background:var(--panel);color:#fff}
.circle.mic.live{background:var(--magenta);box-shadow:0 0 0 4px rgba(255,45,149,.25)}
.circle.send{background:linear-gradient(135deg,var(--ember),var(--magenta));border:none}
.circle:disabled{opacity:.35}
textarea,input[type=text],input[type=number],select{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:11px 14px;color:#fff;font-size:14px;font-family:inherit;outline:none;width:100%}
textarea{resize:none;max-height:120px}
textarea:focus,input:focus,select:focus{border-color:rgba(255,255,255,.28)}
textarea::placeholder,input::placeholder{color:rgba(255,255,255,.3)}
.hint{font-size:11px;color:rgba(255,255,255,.35);text-align:center;margin:8px 0 0}
/* generic tool + forms */
.card{background:var(--panel);border:1px solid rgba(255,255,255,.06);border-radius:16px;padding:16px;margin-bottom:14px}
.card h3{margin:0 0 4px;font-size:15px}
.card .sub{font-size:12px;color:rgba(255,255,255,.5);margin:0 0 12px}
.field{margin-bottom:10px}.field label{display:block;font-size:12px;color:rgba(255,255,255,.6);margin-bottom:5px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.btn{border:none;border-radius:12px;padding:11px 16px;font-size:14px;font-weight:600;color:#fff;background:linear-gradient(135deg,var(--ember),var(--magenta))}
.btn.ghost{background:var(--panel);border:1px solid var(--line);font-weight:500}
.btn:disabled{opacity:.4}
.btnrow{display:flex;gap:8px;flex-wrap:wrap}
.result{margin-top:12px;background:rgba(0,0,0,.28);border:1px solid var(--line);border-radius:12px;padding:14px;font-size:13px;line-height:1.55;white-space:pre-wrap;word-wrap:break-word}
.dropzone{border:1.5px dashed rgba(255,255,255,.2);border-radius:14px;padding:22px;text-align:center;color:rgba(255,255,255,.5);font-size:13px}
.dropzone.drag{border-color:var(--ember);color:#fff;background:rgba(255,107,26,.08)}
.tools-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.toolcard{text-align:left;background:var(--panel);border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:14px;color:#f5f5f7}
.toolcard:hover{background:rgba(255,255,255,.1)}
.toolcard .t{font-weight:600;font-size:14px}.toolcard .d{font-size:11px;color:rgba(255,255,255,.5);margin-top:3px;line-height:1.35}
.list .item{background:var(--panel);border:1px solid rgba(255,255,255,.06);border-radius:12px;padding:12px 14px;margin-bottom:8px;display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.item .n{font-weight:600;font-size:14px}.item .m{font-size:12px;color:rgba(255,255,255,.55);margin-top:3px;line-height:1.4}
.item .x{background:none;border:none;color:rgba(255,255,255,.4);font-size:16px}
.tasks .item{align-items:center}
.checkbox{width:18px;height:18px;border-radius:5px;border:1px solid var(--line);flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-size:12px}
.checkbox.done{background:var(--ok);border-color:var(--ok);color:#062}
.done-txt{text-decoration:line-through;opacity:.5}
.lock{max-width:420px;margin:40px auto;text-align:center}
.modal-wrap{position:fixed;inset:0;z-index:40;display:none;align-items:center;justify-content:center}
.modal-wrap.open{display:flex}
.scrim{position:absolute;inset:0;background:rgba(0,0,0,.65)}
.modal{position:relative;width:92%;max-width:420px;background:linear-gradient(180deg,#14101f,#0B0A12);border:1px solid rgba(255,107,26,.25);border-radius:16px;padding:20px}
.modal h3{margin:0 0 6px}
.toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:#1a1526;border:1px solid var(--line);border-radius:10px;padding:10px 16px;font-size:13px;z-index:50;opacity:0;transition:.2s;pointer-events:none}
.toast.show{opacity:1}
svg{display:block}
@media(max-width:520px){.grid2,.tools-grid{grid-template-columns:1fr}}

/* ---- flame layers (rain celebration hero) ----
   Teardrop = square with one sharp corner, rotated 45deg so the point faces up.
   Sizes are % of the container, so the same markup works at any scale. */
.flm{position:absolute;left:50%;pointer-events:none;transition:opacity .14s ease}
.flm-halo{bottom:0;width:105%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,var(--c-out) 0%,transparent 62%);filter:blur(14px);opacity:calc(var(--flick,1)*.5);transform:translateX(calc(-50% + var(--sway,0px)))}
.flm-outer{bottom:14%;width:46%;aspect-ratio:1;background:var(--c-base);border-radius:0 50% 50% 50%;filter:blur(3px);opacity:calc(var(--flick,1)*.92);animation:flmWob 1.3s ease-in-out infinite}
.flm-mid{bottom:16%;width:33%;aspect-ratio:1;background:var(--c-mid);border-radius:0 50% 50% 50%;filter:blur(1.5px);opacity:var(--flick,1);animation:flmWob .95s ease-in-out -.35s infinite}
.flm-core{bottom:18%;width:19%;aspect-ratio:1;background:radial-gradient(circle at 62% 62%,#fff 0%,var(--c-in) 75%);border-radius:0 50% 50% 50%;opacity:var(--flick,1);animation:flmWob .7s ease-in-out -.18s infinite}
@keyframes flmWob{
  0%,100%{transform:translateX(calc(-50% + var(--sway,0px))) rotate(45deg) scale(1)}
  30%{transform:translateX(calc(-50% + var(--sway,0px))) rotate(46.5deg) scale(1.05,.95)}
  60%{transform:translateX(calc(-50% + var(--sway,0px))) rotate(43.6deg) scale(.95,1.07)}
}

/* ---- My Work / milestones ---- */
.goalcard{background:var(--panel);border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:14px;margin-bottom:10px}
.goalhead{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.goalhead .n{font-weight:700;font-size:15px}
.goalhead .meta{font-size:11px;color:rgba(255,255,255,.45);margin-top:2px}
.progbar{height:6px;border-radius:999px;background:rgba(255,255,255,.1);margin:10px 0;overflow:hidden}
.progbar>span{display:block;height:100%;background:linear-gradient(90deg,var(--ember),var(--gold));transition:width .3s}
.ms{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-top:1px solid rgba(255,255,255,.05)}
.ms .cbx{width:20px;height:20px;border-radius:6px;border:1px solid var(--line);flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-size:13px;cursor:pointer;margin-top:1px}
.ms .cbx.done{background:var(--ok);border-color:var(--ok);color:#062}
.ms .mtxt .mt{font-size:14px}.ms .mtxt .md{font-size:12px;color:rgba(255,255,255,.5);margin-top:2px;line-height:1.4}
.ms .mtxt.done .mt{text-decoration:line-through;opacity:.5}
.goalfoot{display:flex;gap:8px;margin-top:10px}
.goalfoot .link{background:none;border:none;color:rgba(255,255,255,.5);font-size:12px;cursor:pointer;padding:0}
.goalfoot .link:hover{color:#fff}

/* ---- Proposal (inline preview) ---- */
.proposal{background:#faf7f2;color:#1a1a1a;border-radius:14px;overflow:hidden;margin-top:12px;border:1px solid rgba(0,0,0,.1)}
.propcover{background:linear-gradient(135deg,#0B0A12,#2a1330);color:#fff;padding:32px 24px;text-align:center}
.propbrand{font-weight:900;font-size:20px;letter-spacing:-.02em;margin-bottom:14px}
.propbrand .c{color:var(--ember)}.propbrand .f{color:var(--magenta)}
.proptitle{font-size:26px;font-weight:800}
.propsub{font-size:16px;opacity:.85;margin-top:2px}
.propmeta{font-size:11px;letter-spacing:.15em;text-transform:uppercase;opacity:.6;margin-top:12px}
.propbody{padding:22px 24px;font-size:14px;line-height:1.6}
.propbody h2{font-size:19px;color:#0B0A12;border-bottom:2px solid var(--ember);padding-bottom:5px;margin:22px 0 10px}
.propbody h3{font-size:15px;color:#B23A00;margin:16px 0 6px}
.propbody ul{padding-left:20px;margin:8px 0}.propbody li{margin:4px 0}
.propbody table{border-collapse:collapse;width:100%;margin:12px 0;font-size:13px}
.propbody th,.propbody td{border:1px solid #ddd;padding:7px 9px;text-align:left}.propbody th{background:#f0e7dc}
.propbody input[type=checkbox]{margin-right:6px}
.propbody p{margin:8px 0}
.propbody a{color:#B23A00}

/* ---- Boot / load screen ---- */
#boot{position:fixed;inset:0;z-index:9999;background:#05070d;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;transition:opacity .6s ease;overflow:hidden}
#boot.hide{opacity:0;pointer-events:none}
#boot .barwrap{width:min(90vw,420px);margin-top:26px;height:6px;border-radius:999px;background:rgba(125,231,255,.12);overflow:hidden}
#boot .bar{height:100%;width:0;background:linear-gradient(90deg,#FF7A1A,#FFC24B,#4FC3FF);animation:bootbar 2s cubic-bezier(.4,.1,.2,1) forwards}
@keyframes bootbar{0%{width:0}70%{width:88%}100%{width:100%}}
#boot .bootlabel{margin-top:14px;font-family:system-ui,sans-serif;font-size:12px;letter-spacing:.35em;text-transform:uppercase;color:#7DE7FF;opacity:.85}
#boot .skip{position:absolute;bottom:22px;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:rgba(180,220,255,.4)}

/* ---- Make it rain celebration ---- */
#rain{position:fixed;inset:0;z-index:9000;pointer-events:none;display:none;overflow:hidden}
#rain.on{display:block}
#rain .hero{position:absolute;bottom:0;left:50%;width:min(56vw,240px);height:min(46vh,360px);--c-base:#FF8A00;--c-mid:#FFC24B;--c-in:#FFF6D9;--c-out:rgba(255,160,50,.6);animation:rainhero .6s cubic-bezier(.2,1.3,.4,1),heroCheer 1s .6s ease-in-out infinite,heroFlick .26s ease-in-out infinite}
@keyframes heroFlick{0%,100%{filter:brightness(1)}50%{filter:brightness(1.22)}}
@keyframes heroCheer{0%,100%{transform:translateX(-50%) translateY(0) rotate(-2.5deg)}50%{transform:translateX(-50%) translateY(-14px) rotate(2.5deg)}}
#rain .banner{position:absolute;top:15%;left:50%;transform:translateX(-50%);text-align:center;animation:rainpop .5s cubic-bezier(.2,1.5,.5,1)}
#rain .banner .t{font-size:30px;font-weight:900;letter-spacing:-.01em;background:linear-gradient(90deg,#FFC24B,#FF7A1A,#FF2D95);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 2px 10px rgba(255,120,30,.5))}
#rain .banner .s{font-size:13px;color:#eaf4ff;opacity:.85;margin-top:4px}
@keyframes rainpop{from{opacity:0;transform:translateX(-50%) scale(.7)}to{opacity:1;transform:translateX(-50%) scale(1)}}
@keyframes rainhero{from{opacity:0;transform:translateX(-50%) translateY(34px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}
.bill{position:absolute;top:-44px;width:34px;height:20px;border-radius:3px;background:linear-gradient(135deg,#2e7d32,#4caf50);border:1px solid rgba(255,255,255,.4);display:flex;align-items:center;justify-content:center;color:#eaffea;font-size:11px;font-weight:800;box-shadow:0 2px 6px rgba(0,0,0,.35);will-change:transform}
@keyframes billfall{to{transform:translateY(112vh) rotate(var(--r,360deg))}}
