:root{--bg-app: #ede9fe;--bg-header: #5b21b6;--bg-panel: #3b0764;--panel-border: #c084fc;--theme-primary: #7c3aed;--theme-secondary: #a78bfa;--text-dark: #0f172a;--text-light: #f8fafc}*{box-sizing:border-box;margin:0;padding:0;user-select:none;-webkit-tap-highlight-color:transparent}body{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:var(--bg-app);color:var(--text-dark);height:100dvh;overflow:hidden;display:flex;justify-content:center;transition:background-color .4s ease}#app{width:100%;max-width:480px;height:100%;display:flex;flex-direction:column;position:relative;background:#ffffff73;box-shadow:0 0 28px #0000001a}.top-bar{display:flex;justify-content:space-between;align-items:center;padding:6px 12px;background:var(--bg-header);color:var(--text-light);height:48px;flex-shrink:0;z-index:20;transition:background-color .4s ease}.nav-left{display:flex;gap:8px;align-items:center}.btn-icon{position:relative;background:#ffffff2e;color:var(--text-light);border:2px solid rgba(255,255,255,.4);padding:4px 10px;border-radius:10px;font-size:.84rem;font-weight:800;cursor:pointer}.btn-icon.can-unlock{background:#fbbf24;color:#0f172a;border-color:#fff;animation:bounce-attention 1.4s infinite}.notify-dot{position:absolute;top:-6px;right:-6px;background:#ef4444;color:#fff;width:18px;height:18px;border-radius:50%;font-size:.72rem;font-weight:900;display:flex;align-items:center;justify-content:center;border:2px solid white}.notify-dot.hidden{display:none}.stats{display:flex;gap:8px}.badge{background:#0f172a59;padding:4px 10px;border-radius:20px;font-size:.84rem;color:#fff}.badge.gold{background:#0f172a8c;color:#fde047;border:1px solid rgba(253,224,71,.5)}.rank-bar{background:#ffffffe6;padding:4px 14px 6px;border-bottom:2px solid rgba(0,0,0,.07);flex-shrink:0}.rank-info{display:flex;justify-content:space-between;font-size:.73rem;color:#334155;font-weight:800;margin-bottom:3px}.progress-track{width:100%;height:6px;background:#cbd5e1;border-radius:4px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--theme-primary),#f59e0b);width:10%;transition:width .4s ease}.screen{display:none;flex:1;flex-direction:column;overflow-y:auto}.screen.active{display:flex}#screen-labs{padding:12px 14px;align-items:center}#screen-labs h1{font-size:1.4rem;margin-bottom:2px}.subtitle{color:#475569;font-size:.8rem;margin-bottom:10px;text-align:center}.labs-grid{display:grid;grid-template-columns:1fr;gap:10px;width:100%;padding-bottom:12px}.lab-card{background:#fff;border:3px solid transparent;border-radius:16px;padding:10px 12px;display:flex;align-items:center;gap:12px;cursor:pointer;box-shadow:0 4px 10px #0000000f}.lab-card.locked{background:#ffffffa6}.lab-card.affordable{border-color:#f59e0b!important;background:#fffbeb}.lab-card-icon{width:46px;height:46px;flex-shrink:0;background:#f1f5f9;border-radius:12px;padding:4px}.lab-card-info{flex:1}.lab-card-info h3{font-size:1rem;margin-bottom:2px}.lab-card-info p{color:#475569;font-size:.76rem}.btn-unlock{background:#fbbf24;color:#0f172a;border:2px solid #f59e0b;padding:6px 10px;border-radius:10px;font-weight:900;font-size:.78rem;cursor:pointer}.btn-unlock:disabled{background:#e2e8f0;color:#64748b;border-color:#cbd5e1;cursor:not-allowed}.footer-actions{margin-top:auto;padding:8px 0 4px}.btn-reset{background:#fff9;color:#64748b;border:1px solid #cbd5e1;padding:5px 12px;border-radius:8px;font-size:.72rem;font-weight:600;cursor:pointer}.game-board{position:relative;flex:1;display:flex;flex-direction:column;gap:8px;padding:8px 10px;overflow:hidden}.order-banner{background:var(--bg-panel);border:2px solid var(--panel-border);border-radius:16px;padding:6px 14px;display:flex;align-items:center;gap:12px;color:#fff;box-shadow:0 4px 12px #00000026;flex-shrink:0}.master-avatar{width:46px;height:46px;color:var(--theme-secondary);flex-shrink:0;animation:float 2.2s ease-in-out infinite}.order-details{flex:1;display:flex;align-items:center;justify-content:space-between;gap:8px}.order-title{font-size:.76rem;text-transform:uppercase;color:#e2e8f0;font-weight:800}.order-target-row{display:flex;align-items:center;gap:8px;font-size:.88rem;font-weight:700}.target-badge{background:#fbbf24;color:#0f172a;font-size:1.45rem;font-weight:900;padding:1px 12px;border-radius:10px;box-shadow:0 3px #d97706}.cauldron-stage{flex:1;background:radial-gradient(circle at 50% 45%,#fff,#ffffffc7);border:3px solid var(--panel-border);border-radius:20px;padding:8px 12px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;box-shadow:0 6px 18px #00000014;position:relative;transition:border-color .3s,box-shadow .3s}.cauldron-stage.match-ready{border-color:#10b981;box-shadow:0 0 24px #10b98166}.equation-pill{background:#0f172a;color:#fde047;font-family:Courier New,monospace;font-size:1rem;font-weight:900;padding:5px 14px;border-radius:20px;border:2px solid #334155;box-shadow:0 3px 8px #00000026;text-align:center;min-width:75%}.cauldron-pot-wrapper{position:relative;width:195px;height:152px;display:flex;align-items:center;justify-content:center;margin:2px 0}.cauldron-pot-wrapper.pot- splash-bounce{animation:pot-wobble .42s ease}.big-cauldron-svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 8px 12px rgba(0,0,0,.2))}.liquid-level-group{transition:transform .45s cubic-bezier(.34,1.56,.64,1)}.cauldron-stage.match-ready #liquid-wave{fill:#10b981}.pot-bubble{animation:bubble-rise 1.9s infinite ease-in}.pot-bubble.pb2{animation-delay:.5s}.pot-bubble.pb3{animation-delay:1s}.pot-bubble.pb4{animation-delay:1.4s}.flame{transform-origin:bottom center;animation:flicker .9s infinite alternate ease-in-out}.flame.f2{animation-delay:.25s}.flame.f3{animation-delay:.5s}.cauldron-belly-readout{position:absolute;top:52%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;pointer-events:none;text-shadow:0 3px 8px rgba(0,0,0,.85)}.belly-label{font-size:.62rem;font-weight:900;color:#fffc;letter-spacing:1.5px}.belly-number{font-size:2.3rem;font-weight:900;color:#fff;line-height:1;transition:transform .25s cubic-bezier(.34,1.56,.64,1),color .25s}.belly-number.number-pop{transform:scale(1.38)}.cauldron-stage.match-ready .belly-number{color:#fde047;animation:exact-match-pulse .9s infinite alternate}.cauldron-fx-layer{position:absolute;inset:0;pointer-events:none;z-index:25}.smoke-puff{position:absolute;width:44px;height:44px;border-radius:50%;background:radial-gradient(circle,#64748b 0%,#334155 70%,transparent 100%);opacity:.9;animation:smoke-billow .95s ease-out forwards}.sparkle-star{position:absolute;font-size:1.6rem;animation:sparkle-burst .85s ease-out forwards}.splash-drop{position:absolute;width:10px;height:10px;border-radius:50%;background:var(--theme-secondary);animation:splash-arc .5s ease-out forwards}.cauldron-controls{width:100%;display:flex;flex-direction:column;gap:6px}.cauldron-slots{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.slot-box{height:44px;border:2px dashed #cbd5e1;background:#f8fafcd9;border-radius:12px;display:flex;align-items:center;justify-content:center;gap:6px;font-size:.74rem;color:#94a3b8;font-weight:700}.slot-box.filled{border-style:solid;cursor:pointer;color:#fff;font-size:1.05rem;font-weight:900;box-shadow:0 3px #0003;animation:pop-in .2s ease}.slot-mini-svg{width:22px;height:22px;flex-shrink:0}.slot-box.filled.op-add{background:linear-gradient(135deg,#16a34a,#15803d);border-color:#86efac}.slot-box.filled.op-mul{background:linear-gradient(135deg,#d97706,#b45309);border-color:#fde047}.slot-box.filled.op-sub{background:linear-gradient(135deg,#e11d48,#be123c);border-color:#fda4af}.cauldron-actions{display:flex;gap:8px}.btn-secondary{background:#e2e8f0;color:#334155;border:none;border-radius:12px;padding:10px 12px;font-size:.84rem;font-weight:800;cursor:pointer;box-shadow:0 3px #cbd5e1}.btn-primary{flex:1;background:var(--theme-primary);color:#fff;border:none;border-radius:12px;padding:10px 14px;font-size:1rem;font-weight:900;cursor:pointer;box-shadow:0 4px #00000040}.btn-primary.pulse-ready{background:#10b981;animation:bounce-attention 1.1s infinite}.btn-primary:disabled{background:#94a3b8;box-shadow:none;cursor:not-allowed}.shelf-zone{background:#ffffffd9;border:2px solid rgba(0,0,0,.08);border-radius:18px;padding:8px 10px;display:flex;flex-direction:column;gap:6px;flex-shrink:0}.shelf-header{font-size:.74rem;font-weight:800;color:#334155}.ingredients-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.ing-card{position:relative;background:#fff;border-radius:14px;padding:6px 6px 8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer;border:2px solid #cbd5e1;box-shadow:0 4px #cbd5e1;transition:transform .12s,opacity .2s}.ing-card:active{transform:translateY(3px);box-shadow:0 1px #cbd5e1}.ing-card.used{opacity:.22;pointer-events:none;transform:scale(.92);filter:grayscale(.95)}.ing-card.op-add{background:linear-gradient(180deg,#f0fdf4,#dcfce7);border-color:#4ade80;box-shadow:0 4px #16a34a}.ing-card.op-mul{background:linear-gradient(180deg,#fffbeb,#fef3c7);border-color:#fbbf24;box-shadow:0 4px #d97706}.ing-card.op-sub{background:linear-gradient(180deg,#fff1f2,#ffe4e6);border-color:#fb7185;box-shadow:0 4px #e11d48}.ing-icon{width:36px;height:36px;filter:drop-shadow(0 2px 3px rgba(0,0,0,.15))}.ing-val{font-size:1.2rem;font-weight:900;line-height:1.05}.ing-card.op-add .ing-val{color:#15803d}.ing-card.op-mul .ing-val{color:#b45309}.ing-card.op-sub .ing-val{color:#be123c}.ing-name{font-size:.64rem;font-weight:800;color:#475569}.flying-ingredient{position:fixed;width:48px;height:48px;z-index:100;pointer-events:none;transition:left .42s linear,top .42s cubic-bezier(.22,-.45,.65,1),transform .42s ease-in,opacity .42s ease-in}.app-footer{text-align:center;padding:4px 10px;font-size:.72rem;color:#475569;background:#fff9;border-top:1px solid rgba(0,0,0,.06);flex-shrink:0}.app-footer a{color:var(--bg-header);font-weight:700;text-decoration:none}.modal-overlay{position:absolute;inset:0;background:#0f172ad1;backdrop-filter:blur(3px);display:flex;justify-content:center;align-items:center;padding:20px;z-index:60}.modal-overlay.hidden{display:none}.modal-card{background:#fff;color:#0f172a;border:3px solid var(--theme-primary);border-radius:22px;padding:22px;text-align:center;width:100%;max-width:350px;display:flex;flex-direction:column;align-items:center;gap:10px;box-shadow:0 15px 35px #00000059;animation:pop-in .3s ease}.modal-icon{width:66px;height:66px}.modal-stars{font-size:1.7rem;letter-spacing:4px}.modal-card p{color:#334155;font-size:.96rem;line-height:1.4}.unlock-alert{background:#fef3c7;border:2px solid #f59e0b;color:#92400e;font-weight:800;font-size:.86rem;padding:8px 12px;border-radius:12px;width:100%;animation:bounce-attention 1.2s infinite}.unlock-alert.hidden{display:none}.modal-actions{display:flex;flex-direction:column;gap:8px;width:100%;margin-top:4px}.btn-unlock-modal{background:#fbbf24;color:#0f172a;border:none;border-radius:12px;padding:12px 18px;font-size:.98rem;font-weight:900;cursor:pointer;width:100%;box-shadow:0 4px #d97706}.btn-unlock-modal.hidden{display:none}.shake{animation:shake .45s cubic-bezier(.36,.07,.19,.97) both}@keyframes pop-in{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes flicker{0%{transform:scaleY(.92) scaleX(.96)}to{transform:scaleY(1.12) scaleX(1.05)}}@keyframes bubble-rise{0%{transform:translateY(0) scale(.8);opacity:.7}to{transform:translateY(-45px) scale(1.25);opacity:0}}@keyframes pot-wobble{0%,to{transform:rotate(0) scale(1)}30%{transform:rotate(-4deg) scale(1.05,.95)}65%{transform:rotate(4deg) scale(.97,1.03)}}@keyframes exact-match-pulse{0%{transform:scale(1)}to{transform:scale(1.16)}}@keyframes smoke-billow{0%{transform:translate(-50%) scale(.4);opacity:.95}to{transform:translate(var(--dx),-95px) scale(2.4);opacity:0}}@keyframes sparkle-burst{0%{transform:translate(-50%) scale(.4) rotate(0);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(1.4) rotate(45deg);opacity:0}}@keyframes splash-arc{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(var(--dx),var(--dy)) scale(.3);opacity:0}}@keyframes bounce-attention{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}@keyframes shake{10%,90%{transform:translate3d(-4px,0,0)}20%,80%{transform:translate3d(6px,0,0)}30%,50%,70%{transform:translate3d(-7px,0,0)}40%,60%{transform:translate3d(7px,0,0)}}
