:root{--brand: #0e4f8b;--brand-2: #e8423f;--ink: #1b2433;--muted: #6b7686;--line: #e6e9ef;--bg: #f6f7fa;--card: #ffffff;--ok: #2e9e5b;--warn: #e0761b;--sb-w: 360px;--radius: 14px;font-family:Inter,Segoe UI,system-ui,sans-serif;color:var(--ink)}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#0b1726}button{font:inherit;cursor:pointer}kbd{display:inline-block;padding:1px 7px;border-radius:6px;background:#ffffffe6;border:1px solid #cfd5de;border-bottom-width:3px;font:600 12px Inter,sans-serif;color:var(--ink)}#app{display:flex;height:100%}#stage{position:relative;flex:1;min-width:0}#canvas-host{position:absolute;top:0;right:0;bottom:0;left:0}#canvas-host canvas{display:block;touch-action:none;cursor:grab}#canvas-host canvas:active{cursor:grabbing}#hud{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}#hud>*{pointer-events:auto}#hud>.prompt,#hud>.bubble,#hud>.loc,#hud>.toasts,#hud>.fade,#hud>.confetti{pointer-events:none}#sidebar{width:var(--sb-w);flex-shrink:0;background:var(--bg);border-left:1px solid var(--line);display:flex;flex-direction:column;transition:margin-right .3s ease;z-index:5}body.sb-closed #sidebar{margin-right:calc(-1 * var(--sb-w))}.sb-head{display:flex;align-items:center;gap:10px;padding:14px 16px;background:var(--brand);color:#fff}.sb-brand{font-weight:800;font-size:20px;letter-spacing:.5px}.sb-brand span,.intro-logo span{color:#ffd166;margin-left:3px}.sb-user{margin-left:auto;font-size:13px;opacity:.9;display:flex;align-items:center;gap:6px}.sb-user .dot{width:8px;height:8px;border-radius:50%;background:#4ade80}.sb-close{background:none;border:0;color:#fff;font-size:24px;line-height:1;padding:0 2px}.tabs{display:flex;background:#fff;border-bottom:1px solid var(--line)}.tab{flex:1;border:0;background:none;padding:12px 6px;font-weight:600;font-size:14px;color:var(--muted);border-bottom:3px solid transparent;display:flex;align-items:center;justify-content:center;gap:6px}.tab.active{color:var(--brand);border-color:var(--brand)}.tab b{background:var(--brand-2);color:#fff;font-size:11px;border-radius:10px;padding:1px 7px}.tab b.soft{background:#e9eef6;color:var(--brand)}.tab.bump b{animation:bump .5s}.sb-body{flex:1;overflow-y:auto;padding:16px}.sb-body h4{margin:20px 0 10px;font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}.btn{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:10px;padding:10px 14px;font-weight:600;font-size:14px;transition:transform .1s,background .2s}.btn:active{transform:scale(.97)}.btn.primary{background:var(--brand);color:#fff;border-color:var(--brand)}.btn.primary:hover{background:#0b4274}.btn.ghost{background:transparent}.btn.block{width:100%;margin-top:10px}.btn.big{font-size:17px;padding:14px 28px}.btn kbd{margin-left:6px;background:#fff3;color:#fff;border-color:#ffffff59}.empty{text-align:center;padding:40px 10px;color:var(--muted)}.empty-icon{font-size:44px}.empty p{color:var(--ink);font-weight:600;margin:10px 0 6px}.ci{display:flex;gap:10px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:10px;margin-bottom:8px;position:relative;animation:slidein .3s}.ci-thumb{width:48px;height:48px;border-radius:10px;flex-shrink:0;background:var(--p);color:#fff;font-weight:800;display:grid;place-items:center;font-size:20px;box-shadow:inset 0 -8px #0000001f}.ci-thumb.img{background:#f4f6f9;object-fit:contain;box-shadow:none;padding:2px}.ci-info{flex:1;min-width:0}.ci-name{font-weight:600;font-size:14px;padding-right:18px}.ci-cat{font-size:12px;margin:2px 0 6px}.ci-row{display:flex;align-items:center;justify-content:space-between}.ci-price{font-weight:700}.ci-del{position:absolute;top:6px;right:8px;border:0;background:none;color:var(--muted);font-size:18px}.qty{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}.qty button{border:0;background:#f2f4f8;width:34px;height:34px;font-size:18px}.qty span{min-width:34px;text-align:center;font-weight:700}.qty.sm button{width:26px;height:26px;font-size:15px}.qty.sm span{min-width:26px;font-size:13px}.ship-bar{position:relative;height:26px;border-radius:8px;background:#e9eef6;overflow:hidden;margin:12px 0;font-size:12px}.ship-bar div{position:absolute;inset:0 auto 0 0;background:#c9dcf0;transition:width .4s}.ship-bar span{position:relative;display:block;text-align:center;line-height:26px;color:var(--brand);font-weight:600}.ship-ok{margin:12px 0;text-align:center;color:var(--ok);font-weight:700;font-size:13px}.coupon{display:flex;gap:8px}.coupon input,.auth input{flex:1;padding:10px 12px;border-radius:10px;border:1px solid var(--line);font:inherit;background:#fff;min-width:0}.coupon input:focus,.auth input:focus{outline:2px solid #9cc3ea;border-color:var(--brand)}.msg,.hint{font-size:12px;color:var(--muted);margin-top:8px}.found{font-size:12px;color:var(--muted);margin-top:8px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}.chip{border:1px dashed var(--brand);color:var(--brand);background:#eef4fb;border-radius:20px;padding:3px 10px;font-size:12px;font-weight:700}.totals{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;margin-top:14px;font-size:14px}.totals>div{display:flex;justify-content:space-between;padding:4px 0}.totals .disc{color:var(--ok)}.totals .grand{border-top:1px solid var(--line);margin-top:6px;padding-top:10px;font-weight:800;font-size:17px}.demo-note{text-align:center;font-size:11px;color:var(--muted);margin-top:10px}.seg{display:flex;background:#e9eef6;border-radius:12px;padding:4px;margin-bottom:14px}.seg button{flex:1;border:0;background:none;padding:8px;border-radius:9px;font-weight:600;color:var(--muted)}.seg button.on{background:#fff;color:var(--brand);box-shadow:0 1px 4px #00000014}.auth label{display:block;font-size:13px;font-weight:600;margin-bottom:10px;color:var(--muted)}.auth label input{display:block;width:100%;margin-top:4px;color:var(--ink)}.err{background:#fdecec;color:#b42318;padding:8px 10px;border-radius:8px;font-size:13px}.perks{margin-top:16px;display:grid;gap:6px;font-size:13px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:12px}.profile{display:flex;gap:12px;align-items:center}.avatar{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:800;font-size:20px;box-shadow:0 0 0 3px #fff,0 0 0 5px var(--line)}.p-name{font-weight:800;font-size:17px}.p-mail{font-size:13px;color:var(--muted)}.p-no{font-size:12px;font-weight:700;color:var(--brand);margin-top:2px}.level{margin-top:14px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px}.lv-top{display:flex;justify-content:space-between;font-size:14px}.lv-top b{color:var(--lv)}.lv-bar{height:8px;background:#eef1f5;border-radius:4px;margin:8px 0 6px;overflow:hidden}.lv-bar div{height:100%;background:var(--lv);border-radius:4px;transition:width .5s}.level small{color:var(--muted);font-size:12px}.order{display:flex;justify-content:space-between;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:6px;font-size:13px}.order small{display:block;color:var(--muted);font-size:11px}.order>div:last-child{text-align:right;font-weight:700}.look{display:grid;gap:10px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:12px}.look>div{display:grid;gap:6px}.look span{font-size:12px;color:var(--muted);font-weight:600}.sws{display:flex;flex-wrap:wrap;gap:6px}.sw{width:26px;height:26px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line)}.sw.on{box-shadow:0 0 0 2px var(--brand)}.pill{border:1px solid var(--line);background:#fff;border-radius:20px;padding:4px 12px;font-size:12px;font-weight:600}.pill.on{background:var(--brand);color:#fff;border-color:var(--brand)}.q-intro{font-size:13px;color:var(--muted);margin:0 0 12px}.quest{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:8px;font-size:14px}.q-check{width:24px;height:24px;border-radius:50%;border:2px solid #c9d1dc;flex-shrink:0;display:grid;place-items:center;color:#fff;font-weight:800;font-size:13px}.quest.done .q-check{background:var(--ok);border-color:var(--ok)}.quest.done .q-title{color:var(--muted);text-decoration:line-through}.q-title{flex:1}.q-rw{font-size:12px;font-weight:700;color:#b0703a;background:#fbf1e6;padding:2px 8px;border-radius:10px}.topbar{position:absolute;top:14px;right:14px;display:flex;gap:8px}.hud-btn{width:42px;height:42px;border-radius:12px;border:0;background:#ffffffeb;box-shadow:0 4px 14px #00000026;font-size:18px;font-weight:800;color:var(--brand);position:relative}.cart-badge{position:absolute;top:-6px;right:-6px;background:var(--brand-2);color:#fff;font-size:11px;border-radius:10px;padding:1px 6px;font-weight:800}.cart-btn.bump{animation:bump .5s}@keyframes bump{0%,to{transform:scale(1)}40%{transform:scale(1.3)}}.loc{position:absolute;top:16px;left:16px;background:#0e4f8beb;color:#fff;padding:10px 16px;border-radius:12px;font-weight:700;font-size:15px;box-shadow:0 6px 20px #0003;opacity:0}.loc.show{animation:locin 4s forwards}@keyframes locin{0%{opacity:0;transform:translateY(-10px)}10%,85%{opacity:1;transform:none}to{opacity:.85}}.prompt{position:absolute;left:0;top:0;background:#141c28e0;color:#fff;padding:8px 12px;border-radius:12px;font-size:14px;font-weight:600;white-space:nowrap;opacity:0;transition:opacity .15s;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.prompt.show{opacity:1;animation:float 1.6s ease-in-out infinite}.prompt kbd{margin-right:6px}@keyframes float{50%{margin-top:-5px}}.bubble{position:absolute;left:0;top:0;max-width:220px;background:#fff;color:var(--ink);padding:8px 12px;border-radius:14px;font-size:13px;font-weight:500;box-shadow:0 6px 18px #0000002e;transition:opacity .3s;animation:pop .3s}.bubble:after{content:"";position:absolute;left:50%;bottom:-7px;margin-left:-7px;border:7px solid transparent;border-bottom:0;border-top-color:#fff}@keyframes pop{0%{transform:scale(.6);opacity:0}}.toasts{position:absolute;top:70px;left:50%;transform:translate(-50%);display:grid;gap:8px;justify-items:center;width:min(92%,520px)}.toast{background:#141c28eb;color:#fff;padding:10px 16px;border-radius:12px;font-size:14px;font-weight:600;box-shadow:0 8px 22px #0003;animation:toastin .3s;transition:opacity .4s,transform .4s;text-align:center}.toast.ok{background:#2e9e5bf2}.toast.warn{background:#e0761bf2}.toast.quest{background:linear-gradient(90deg,#f2c230,#e8a317);color:#2b1d00}.toast.quest:before{content:"★ "}.toast.out{opacity:0;transform:translateY(-8px)}@keyframes toastin{0%{opacity:0;transform:translateY(-10px)}}.dialog{position:absolute;left:50%;bottom:24px;transform:translate(-50%,30px);width:min(92%,720px);background:#fffffff7;border-radius:18px;padding:18px 22px 16px;box-shadow:0 16px 40px #00000047;opacity:0;pointer-events:none;transition:opacity .2s,transform .25s;border-top:5px solid var(--brand)}.dialog.show{opacity:1;transform:translate(-50%);pointer-events:auto}.d-speaker{display:inline-block;background:var(--brand);color:#fff;font-weight:700;font-size:13px;padding:4px 12px;border-radius:20px;margin-top:-32px;margin-bottom:8px}.d-text{font-size:17px;line-height:1.5;min-height:50px}.d-choices{display:grid;gap:6px;margin-top:10px}.choice{text-align:left;border:1px solid var(--line);background:#f7f9fc;border-radius:10px;padding:9px 12px;font-weight:600;font-size:15px;display:flex;gap:10px;align-items:center;transition:background .15s}.choice span{width:22px;height:22px;border-radius:6px;background:#e1e8f2;display:grid;place-items:center;font-size:12px;color:var(--brand);flex-shrink:0}.choice.sel,.choice:hover{background:#e7f0fa;border-color:#9cc3ea}.d-next{text-align:right;font-size:13px;color:var(--muted);opacity:0}.d-next.show{opacity:1;animation:float 1.2s infinite}.fade{position:absolute;top:0;right:0;bottom:0;left:0;background:#0b1726;opacity:0;transition:opacity .35s}.fade.on{opacity:1}.help{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(.95);background:#fff;border-radius:18px;padding:20px 24px;box-shadow:0 20px 50px #0000004d;display:none;font-size:14px;min-width:320px}.help.show{display:grid;gap:10px;transform:translate(-50%,-50%)}.help h3{margin:0 0 4px}.confetti{position:absolute;top:-20px;width:9px;height:14px;border-radius:2px;animation:fall linear forwards}@keyframes fall{to{top:110%;transform:rotate(720deg) translate(60px)}}.modal-wrap{position:fixed;top:0;right:0;bottom:0;left:0;background:#08101c80;display:grid;place-items:center;z-index:50;opacity:0;transition:opacity .2s;padding:16px}.modal-wrap.show{opacity:1}.modal{position:relative;background:#fff;border-radius:20px;width:min(100%,640px);display:grid;grid-template-columns:220px 1fr;overflow:hidden;transform:translateY(16px) scale(.97);transition:transform .25s;box-shadow:0 30px 60px #00000059}.modal-wrap.show .modal{transform:none}.m-close{position:absolute;right:10px;top:8px;border:0;background:none;font-size:26px;color:var(--muted);z-index:2}.m-visual{background:linear-gradient(160deg,var(--c),#fff 140%);display:grid;place-items:center;min-height:240px}.m-pack{width:90px;height:140px;background:var(--p);border-radius:18px 18px 12px 12px;display:grid;place-items:center;color:#fff;font-weight:800;box-shadow:inset -12px 0 #0000001f,0 18px 30px #00000040;animation:spin3d 4s ease-in-out infinite}.m-pack span{background:#fff;color:var(--p);padding:4px 10px;border-radius:6px}.m-jar{height:100px;width:110px;border-radius:14px}.m-box,.m-pouch{border-radius:6px}.m-tube{width:56px;height:150px;border-radius:10px 10px 30px 30px}.m-soap{width:130px;height:70px;border-radius:22px}.m-cloth{width:140px;height:90px;border-radius:10px;background:repeating-linear-gradient(0deg,var(--p) 0 14px,rgba(0,0,0,.08) 14px 18px),var(--p)}.m-can{width:70px;height:120px;border-radius:10px}@keyframes spin3d{50%{transform:rotate(-6deg) translateY(-8px)}}.m-body{padding:22px 22px 20px}.m-cat{font-size:12px;font-weight:700;color:var(--c);text-transform:uppercase;letter-spacing:.6px}.m-body h2{margin:6px 0 8px;font-size:22px}.m-body p{color:var(--muted);font-size:14px;margin:10px 0}.tag-real{font-size:11px;font-weight:700;padding:3px 8px;border-radius:10px}.tag-real{background:#e7f6ec;color:#1e7a45}.m-price{font-size:26px;font-weight:800;margin:12px 0 16px}.m-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.m-visual .p-img{width:92%;max-height:260px;object-fit:contain;filter:drop-shadow(0 14px 18px rgba(0,0,0,.25));animation:spin3d 4s ease-in-out infinite}.m-desc{max-height:120px;overflow-y:auto}a.tag-real{text-decoration:none;display:inline-block}a.tag-real:hover{background:#d4efdd}.catalog{position:relative;background:#fff;border-radius:20px;width:min(100%,980px);max-height:88vh;display:flex;flex-direction:column;overflow:hidden;transform:translateY(16px) scale(.97);transition:transform .25s;box-shadow:0 30px 60px #00000059}.modal-wrap.show .catalog{transform:none}.cat-head{padding:20px 24px 14px;border-bottom:1px solid var(--line);background:linear-gradient(90deg,color-mix(in srgb,var(--c) 12%,#fff),#fff)}.cat-head h2{margin:4px 0 12px;font-size:22px}.cat-head h2 small{font-size:13px;color:var(--muted);font-weight:600;margin-left:6px}.cat-search{width:100%;padding:10px 14px;border-radius:10px;border:1px solid var(--line);font:inherit}.cat-search:focus{outline:2px solid #9cc3ea;border-color:var(--brand)}.cat-grid{padding:16px 24px 24px;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px}.cat-card{position:relative;border:1px solid var(--line);border-radius:14px;padding:10px;display:flex;flex-direction:column;gap:6px;cursor:pointer;transition:transform .15s,box-shadow .15s}.cat-card:hover{transform:translateY(-3px);box-shadow:0 10px 22px #0000001a;border-color:color-mix(in srgb,var(--c) 40%,#fff)}.cat-img{height:120px;display:grid;place-items:center;background:#f7f8fa;border-radius:10px;overflow:hidden}.cat-img .p-img{max-width:100%;max-height:112px;object-fit:contain}.cat-img .m-pack{transform:scale(.65);animation:none}.cat-name{font-size:13px;font-weight:600;line-height:1.3;min-height:34px}.cat-foot{display:flex;align-items:center;justify-content:space-between;margin-top:auto}.cat-add{width:32px;height:32px;border-radius:10px;border:0;background:var(--c);color:#fff;font-size:20px;font-weight:700}.cat-add.done{animation:bump .4s}.intro{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:radial-gradient(circle at 30% 20%,#0e4f8b8c,#08101cbf);z-index:100;transition:opacity .6s;padding:16px}.intro.out{opacity:0;pointer-events:none}.intro-card{background:#fffffff5;border-radius:24px;padding:32px 34px;max-width:560px;text-align:center;box-shadow:0 30px 80px #0006;animation:pop .5s}.intro-logo{display:inline-block;background:var(--brand);color:#fff;font-weight:800;font-size:26px;padding:8px 18px;border-radius:12px}.intro h1{margin:14px 0 8px;font-size:32px}.intro-story{color:#3b4657;line-height:1.6;font-size:15px}.intro-keys{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:18px 0 22px}.intro-keys div{background:#f2f5f9;border-radius:12px;padding:10px 4px;display:grid;gap:6px;justify-items:center;font-size:12px;color:var(--muted)}.intro-note{font-size:12px;color:var(--muted);margin-top:14px}.joystick{position:absolute;left:24px;bottom:28px;width:120px;height:120px;border-radius:50%;background:#ffffff40;border:2px solid rgba(255,255,255,.5);touch-action:none;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.joy-knob{position:absolute;left:50%;top:50%;width:52px;height:52px;margin:-26px;border-radius:50%;background:#ffffffe6;box-shadow:0 4px 12px #0003}.touch-buttons{position:absolute;right:22px;bottom:34px;display:flex;gap:12px;align-items:flex-end}.touch-buttons button{width:64px;height:64px;border-radius:50%;border:0;background:#ffffffe6;font-weight:800;font-size:22px;color:var(--brand);box-shadow:0 6px 16px #0003;touch-action:none}.touch-buttons .tb-act{width:76px;height:76px;background:var(--brand);color:#fff}@keyframes slidein{0%{opacity:0;transform:translate(12px)}}@media (max-width: 900px){#sidebar{position:fixed;right:0;top:0;bottom:0;width:min(92vw,var(--sb-w));box-shadow:-10px 0 30px #00000040;transition:transform .3s}body.sb-closed #sidebar{margin-right:0;transform:translate(110%)}.modal{grid-template-columns:1fr}.m-visual{min-height:160px}.intro-keys{grid-template-columns:repeat(2,1fr)}.dialog{bottom:170px}.d-text{font-size:15px}.loc{font-size:13px;max-width:55%}}
