*{box-sizing:border-box;margin:0;padding:0}:root{--bg: #120d0a;--bg2: #1e1510;--raised: #2a1d15;--accent: #e3a857;--accent2: #ff6bb5;--text: #f4ede4;--text-dim: #9c8d80;--danger: #ff4d5e;--success: #3ddc97;--amber: #ffb020;--line-gold: rgba(227, 168, 87, .26);--line-soft: rgba(244, 237, 228, .08);--glow-pink: rgba(255, 107, 181, .45);--glow-gold: rgba(227, 168, 87, .4);--r-sm: 8px;--r-md: 12px;--r-lg: 20px;--header-h: 52px;--panel-w: 380px}html,body{height:100%;width:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,sans-serif;font-size:15px}#app-header{position:fixed;top:0;left:0;right:0;height:var(--header-h);background:#120d0aeb;backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:space-between;padding:0 12px;z-index:100;border-bottom:1px solid var(--line-gold)}.header-left,.header-right{flex:1}.header-right{display:flex;justify-content:flex-end}.header-center{display:flex;align-items:center;gap:8px}.app-title{font-size:20px;font-weight:600;color:var(--accent);letter-spacing:3px}.status-dot{width:9px;height:9px;border-radius:50%;display:inline-block}.status-dot.idle{background:var(--text-dim)}.status-dot.listening{background:var(--accent2);box-shadow:0 0 8px var(--glow-pink);animation:pulse 1s infinite}.status-dot.speaking{background:var(--accent);box-shadow:0 0 8px var(--glow-gold);animation:pulse .6s infinite}.status-dot.thinking{background:var(--amber);animation:pulse 1.2s infinite}.status-dot.error{background:var(--danger)}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.3)}}.mic-control{position:relative;width:clamp(132px,32vw,240px)}#mic-select{width:100%;background:#ffffff12;border:1px solid var(--line-soft);color:var(--text);border-radius:var(--r-sm);padding:4px 30px 4px 10px;font-size:12px;height:36px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#mic-select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.mic-control:not(.is-ready) #mic-select{color:#f5bd76;border-color:#e3a8577a;background:#e3a8571a;cursor:not-allowed;opacity:1}.mic-hint{position:absolute;top:calc(100% + 8px);left:0;width:max-content;max-width:min(320px,calc(100vw - 24px));padding:8px 10px;border:1px solid rgba(227,168,87,.4);border-radius:var(--r-sm);background:#1e1510fa;color:#f5bd76;font-size:12px;line-height:1.45;box-shadow:0 8px 24px #00000052;z-index:2}.mic-hint.hidden{display:none}#app-main{position:fixed;top:var(--header-h);left:0;right:0;bottom:0;display:flex}#stage{position:relative;flex:1;min-width:0}#side-panel{width:var(--panel-w);flex-shrink:0;display:flex;flex-direction:column;background:#120d0aeb;border-left:1px solid var(--line-gold)}#status-strip{padding:8px 14px;font-size:13px;text-align:center;border-bottom:1px solid var(--line-soft)}#status-strip.hidden{display:none}#status-strip.danger{background:#ff4d5e29;color:#ffa3ac}#status-strip.success{background:#3ddc9721;color:var(--success)}#canvas-wrap{position:absolute;inset:0;background:radial-gradient(ellipse 70% 50% at 50% 40%,rgba(227,168,87,.13),transparent 70%),linear-gradient(180deg,#120d0a,#2b1a10 60%,#120d0a)}#btn-menu{position:absolute;left:16px;bottom:64px;z-index:50;background:#120d0ad9;border:1px solid rgba(227,168,87,.5);color:var(--accent);border-radius:9999px;padding:10px 20px;font-size:15px;font-weight:600;cursor:pointer;min-height:44px;transition:transform .1s ease-out}#btn-menu:active{transform:scale(.96)}#three-canvas{width:100%!important;height:100%!important;display:block}#loading-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:var(--bg);z-index:10;transition:opacity .5s ease-in}#loading-overlay.hidden{opacity:0;pointer-events:none}.loading-spinner{width:40px;height:40px;border:3px solid rgba(227,168,87,.2);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{color:var(--text-dim);font-size:14px}.overlay{position:fixed;z-index:200;transition:opacity .25s ease-out,transform .25s ease-out}.overlay.hidden{opacity:0;pointer-events:none;transform:translateY(10px);transition-timing-function:ease-in}#rec-overlay{position:absolute;left:16px;bottom:116px;top:16px;width:300px;background:#120d0af5;border:1px solid var(--line-gold);border-radius:var(--r-lg);padding:14px;display:flex;flex-direction:column}.rec-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;color:var(--accent);font-size:14px;font-weight:600;letter-spacing:1px}.rec-cards{display:flex;flex-direction:column;gap:10px;overflow-y:auto;flex:1;padding-bottom:4px;scrollbar-width:thin}.drink-card{flex-shrink:0;background:var(--bg2);border:1px solid rgba(227,168,87,.22);border-radius:var(--r-md);padding:12px;display:flex;flex-direction:column;gap:4px}.drink-card .drink-name{font-weight:600;font-size:18px;color:var(--text)}.drink-card .drink-cat{font-size:11px;color:var(--text-dim);letter-spacing:1px}.drink-card .drink-desc{font-size:13px;color:var(--text-dim);line-height:1.5;flex:1}.drink-card .drink-price{font-size:15px;color:var(--accent);font-weight:600}.drink-card .order-btn{margin-top:8px;background:linear-gradient(180deg,#eab263,#cf8f3f);color:#23150a;border:none;border-radius:var(--r-sm);padding:9px;font-size:14px;font-weight:600;cursor:pointer;min-height:40px;transition:transform .1s ease-out,filter .1s ease-out}.drink-card .order-btn:active{transform:scale(.97);filter:brightness(.9)}#tarot-overlay{inset:0;background:#0e0805f5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:20px}#tarot-card-wrap{perspective:1000px}.tarot-card{width:160px;height:270px;position:relative;transform-style:preserve-3d;transition:transform .8s cubic-bezier(.4,0,.2,1);cursor:pointer}.tarot-card.flipped{transform:rotateY(180deg)}.tarot-front,.tarot-back{position:absolute;inset:0;backface-visibility:hidden;border-radius:10px;overflow:hidden}.tarot-front svg{width:100%;height:100%}.tarot-back{transform:rotateY(180deg);background:var(--bg2);border:2px solid var(--accent);display:flex;flex-direction:column;align-items:center;padding:12px 10px;gap:6px}#tarot-svg-wrap svg{width:80px;height:80px}#tarot-name{font-size:18px;font-weight:700;color:var(--accent);text-align:center}#tarot-position{font-size:12px;color:var(--accent2)}#tarot-meaning{font-size:12px;color:var(--text);text-align:center;line-height:1.5}#chat-log{flex:1;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:8px;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.1) transparent}.chat-msg{max-width:85%;padding:9px 13px;border-radius:14px;font-size:14px;line-height:1.55;word-break:break-word}.chat-msg.user{align-self:flex-end;background:#ff6bb526;border:1px solid rgba(255,107,181,.35);color:#ffe3f1;border-bottom-right-radius:4px}.chat-msg.assistant{align-self:flex-start;background:var(--bg2);color:var(--text);border-bottom-left-radius:4px;border:1px solid var(--line-soft)}.chat-msg.partial{opacity:.55;font-style:italic}.chat-msg.system{align-self:center;background:transparent;color:var(--text-dim);font-size:11px;font-style:italic}#chat-input-row{display:flex;align-items:center;gap:8px;padding:8px 12px;border-top:1px solid var(--line-soft)}#text-input{flex:1;background:#ffffff0f;border:1px solid var(--line-soft);border-radius:9999px;color:var(--text);padding:10px 16px;font-size:15px;min-height:44px;outline:none;transition:border-color .15s ease-out,box-shadow .15s ease-out}#text-input:focus{border-color:#ff6bb58c;box-shadow:0 0 0 3px #ff6bb51f}#text-input::placeholder{color:var(--text-dim)}.mic-btn{width:48px;height:48px;border-radius:50%;border:none;background:var(--accent2);font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s ease-out,transform .1s ease-out;flex-shrink:0}.mic-btn.active{animation:mic-glow 1s ease-in-out infinite}.mic-btn:active{transform:scale(.92)}.mic-btn:disabled{opacity:.42;cursor:not-allowed}@keyframes mic-glow{0%,to{box-shadow:0 0 6px 2px var(--glow-pink)}50%{box-shadow:0 0 18px 7px var(--glow-pink)}}#test-panel{position:fixed;bottom:0;left:0;right:var(--panel-w);background:#0e0906fa;border-top:1px solid var(--line-gold);z-index:150;max-height:60vh;overflow-y:auto}#test-panel summary{padding:10px 16px;cursor:pointer;font-size:12px;color:var(--text-dim);user-select:none;list-style:none;display:flex;align-items:center;gap:6px;height:48px}#test-panel summary:before{content:"▶";font-size:10px;transition:transform .2s}#test-panel[open] summary:before{transform:rotate(90deg)}.test-panel-inner{padding:8px 16px 16px;display:flex;flex-direction:column;gap:12px}.test-section{display:flex;flex-direction:column;gap:6px}.test-section label{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:1px}.test-row{display:flex;gap:8px;flex-wrap:wrap}#system-prompt-editor{background:#ffffff0d;border:1px solid var(--line-soft);border-radius:var(--r-sm);color:var(--text);padding:8px;font-size:12px;resize:vertical;font-family:monospace;width:100%}.icon-btn{background:transparent;border:none;color:var(--text-dim);font-size:18px;cursor:pointer;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:var(--r-sm)}.icon-btn:hover{background:#ffffff12;color:var(--text)}.btn-small{background:#ffffff12;border:1px solid var(--line-soft);color:var(--text);border-radius:var(--r-sm);padding:8px 12px;font-size:12px;cursor:pointer;min-height:36px;white-space:nowrap;transition:transform .1s ease-out,background .15s ease-out}.btn-small:hover{background:#ffffff1f}.btn-small:active{transform:scale(.97)}.btn-primary{background:linear-gradient(180deg,#eab263,#cf8f3f);border:none;color:#23150a;border-radius:var(--r-md);padding:12px 28px;font-size:16px;font-weight:600;cursor:pointer;min-height:48px;transition:transform .1s ease-out,filter .1s ease-out}.btn-primary:active{transform:scale(.97);filter:brightness(.9)}.cart-card{margin:0 10px 8px;background:var(--bg2);border:1px solid rgba(227,168,87,.35);border-radius:var(--r-md);padding:10px 12px;transition:opacity .3s ease-out,transform .3s ease-out}.cart-card.hidden{display:none}.cart-card.ping{animation:cart-ping .7s ease-out}@keyframes cart-ping{0%{box-shadow:0 0 0 0 var(--glow-gold);border-color:#e3a857e6}to{box-shadow:0 0 22px 6px transparent;border-color:#e3a85759}}.cart-card-head{font-size:13px;font-weight:600;color:var(--accent);margin-bottom:6px;display:flex;align-items:center;justify-content:space-between}.cart-items{display:flex;flex-direction:column;gap:4px;max-height:96px;overflow-y:auto;font-size:14px}.cart-bar-footer{display:flex;justify-content:space-between;align-items:center;margin-top:8px}.cart-total{color:var(--accent);font-weight:600;font-size:16px}#confirmation-overlay{top:50%;left:50%;transform:translate(-50%,-50%);background:var(--raised);border:1px solid var(--line-gold);border-radius:var(--r-lg);padding:24px;min-width:280px;max-width:90vw;box-shadow:0 12px 48px #00000080}#confirmation-overlay.hidden{opacity:0;pointer-events:none;transform:translate(-50%,-40%)}.confirmation-header{font-size:18px;font-weight:700;color:var(--accent);margin-bottom:12px}.confirmation-items{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;font-size:15px}.confirmation-total{font-size:16px;font-weight:600;color:var(--accent);margin-bottom:16px}.confirmation-actions{display:flex;gap:12px;justify-content:flex-end}.toast{position:fixed;top:calc(var(--header-h) + 12px);left:50%;transform:translate(-50%);background:#ff4d5ef2;color:#fff;padding:10px 20px;border-radius:9999px;font-size:13px;z-index:999;max-width:80vw;text-align:center;transition:opacity .3s ease-in}.toast.hidden{opacity:0;pointer-events:none}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:2px}@media(orientation:portrait),(max-width:820px){#app-main{flex-direction:column}#side-panel{width:100%;height:46%;border-left:none;border-top:1px solid var(--line-gold)}#rec-overlay{width:min(300px,calc(100vw - 32px));top:12px;bottom:72px}#btn-menu{bottom:16px}#test-panel{right:0}}
