:root{--ink: #1a1410;--paper: #fbf7f0;--ember: #e8743b;--ember-deep: #c9402f;--gold: #ffd27a;--bot-bg: rgba(255, 255, 255, .92);--user-bg: #2a2018;--shadow: 0 18px 50px rgba(20, 12, 6, .28);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:#14100c;color:var(--ink)}.map-bg{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;z-index:0;pointer-events:none;background:radial-gradient(circle at 30% 20%,#221913,#0e0a07 70%)}.map-bg__image{position:absolute;top:-6%;right:-6%;bottom:-6%;left:-6%;background:url(/district-map.png) center/cover no-repeat;filter:grayscale(.4) sepia(.5) brightness(.5) contrast(1.05);opacity:.26;mix-blend-mode:luminosity;animation:drift 48s ease-in-out infinite alternate}.map-bg__veil{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 70% 80%,rgba(232,116,59,.12),transparent 55%),linear-gradient(160deg,#0e0a0733,#0e0a07bf)}.map-bg__svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.district-fill{fill:#e8743b0f;stroke:none;animation:fillPulse 9s ease-in-out infinite}.district-stroke{fill:none;stroke:url(#boundaryGrad);stroke-width:3.5;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:4200;stroke-dashoffset:4200;animation:drawOn 4.5s ease-out forwards,strokePulse 6s ease-in-out 4.5s infinite}.map-bg__motes{position:absolute;top:0;right:0;bottom:0;left:0}.mote{position:absolute;border-radius:50%;background:var(--gold);box-shadow:0 0 8px 2px #ffd27ab3;opacity:0;animation-name:floatMote;animation-iteration-count:infinite;animation-timing-function:ease-in-out}@keyframes drawOn{to{stroke-dashoffset:0}}@keyframes strokePulse{0%,to{opacity:.85}50%{opacity:.45}}@keyframes fillPulse{0%,to{opacity:.5}50%{opacity:1}}@keyframes drift{0%{transform:scale(1.05) translate(0)}to{transform:scale(1.12) translate(-2%,-2.5%)}}@keyframes floatMote{0%{opacity:0;transform:translateY(8px) scale(.8)}20%{opacity:.9}80%{opacity:.7}to{opacity:0;transform:translateY(-34px) scale(1.1)}}.app{position:relative;z-index:1;min-height:100%;display:flex;justify-content:center;align-items:flex-start;padding:clamp(16px,4vw,56px)}.app--embed{padding:0;background:transparent}.panel{position:relative;z-index:1;width:100%;max-width:720px;display:flex;flex-direction:column;gap:22px}.hero{text-align:center;color:var(--paper);padding-top:12px}.hero__eyebrow{letter-spacing:.18em;text-transform:uppercase;font-size:12px;color:var(--gold);opacity:.9}.hero__title{font-size:clamp(30px,5vw,46px);margin:8px 0 10px;font-weight:800;color:#fff8ee;text-shadow:0 2px 6px rgba(0,0,0,.85),0 4px 28px rgba(0,0,0,.6)}.hero__sub{margin:0 auto;max-width:540px;line-height:1.55;color:#fff8eee0;text-shadow:0 1px 6px rgba(0,0,0,.7)}.chat{background:#fbf7f0f5;border-radius:20px;box-shadow:var(--shadow);padding:16px;display:flex;flex-direction:column;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.app--embed .chat{border-radius:0;min-height:100vh;box-shadow:none}.messages{flex:1;overflow-y:auto;max-height:56vh;min-height:280px;padding:6px 6px 2px;display:flex;flex-direction:column;gap:14px}.app--embed .messages{max-height:none;height:calc(100vh - 180px)}.bubble-row{display:flex;gap:10px;align-items:flex-end}.bubble-row.from-user{flex-direction:row-reverse}.bot-avatar{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;color:#fff;background:linear-gradient(135deg,var(--ember),var(--ember-deep));font-size:13px;box-shadow:0 4px 12px #c9402f66}.bubble{max-width:78%;padding:11px 15px;border-radius:16px;line-height:1.5;font-size:15px}.bubble p{margin:0 0 8px}.bubble p:last-child{margin-bottom:0}.bubble ul{margin:6px 0;padding-left:20px}.bubble li{margin:3px 0}.bubble a{color:var(--ember-deep);font-weight:600;text-decoration:underline;word-break:break-word}.bubble a:hover{color:var(--ember)}.bubble-bot{background:var(--bot-bg);color:var(--ink);border-bottom-left-radius:5px;box-shadow:0 2px 8px #0000000f}.bubble-user{background:var(--user-bg);color:var(--paper);border-bottom-right-radius:5px}.typing{display:flex;gap:5px;align-items:center}.typing span{width:7px;height:7px;border-radius:50%;background:var(--ember);opacity:.5;animation:blink 1.2s infinite}.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,to{opacity:.3;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}}.listening-hint{align-self:center;font-size:13px;color:var(--ember-deep);font-style:italic;padding:4px 0}.suggestions{display:flex;flex-wrap:wrap;gap:8px;padding:12px 4px 4px}.chip{border:1px solid rgba(201,64,47,.35);background:#fff;color:var(--ember-deep);padding:8px 13px;border-radius:999px;font-size:13.5px;cursor:pointer;transition:all .15s}.chip:hover:not(:disabled){background:var(--ember);color:#fff;border-color:var(--ember)}.chip:disabled{opacity:.5;cursor:default}.composer{display:flex;gap:8px;align-items:center;padding:12px 4px 4px}.composer input{flex:1;padding:12px 15px;border-radius:12px;border:1px solid #e3d9c9;font-size:15px;outline:none}.composer input:focus{border-color:var(--ember);box-shadow:0 0 0 3px #e8743b26}.mic{flex:none;width:44px;height:44px;border-radius:12px;border:1px solid #e3d9c9;background:#fff;font-size:18px;cursor:pointer;transition:all .15s}.mic--on{background:var(--ember-deep);color:#fff;border-color:var(--ember-deep);animation:pulseMic 1.2s infinite}@keyframes pulseMic{0%,to{box-shadow:0 0 #c9402f80}50%{box-shadow:0 0 0 7px #c9402f00}}.send{flex:none;padding:12px 20px;border-radius:12px;border:none;background:linear-gradient(135deg,var(--ember),var(--ember-deep));color:#fff;font-weight:700;font-size:15px;cursor:pointer}.send:disabled{opacity:.45;cursor:default}.disclaimer{font-size:11.5px;color:#8a7d6c;text-align:center;margin:12px 4px 2px;line-height:1.5}.talk-cta{display:flex;align-items:center;justify-content:center;gap:9px;margin:12px 4px 0;padding:13px 18px;border:none;border-radius:14px;background:linear-gradient(135deg,var(--ember),var(--ember-deep));color:#fff;font-size:15.5px;font-weight:700;cursor:pointer;box-shadow:0 8px 22px #c9402f59;transition:transform .12s,box-shadow .12s}.talk-cta:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 12px 28px #c9402f73}.talk-cta:disabled{opacity:.7;cursor:default}.talk-cta__icon{font-size:17px}.map-bg--voice-listening .district-stroke,.map-bg--voice-thinking .district-stroke,.map-bg--voice-speaking .district-stroke,.map-bg--voice-idle .district-stroke{stroke-width:5;animation:drawOn 4.5s ease-out forwards,voicePulse 1.8s ease-in-out infinite}.map-bg--voice-listening .district-stroke{animation:drawOn 4.5s ease-out forwards,voicePulse 1.3s ease-in-out infinite}.map-bg--voice-speaking .district-stroke{stroke-width:6.5;animation:drawOn 4.5s ease-out forwards,voicePulseStrong .7s ease-in-out infinite}.map-bg--voice-listening .district-fill,.map-bg--voice-speaking .district-fill{fill:#e8743b1f}.map-bg--voice-speaking .map-bg__veil,.map-bg--voice-listening .map-bg__veil{background:radial-gradient(circle at 50% 55%,rgba(232,116,59,.2),transparent 60%),linear-gradient(160deg,#0e0a0726,#0e0a07b3)}@keyframes voicePulse{0%,to{opacity:.6}50%{opacity:1}}@keyframes voicePulseStrong{0%,to{opacity:.55}50%{opacity:1}}.voice-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:clamp(20px,6vh,56px) 20px;background:radial-gradient(circle at 50% 45%,#140c0659,#0a0704d1);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fadeIn .25s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.voice-top{width:100%;display:flex;justify-content:center}.voice-pill{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:999px;background:#00000073;color:#fff8ee;font-size:14px;font-weight:600;border:1px solid rgba(255,210,122,.25)}.voice-dot{width:8px;height:8px;border-radius:50%;background:var(--gold);box-shadow:0 0 8px var(--gold);animation:blinkDot 1.4s infinite}.voice-pill--listening .voice-dot{background:#6ee7a8;box-shadow:0 0 8px #6ee7a8}.voice-pill--speaking .voice-dot{background:var(--ember);box-shadow:0 0 10px var(--ember);animation:blinkDot .6s infinite}.voice-pill--error .voice-dot{background:#ff7a6b;box-shadow:0 0 8px #ff7a6b;animation:none}@keyframes blinkDot{0%,to{opacity:.4}50%{opacity:1}}.voice-center{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;max-width:760px;width:100%}.voice-orb{width:120px;height:120px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:40px;background:radial-gradient(circle at 50% 40%,var(--ember),var(--ember-deep));box-shadow:0 0 50px 6px #e8743b80;transition:transform .2s}.voice-orb.is-listening{animation:orbListen 1.4s ease-in-out infinite;box-shadow:0 0 60px 10px #6ee7a873;background:radial-gradient(circle at 50% 40%,#2a2018,#1a1410)}.voice-orb.is-speaking{animation:orbSpeak .7s ease-in-out infinite}@keyframes orbListen{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}@keyframes orbSpeak{0%,to{transform:scale(1);box-shadow:0 0 50px 6px #e8743b80}50%{transform:scale(1.12);box-shadow:0 0 80px 16px #e8743bbf}}.voice-captions{text-align:center;min-height:120px;display:flex;flex-direction:column;gap:10px;justify-content:center}.cap{margin:0;line-height:1.4}.cap--user{color:#fff8eeb3;font-size:clamp(15px,2.4vw,19px)}.cap--agent{color:#fff8ee;font-size:clamp(20px,3.6vw,30px);font-weight:600;text-shadow:0 2px 16px rgba(0,0,0,.6)}.cap--hint{color:#fff8ee8c;font-size:16px;font-style:italic}.cap--error{color:#ffb4a6;font-size:15px}.voice-bottom{display:flex;flex-direction:column;align-items:center;gap:10px}.voice-end{display:inline-flex;align-items:center;gap:8px;padding:15px 34px;border:none;border-radius:999px;background:#fff;color:#c9402f;font-size:16px;font-weight:800;cursor:pointer;box-shadow:0 10px 30px #00000059}.voice-end__icon{font-size:13px}.voice-foot{color:#fff8ee80;font-size:12.5px;margin:0}@media(max-width:520px){.bubble{max-width:85%}.messages{max-height:60vh}.voice-orb{width:96px;height:96px;font-size:32px}.voice-end{padding:16px 40px;font-size:17px}}
