@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&family=Space+Mono:wght@400;700&display=swap');
:root{--bg:#111514;--panel:#1b211f;--line:#354039;--text:#f1f0e9;--muted:#9da9a0;--lime:#c5f477;--orange:#ff956c;--blue:#91cbff;--gold:#f1c77b}
*{box-sizing:border-box}body{margin:0;min-height: 100vh;min-height: 100svh;background:radial-gradient(ellipse at 50% -20%,#29352d,#111514 55%);color:var(--text);font-family:Manrope,system-ui,sans-serif}.app{max-width:1280px;margin:auto;padding:23px 28px 55px}.topbar{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:14px}.brand,.route-line,.kicker{font:10px 'Space Mono',monospace;letter-spacing:.12em;text-transform:uppercase}.brand{color:var(--lime)}.route-line{display:flex;gap:18px;margin-top:7px;color:var(--muted)}.quiet-button{background:none;border:1px solid #536252;color:#acb6aa;border-radius:7px;padding:8px 11px;font:10px 'Space Mono',monospace;cursor:pointer}.quiet-button:hover{color:var(--lime);border-color:var(--lime)}.layout{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:18px;margin-top:19px}.main-column{min-width:0}.scene-heading{display:flex;align-items:end;justify-content:space-between;gap:16px;margin:0 0 13px}.kicker{color:var(--lime)}h1{font-size:clamp(26px,3.5vw,42px);line-height:1.02;letter-spacing:-.055em;margin:7px 0 7px}.scene-heading p{margin:0;color:#bec8bf;font-size:13px;line-height:1.5}.control-hint{text-align:right;color:var(--muted);font:10px/1.6 'Space Mono',monospace;flex:none}.game-scene{position:relative;aspect-ratio:16/9;min-height:360px;max-height:580px;overflow:hidden;border:1px solid #4b5a4c;border-radius:15px;background:#232a25;box-shadow:0 18px 50px #0005;user-select:none;touch-action:manipulation}.scene-background{position:absolute;inset:0;background-position:center;background-size:cover;transition:filter .3s}.scene-tint{position:absolute;inset:0;background:linear-gradient(0deg,#10151144 0%,transparent 34%);pointer-events:none}.avatar{position:absolute;z-index:4;left:50%;bottom:8%;width:clamp(65px,10%,118px);aspect-ratio:2/3;transform:translateX(-50%);background:url('assets/nikita-sprite-v2.png') center/contain no-repeat;filter:drop-shadow(0 5px 5px #0008);transition:left .16s,bottom .16s,width .35s,filter .3s}.avatar.has-hat:before{content:'';display:block;position:absolute;inset:0;z-index:2;background-repeat:no-repeat;background-size:100% 100%;pointer-events:none}.avatar:not(.has-hat):before{display:none}.avatar.cap-0:before{background-image:url('assets/cap-forest.svg')}.avatar.cap-1:before{background-image:url('assets/cap-rust.svg')}.avatar.cap-2:before{background-image:url('assets/cap-sand.svg')}.avatar.cap-3:before{background-image:url('assets/cap-blue.svg')}.avatar.cap-4:before{background-image:url('assets/cap-plum.svg')}.avatar.cap-rabbi:before{background-image:url('assets/cap-rabbi.svg')}.avatar.tired{filter:saturate(.62) brightness(.92) drop-shadow(0 4px 5px #0008)}.avatar.rough{filter:grayscale(.7) brightness(.82) drop-shadow(0 4px 5px #0008)}.avatar.bulked{background-image:url('assets/nikita-balanced-v3.png');background-size:cover;}.avatar.chicken{background-image:url('assets/nikita-upper-v3.png');background-size:cover;}.avatar.heavier{transform:translateX(-50%) scaleX(1.13)}.map-hotspots{position:absolute;inset:0;z-index:6}.hotspot{position:absolute;transform:translate(-50%,-50%);border:1px solid #e5f5d355;border-radius:999px;min-width:44px;min-height:44px;height:33px;padding:0 10px;background:#111b;color:#eff5ec;font:10px 'Space Mono',monospace;cursor:pointer;white-space:nowrap;box-shadow:0 3px 14px #0005;transition:.16s}.hotspot:hover,.hotspot:focus{outline:0;border-color:var(--lime);background:#314632;transform:translate(-50%,-50%) scale(1.08)}.hotspot.done{border-color:#a8da74;background:#203420;color:#d7ffac}.hotspot:disabled{opacity:.55;cursor:default}.scene-toast{position:absolute;top:12px;left:50%;transform:translateX(-50%);z-index:8;background:#111c;border:1px solid #ffffff40;padding:7px 11px;border-radius:7px;color:#f0f5ee;font:10px 'Space Mono',monospace;pointer-events:none;white-space:nowrap;opacity:0;transition:opacity .2s}.scene-toast.show{opacity:1}.touch-controls{display:none;position:absolute;z-index:8;left:12px;right:12px;bottom:12px;align-items:end;justify-content:space-between;pointer-events:none}.dpad{display:grid;grid-template-columns:repeat(3,38px);grid-template-rows:repeat(2,36px);gap:8px;pointer-events:auto}.dpad button,.act-button{border:1px solid #e5f5d366;background:#111d;color:white;border-radius:8px;font:700 12px Manrope;touch-action:none}.dpad [data-move=up]{grid-column:2}.dpad [data-move=left]{grid-column:1;grid-row:2}.dpad [data-move=down]{grid-column:2;grid-row:2}.dpad [data-move=right]{grid-column:3;grid-row:2}.act-button{padding:0 12px;height:40px;pointer-events:auto}.progress-row{display:flex;align-items:center;gap:11px;margin:11px 1px;color:var(--muted);font:10px 'Space Mono',monospace}.progress-track{height:4px;border-radius:8px;background:#303936;flex:1;overflow:hidden}.progress-track i{display:block;height:100%;width:0;background:var(--lime);transition:width .25s}.journal,.card{border:1px solid var(--line);border-radius:12px;background:#191f1de8}.journal{padding:14px 17px;min-height:85px}.journal p{font-size:11px;color:#c7cec7;margin:7px 0 0;line-height:1.45}.sidebar{display:grid;align-content:start;gap:11px}.card{padding:16px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}.mood{color:#aab4aa;font:9px 'Space Mono',monospace}.stat{margin:11px 0}.stat>div:first-child{display:flex;justify-content:space-between;font-size:11px;margin-bottom:6px}.stat b{font:10px 'Space Mono',monospace;color:var(--muted)}.bar{height:5px;background:#303936;border-radius:8px;overflow:hidden}.bar i{display:block;height:100%;width:50%;border-radius:8px;transition:width .3s}.green{background:var(--lime)}.blue{background:var(--blue)}.gold{background:var(--gold)}.body-preview{height:115px;position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 55%,#455044,#202722 72%);border:1px solid #3b473b;border-radius:9px}.body-preview>div{position:absolute;left:50%;bottom:-9px;width:73px;height:108px;transform:translateX(-50%);background:url('assets/nikita-sprite-v2.png') center/contain no-repeat;transition:.3s}.body-preview>div.bulked{width:106px;background-image:url('assets/nikita-balanced-v3.png');}.body-preview>div.chicken{width:106px;background-image:url('assets/nikita-upper-v3.png');}.body-preview>div.heavier{transform:translateX(-50%) scaleX(1.14)}.body-metrics{display:flex;justify-content:space-between;margin-top:9px;font:9px 'Space Mono',monospace;color:var(--muted)}.body-metrics b{color:#e4ecdf}.subnote{font-size:10px;line-height:1.45;color:#aeb7ad;margin:9px 0 0}.objective-card p{font-size:12px;line-height:1.5;color:#dbe3da;margin:9px 0}.route-mini{display:grid;gap:5px;margin-top:10px}.route-step{display:flex;gap:7px;align-items:center;color:#818d83;font-size:9px}.route-step.active{color:var(--lime)}.route-step.done{color:#bddea6}.route-dot{width:6px;height:6px;border-radius:50%;background:#536053}.route-step.active .route-dot{background:var(--lime);box-shadow:0 0 9px #c5f47788}.route-step.done .route-dot{background:#97c46c}.overlay{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:18px;background:#080c0bd9}.overlay[hidden]{display:none}.dialog{position:relative;width:min(540px,100%);max-height: min(88vh,780px);max-height: min(88svh,780px);overflow:auto;border:1px solid #526454;border-radius:15px;background:linear-gradient(145deg,#202822,#171d19);padding:23px;box-shadow:0 25px 90px #000c}.close-button{position:absolute;right:11px;top:9px;border:0;background:none;color:#aab5aa;font-size:23px;cursor:pointer}.dialog h2{font-size:33.6px;letter-spacing:-.04em;margin:8px 30px 7px 0}.dialog>p{font-size:18.2px;line-height:1.6;color:#cad3ca;margin:0 0 16px}.mini-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:15px}.mini-actions button,.mini-option,.activity-choice,.mini-button{border:1px solid #566b56;background:#26342a;color:#eaf3e4;border-radius:8px;padding:10px 13px;font:600 16.8px Manrope;cursor:pointer;transition:.15s}.mini-actions button:hover,.mini-option:hover,.activity-choice:hover,.mini-button:hover{border-color:var(--lime);background:#344a36}.mini-option{display:block;width:100%;text-align:left;margin:7px 0}.mini-button:disabled,.mini-option:disabled{opacity:.45;cursor:default}.mini-status{margin:12px 0;color:var(--lime);font:15.4px 'Space Mono',monospace}.meter-stage{position:relative;height:128px;border:1px solid #435345;border-radius:10px;background:linear-gradient(90deg,#873e31 0 29%,#435d36 29% 66%,#873e31 66%);overflow:hidden;margin:15px 0}.meter-needle{position:absolute;top:0;bottom:0;width:3px;background:#fff3aa;box-shadow:0 0 9px #fff}.circle-game{width:208px;height:208px;margin:10px auto;position:relative;border-radius:50%;background:conic-gradient(from 4deg,#40513e 0 12%,#c5f477 12% 20%,#40513e 20% 100%);border:2px solid #657260;box-shadow:inset 0 0 0 19px #1b231d}.circle-game:before{content:'';position:absolute;inset:45px;border-radius:50%;border:1px solid #71826f}.circle-pointer{position:absolute;left:50%;top:13px;width:3px;height:89px;transform-origin:50% 91px;background:#fff6ca;box-shadow:0 0 9px #fff}.tile-grid{display:grid;grid-template-columns:repeat(4,48px);gap:6px;justify-content:center;margin:14px auto}.tile{width:48px;height:48px;border:1px solid #566454;background:#303a32;border-radius:6px;cursor:pointer}.tile.active{background:#c5f477;box-shadow:0 0 12px #c5f47777}.tile.blocked{background:#151916;opacity:.35;cursor:default}.choice-row{display:flex;gap:8px;flex-wrap:wrap}.choice-row button{flex:1}.lanes{display:grid;grid-template-columns:repeat(3,1fr);height:180px;border:1px solid #54614f;border-radius:10px;background:repeating-linear-gradient(90deg,#303a33 0 32%,#d9cf73 32.5% 33%,#303a33 33.5% 66%,#d9cf73 66.5% 67%,#303a33 67.5%);position:relative;overflow:hidden;margin:12px 0}.car-token,.obstacle{position:absolute;bottom:12px;width:43px;height:62px;display:grid;place-items:center;border-radius:10px;background:#dce0dc;color:#161a18;box-shadow:inset 0 -9px #a2aaa3;font-size:30.8px;transition:left .14s}.obstacle{top:-45px;bottom:auto;width:33px;height:36px;background:#d18a58;font-size:22.4px}.maze{display:grid;grid-template-columns:repeat(8,32px);grid-template-rows:repeat(6,32px);gap:2px;justify-content:center;margin:13px auto}.maze-cell{width:32px;height:32px;background:#39463d;border:1px solid #4c5d4c;border-radius:4px;cursor:pointer}.maze-cell.wall{background:#172019;cursor:default}.maze-cell.player{background:#c5f477;color:#1b251c}.maze-cell.goal{background:#df9a61;color:#1b251c}.food-meter{height:10px;border-radius:7px;background:linear-gradient(90deg,#91c879 0 56%,#d7b56d 56% 78%,#c86f58 78%);position:relative;margin:17px 0}.food-marker{position:absolute;top:-5px;left:0;width:4px;height:20px;background:white}.row-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.doc-chips,.cap-options,.activity-options{display:grid;gap:7px}.cap-options{grid-template-columns:repeat(5,1fr)}.cap-chip{height:auto;min-height:76px;padding:6px 3px;border-radius:9px;border:2px solid transparent;cursor:pointer;background:#202822!important;color:#e6eee4;font-size:12.6px}.cap-chip.selected{border-color:white}.cap-drawing{display:block;position:relative;width:35px;height:19px;margin:7px auto 6px;border-radius:18px 18px 3px 3px;background:var(--cap-color);border:1px solid #111}.cap-drawing:after{content:"";position:absolute;left:-4px;right:-8px;bottom:-4px;height:5px;border-radius:50%;background:var(--cap-color);border-bottom:1px solid #111}.cap-chip span{display:block;line-height:1.2}.activity-options{grid-template-columns:repeat(2,1fr)}.activity-choice{min-height:58px;text-align:left}.activity-choice strong{display:block;color:var(--lime);margin-bottom:3px}.end-panel{text-align:center}.end-panel h2{font-size:30px}.touch-controls{pointer-events:none}@media(max-width:900px){.app{padding:17px}.layout{grid-template-columns:1fr}.sidebar{grid-template-columns:repeat(2,minmax(0,1fr))}.objective-card{grid-column:1/-1}.game-scene{min-height:330px;aspect-ratio:1.5/1}.touch-controls{display:flex}.scene-heading{align-items:start}.control-hint{display:none}.progress-row{margin-bottom:11px}}@media(max-width:520px){.app{padding:13px}.sidebar{grid-template-columns:1fr 1fr;gap:8px}.card{padding:12px}.game-scene{min-height:310px;aspect-ratio:1.28/1}.avatar{width:15%}.body-preview{height:96px}.body-metrics{font-size:8px}.dialog{padding:20px 17px}.circle-game{width:178px;height:178px}.circle-pointer{height:75px}.maze{grid-template-columns:repeat(8,29px);grid-template-rows:repeat(6,29px)}.maze-cell{width:29px;height:29px}}



.inspection-card{padding:12px;border:1px solid #435345;border-radius:10px;background:#19211b}.inspection-card>b{font:14px 'Space Mono',monospace;color:var(--lime)}.inspection-card p{margin:8px 0 12px;color:#eef3eb;font-size:18.2px}.column-board{display:grid;grid-template-columns:1fr 1fr;gap:12px}.column-pieces,.column-slots{display:grid;gap:7px;align-content:start}.column-slots .mini-button{min-height:64px}.column-slots span{display:block;margin-top:4px;color:var(--lime);font-size:14px}.mini-button.selected,.mini-option.selected{border-color:var(--lime);box-shadow:0 0 0 2px #c5f47733}.beam-board{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:14px 0}.beam-piece{display:grid;justify-items:center;gap:6px;min-height:108px;padding:10px 5px;border:1px solid #566b56;border-radius:9px;background:#26342a;color:#eef3eb;cursor:pointer}.beam-piece b,.beam-piece small{font:12.6px 'Space Mono',monospace}.beam-piece span{font-size:44.8px;color:var(--gold);line-height:1}.beam-piece small{color:var(--muted);text-align:center}.peel-list{display:grid;gap:8px}.peel-card{display:grid;grid-template-columns:80px 1fr 40px;align-items:center;gap:10px;padding:10px;border:1px solid #39483b;border-radius:8px;background:#202a22;font-size:16.8px}.peel-card input{width:100%;accent-color:var(--lime);cursor:grab}.peel-card b{font:14px 'Space Mono',monospace;color:var(--lime);text-align:right}.peel-card.peeled{opacity:.55}.peel-card.peeled span{text-decoration:line-through}@media(max-width:520px){.column-board{grid-template-columns:1fr}.peel-card{grid-template-columns:65px 1fr 34px}.cap-options{grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}.cap-chip{min-width:0;font-size:11.2px}}

.top-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.hat-peek,.timed-cap{position:absolute;z-index:5;width:62px;height:44px;transform:translate(-50%,-50%);padding:0;border:0;background:transparent;cursor:pointer;opacity:.78;filter:none}.hat-peek:before,.timed-cap:before{content:"";position:absolute;left:3px;top:1px;width:13px;height:8px;border:1px solid #242a24;border-radius:9px 9px 2px 2px;background:#59704e}.hat-peek:after,.timed-cap:after{content:"";position:absolute;left:0;top:7px;width:19px;height:4px;border:1px solid #242a24;border-radius:50%;background:#8e9e72}.hat-peek[data-hat="siteCap"]:before,.timed-cap[data-timed-hat="hallCap"]:before{background:#a95540}.hat-peek[data-hat="siteCap"]:after,.timed-cap[data-timed-hat="hallCap"]:after{background:#d58e6e}.hat-peek[data-hat="cityCap"]:before,.timed-cap[data-timed-hat="stationCap"]:before{background:#465b7c}.hat-peek[data-hat="cityCap"]:after,.timed-cap[data-timed-hat="stationCap"]:after{background:#9eb2c8}.hat-peek:hover,.timed-cap:hover{opacity:1;transform:translate(-50%,-50%) scale(1.12)}.hat-peek.collecting,.timed-cap.collecting{animation:hat-fly .42s ease-in forwards}.bathroom-seam{position:absolute;left:7.2%;top:13%;width:44px;height:44px;transform:translate(-50%,-50%);border:0;border-left:2px solid #c9d1ce66;border-right:1px solid #aeb8b366;background:linear-gradient(90deg,#e4e8e622,#5c696355);opacity:.64;cursor:pointer}.bathroom-seam:hover{opacity:1;box-shadow:0 0 0 2px #d8e0d922}.memory-wrap,.burger-stage{position:relative;padding-top:3px}.memory-wrap .timed-cap{right:2px;top:4px;transform:none;z-index:2}.burger-stage .timed-cap{right:6px;top:-14px;transform:none;z-index:2}.fuel-stage{background:linear-gradient(90deg,#873e31 0 44%,#405d36 44% 71%,#873e31 71%)}.bathroom-secret{min-height:250px;display:flex;align-items:flex-end;justify-content:center;padding:18px;background:linear-gradient(180deg,#18201a66,#121814bb),url('assets/bathroom-vault-v1.png') center/cover;border:1px solid #536252;border-radius:10px}.bathroom-vault{width:min(100%,390px);padding:12px;background:#111916dc;border:1px solid #8a997866;border-radius:9px;backdrop-filter:blur(4px)}.collection-list{display:grid;gap:5px}.collection-row{display:flex;justify-content:space-between;gap:10px;padding:6px 8px;background:#29322c;border-radius:5px;font-size:14px}.collection-row b{font:12.6px 'Space Mono',monospace;color:#c5f477}.book-spines{display:flex;align-items:end;gap:5px;height:156px;padding:10px;background:linear-gradient(0deg,#513f2e 0 12%,#3a2d23 12%);border-radius:8px}.book-spine{height:130px;flex:1;display:flex;flex-direction:column;justify-content:space-between;padding:8px 5px;border:1px solid #1c1a18;border-radius:3px 3px 0 0;background:#68735c;box-shadow:inset 3px 0 #ffffff22;color:#f3e8cd;text-align:center;transform:rotate(-1deg)}.book-spine:nth-child(even){height:140px;transform:rotate(1deg)}.book-spine small{font:9.8px 'Space Mono',monospace}.book-spine b{font-size:14px;line-height:1.15}.spine-1{background:#785542}.spine-2{background:#4c6570}.spine-3{background:#7b6a42}.spine-4{background:#596348}.spine-5{background:#584d6b}.media-cards{display:flex;gap:8px;margin-top:10px}.media-cards span{flex:1;padding:10px;border:1px solid #54614f;border-radius:7px;background:#202822;text-align:center;font:14px 'Space Mono',monospace;color:#e9dfc9}@keyframes hat-fly{to{transform: translate(-55vw,-48vh) rotate(540deg) scale(1.5);transform: translate(-55vw,-48svh) rotate(540deg) scale(1.5);opacity:0}}

.maze-cell{color:#f0f4ec}.maze-cell.route-hint{background:#586e51;color:#eaffd5;box-shadow:inset 0 0 0 2px #c5f47744}.maze-cell.player{font-weight:800}.maze-cell.goal{font-weight:800}.tile.path-hint{background:#586e51;color:#edffde;border-color:#a3b58e;font-weight:800}.tile.blocked{color:transparent}.cap-countdown{position:absolute;right:0;top:-15px;z-index:6;padding:3px 6px;border:1px solid #6f815e;border-radius:5px;background:#111d;color:#e4f2d8;font:12.6px 'Space Mono',monospace;white-space:nowrap;pointer-events:none}

.phone-shortcut{position:relative;white-space:nowrap}.phone-shortcut span{display:inline-grid;place-items:center;min-width:17px;height:17px;margin-left:4px;padding:0 4px;border-radius:50%;background:var(--orange);color:#1d1713;font-weight:700}.phone-shortcut span[hidden]{display:none}.garage-card{background:linear-gradient(145deg,#202923,#171e1a)}.garage-line{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-top:1px solid #354039;font-size:11px}.garage-line b{color:#e5efdd;font:10px 'Space Mono',monospace;text-align:right}.garage-open{width:100%;margin-top:10px;min-height:44px;padding:9px;border:1px solid #6c8363;border-radius:7px;background:#293c2d;color:var(--lime);font:10px 'Space Mono',monospace;cursor:pointer}.garage-open:hover{background:#37513b}.phone-screen{border:1px solid #435145;border-radius:12px;background:#131b18;padding:12px;min-height:270px}.phone-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}.phone-tabs button{min-height:44px;padding:12px 12px;border:1px solid #47584a;border-radius:7px;background:#202b23;color:#c7d2c6;font:10px 'Space Mono',monospace;cursor:pointer}.phone-tabs button.selected{border-color:var(--lime);background:#344a35;color:var(--lime)}.phone-fiction{margin:0 0 10px;padding:9px;border-left:3px solid var(--gold);background:#302d21;color:#f0dfb3;font-size:11px;line-height:1.45}.phone-list{display:grid;gap:7px;max-height:350px;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.phone-item{display:grid;gap:4px;width:100%;padding:10px 12px;border:1px solid #35443a;border-radius:8px;background:#202a23;color:#e9f0e7;text-align:left;cursor:pointer}.phone-item.unread{border-left:4px solid var(--lime);background:#293729}.phone-item small,.phone-detail small{color:#a7bca9;font:9px 'Space Mono',monospace}.phone-item b{font-size:12px}.phone-item span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#aebdaf;font-size:10px}.phone-back{margin-bottom:12px;min-height:44px;padding:14px 10px;display:inline-flex;align-items:center;border:0;background:none;color:var(--lime);font:11px 'Space Mono',monospace;cursor:pointer}.phone-detail{padding:12px;border:1px solid #3e5042;border-radius:9px;background:#202c23}.phone-detail h3{font-size:19px;line-height:1.2;margin:10px 0}.phone-detail p{font-size:13px;line-height:1.6;color:#d1dfce}.phone-balance{display:flex;justify-content:space-between;gap:10px;padding:10px 2px 13px;color:#bcd1bc;font-size:11px}.phone-balance b{color:var(--lime);font:12px 'Space Mono',monospace}.car-offer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 0;border-top:1px solid #36473b}.car-offer>div{display:grid;gap:4px}.car-offer b{font-size:12px}.car-offer span{font-size:10px;color:#aebdaf}.car-offer button{flex:none;min-height:44px;padding:8px 10px;border:1px solid #82a16c;border-radius:7px;background:#344a35;color:#ecffdc;font:10px 'Space Mono',monospace;cursor:pointer}.car-offer button:disabled{opacity:.5;cursor:default}.phone-hint{font-size:11px;line-height:1.5;color:#d4dfbd;margin:13px 0 0}@media(max-width:520px){.topbar{align-items:flex-start;gap:12px}.top-actions{justify-content:flex-end}.quiet-button{padding:7px;font-size:9px}.phone-screen{padding:8px}.phone-tabs button{font-size:9px}.car-offer{align-items:flex-start}.car-offer button{padding:7px}}

/* The small collection cards and hidden pickups use the same hat artwork as the avatar. */
.cap-drawing{width:48px;height:31px;margin:2px auto 4px;border:0;border-radius:0;background-color:transparent;background-image:url('assets/cap-forest.svg');background-repeat:no-repeat;background-size:185px 277.5px;background-position:center top}
.cap-drawing:after{display:none}
.cap-chip:nth-child(2) .cap-drawing{background-image:url('assets/cap-rust.svg')}
.cap-chip:nth-child(3) .cap-drawing{background-image:url('assets/cap-sand.svg')}
.cap-chip:nth-child(4) .cap-drawing{background-image:url('assets/cap-blue.svg')}
.cap-chip:nth-child(5) .cap-drawing{background-image:url('assets/cap-plum.svg')}
.hat-peek,.timed-cap{width:64px;height:44px;background-repeat:no-repeat;background-size:100px 150px;background-position:center top;background-image:url('assets/cap-forest.svg')}
.hat-peek:before,.hat-peek:after,.timed-cap:before,.timed-cap:after{display:none}
.hat-peek[data-hat="siteCap"]{background-image:url('assets/cap-rust.svg')}
.hat-peek[data-hat="cityCap"]{background-image:url('assets/cap-sand.svg')}
.timed-cap[data-timed-hat="hallCap"]{background-image:url('assets/cap-blue.svg')}
.timed-cap[data-timed-hat="stationCap"]{background-image:url('assets/cap-plum.svg')}

.expression-layer{position:absolute;inset:0;z-index:1;display:block;pointer-events:none;background-repeat:no-repeat}.speech-bubble{position:absolute;z-index:7;max-width:min(260px,72%);padding:9px 12px;border:2px solid #26382a;border-radius:13px;background:#f0f4e9;color:#172019;box-shadow:0 7px 20px #0008;font:700 clamp(11px,1.5vw,15px)/1.25 Manrope,system-ui,sans-serif;text-align:center;transform:translateX(-50%);pointer-events:none;transition:left .16s ease,top .16s ease;overflow-wrap:anywhere}.speech-bubble[hidden]{display:none}.speech-bubble:after{content:"";position:absolute;left:calc(50% - 8px);bottom:-9px;width:14px;height:14px;transform:rotate(45deg);background:#f0f4e9;border-right:2px solid #26382a;border-bottom:2px solid #26382a}.body-preview .expression-layer{z-index:1}
.cash-emergency{display:block;width:100%;margin:10px 0;padding:12px 16px;border:2px solid #d6a343;border-radius:9px;background:linear-gradient(110deg,#6d462a,#a7722f);color:#fff5cf;font-weight:900;letter-spacing:.03em;cursor:pointer;box-shadow:0 4px 0 #3d281d}.cash-emergency[hidden]{display:none}.cash-emergency:hover{filter:brightness(1.12)}

.avatar[data-emotion="angry"] .expression-layer{background-image:url('assets/nikita-expression-angry-v1.png');background-size:30.325% 19.924%;background-position:44.285% .792%}
.avatar[data-emotion="laugh"] .expression-layer{background-image:url('assets/nikita-expression-laugh-v1.png');background-size:29.565% 19.274%;background-position:44.566% .382%}
.avatar[data-emotion="spend"] .expression-layer{background-image:url('assets/nikita-expression-spend-v1.png');background-size:29.526% 19.826%;background-position:44.621% .839%}
.avatar.bulked[data-emotion="angry"] .expression-layer{background-size:27.177% 17.008%;background-position:43.535% -.415%}
.avatar.bulked[data-emotion="laugh"] .expression-layer{background-size:26.496% 16.453%;background-position:43.784% -.745%}
.avatar.bulked[data-emotion="spend"] .expression-layer{background-size:26.461% 16.925%;background-position:43.831% -.376%}
.avatar.chicken[data-emotion="angry"] .expression-layer{background-size:28.834% 18.304%;background-position:44.817% .350%}
.avatar.chicken[data-emotion="laugh"] .expression-layer{background-size:28.111% 17.707%;background-position:45.074% -.016%}
.avatar.chicken[data-emotion="spend"] .expression-layer{background-size:28.074% 18.214%;background-position:45.125% .392%}
.avatar[data-emotion="angry"] .expression-layer,.avatar[data-emotion="laugh"] .expression-layer,.avatar[data-emotion="spend"] .expression-layer{-webkit-mask-image:radial-gradient(ellipse 12% 9% at 47% 9%,#000 72%,transparent 100%);mask-image:radial-gradient(ellipse 12% 9% at 47% 9%,#000 72%,transparent 100%)}
.avatar.bulked .expression-layer{-webkit-mask-image:radial-gradient(ellipse 11% 8% at 46.5% 7%,#000 72%,transparent 100%);mask-image:radial-gradient(ellipse 11% 8% at 46.5% 7%,#000 72%,transparent 100%)}
.avatar.chicken .expression-layer{-webkit-mask-image:radial-gradient(ellipse 11.5% 8.5% at 47% 8%,#000 72%,transparent 100%);mask-image:radial-gradient(ellipse 11.5% 8.5% at 47% 8%,#000 72%,transparent 100%)}

/* Лицо уже входит в цельный body-sprite. Сохраняем data-emotion для механики,
   но не рисуем поверх тела вторую пару глаз/рот/бороду. */
.avatar .expression-layer,#bodySprite .expression-layer{display:none!important;background-image:none!important;-webkit-mask-image:none!important;mask-image:none!important}


/* Photo-reference cutouts v4. Per-model framing preserves crown and brim proportions. */
.avatar.has-hat:before{inset:auto;left:30.8%;top:-1.7%;width:26.4%;height:10.8%;background-size:100% 100%;background-position:center;transform-origin:60% 70%}
.avatar.cap-0:before{background-image:url('assets/cap-forest-v4.png')}
.avatar.cap-1:before{left:31.6%;top:-4.1%;width:24.7%;height:14.4%;background-image:url('assets/cap-rust-v4.png')}
.avatar.cap-2:before{left:32.3%;top:-5.0%;width:24.4%;height:14.3%;background-image:url('assets/cap-sand-v4.png')}
.avatar.cap-3:before{left:31.6%;top:-3.9%;width:24.7%;height:14.2%;background-image:url('assets/cap-blue-v4.png')}
.avatar.cap-4:before{left:29.6%;top:-2.3%;width:26.5%;height:11.4%;background-image:url('assets/cap-plum-v4.png')}
.avatar.bulked.has-hat:before{transform:scale(.91);margin-left:-.5%;margin-top:-.8%}
.avatar.chicken.has-hat:before{margin-left:.3%;margin-top:-.2%}
.cap-drawing{width:100%;max-width:90px;height:65px;margin:0 auto 5px;background-size:contain;background-position:center;background-image:url('assets/cap-forest-v4.png')}
.cap-chip{min-height:104px;padding:5px 3px 9px}
.cap-chip:nth-child(2) .cap-drawing{background-image:url('assets/cap-rust-v4.png')}
.cap-chip:nth-child(3) .cap-drawing{background-image:url('assets/cap-sand-v4.png')}
.cap-chip:nth-child(4) .cap-drawing{background-image:url('assets/cap-blue-v4.png')}
.cap-chip:nth-child(5) .cap-drawing{background-image:url('assets/cap-plum-v4.png')}
.hat-peek,.timed-cap{width:51px;height:44px;background-size:contain;background-position:center;background-image:url('assets/cap-forest-v4.png')}
.hat-peek[data-hat="siteCap"]{background-image:url('assets/cap-rust-v4.png')}
.hat-peek[data-hat="cityCap"]{background-image:url('assets/cap-sand-v4.png')}
.timed-cap[data-timed-hat="hallCap"]{background-image:url('assets/cap-blue-v4.png')}
.timed-cap[data-timed-hat="stationCap"]{background-image:url('assets/cap-plum-v4.png')}
@media(max-width:520px){.cap-drawing{height:52px}.cap-chip{min-height:88px}}
.avatar.cap-rabbi:before{left:30.3%;top:-3.6%;width:28.3%;height:20.65%;background-image:url('assets/cap-rabbi-v4.png')}

/* Ten collectible hats: five additional silhouettes and a locked wardrobe. */
.avatar.cap-5:before,.avatar.cap-6:before,.avatar.cap-7:before,.avatar.cap-8:before,.avatar.cap-9:before{left:29%;top:-3%;width:29%;height:14%;background-size:100% 100%}
.avatar.cap-5:before{background-image:url('assets/cap-5.svg')}
.avatar.cap-6:before{background-image:url('assets/cap-6.svg')}
.avatar.cap-7:before{background-image:url('assets/cap-7-real.png')}
.avatar.cap-8:before{background-image:url('assets/cap-8-real.png')}
.avatar.cap-9:before{background-image:url('assets/cap-9-real.png')}

/* Whole-body presets prevent doubled legs and seams between independently generated poses. */
.avatar{width:clamp(68px,10%,112px)!important;height:clamp(112px,28%,178px);aspect-ratio:auto;background-size:100% 100%!important;transition:left .16s,bottom .16s,transform .35s,filter .3s}
.avatar,#bodySprite{background-image:var(--body-sprite,url('assets/nikita-sprite-v2.png'))!important;background-position:center;background-repeat:no-repeat}
.avatar .muscle-upper,.avatar .muscle-legs,#bodySprite .muscle-upper,#bodySprite .muscle-legs{display:none!important}
.avatar,#bodySprite{transform-origin:center bottom;transform:translateX(-50%) scale(var(--body-scale-x,1),var(--body-scale-y,1))}
.avatar.heavier{transform:translateX(-50%) scale(var(--body-scale-x,1),var(--body-scale-y,1))}
/* Modest scene-wide growth: hats stay attached because they share the avatar transform. */
/* П.1+п.2а (20260929): ×1,5 → ещё ×1,4 (итог ×2,1 от исходного). Высота ограничена
   клампом 84% сцены (решение владельца: «ограничить высоту клампом и поменьше никиту
   пока»); на телефоне срабатывают ОБА клампа (высота 84% и ширина 23.8%) — пропорция
   0.503 сохранена, кепки не сползают; на десктопе клампы неблокирующие. */
.avatar{width:calc(clamp(68px,10%,112px) * 2.352)!important;height:min(calc(clamp(112px,28%,178px) * 2.352), 84%)}
@media(max-width:520px){.avatar{width:min(calc(15% * 2.268), 21%)!important;height:min(calc(clamp(112px,28%,178px) * 2.268), 84%)}}
/* П.1/п.2а: фактическую ширину в сцене задаёт hats-fit.css — масштабируем её
   не трогая сам файл (селектор с id #gameScene конкретнее). ×1,5×1,4 = ×2,1. */
#gameScene .avatar{width:calc(clamp(76px,12%,136px) * 2.1)!important}
@media(max-width:520px){#gameScene .avatar{width:min(calc(17% * 2.1), 23.8%)!important}}
/* П.2а: шляпа раввина чуть крупнее остальных — cap-rabbi ×1,2 к базовой посадке
   с центрированием (числа из превью). Путь БЕЗ правки hats-fit.css: id-селектор
   (1,3,1) специфичнее (0,3,1), замок SHA остаётся. var(--cap-head-offset-y)
   сохраняет поправки стадий тела. */
#gameScene .avatar.has-hat.cap-rabbi::before{left:30.859375%;top:calc(-3.483075% + var(--cap-head-offset-y,0%));width:28.125%;height:12.10938%}
.body-preview{height:132px}.body-preview>div{width:73px!important;height:108px!important;bottom:4px!important;background-size:100% 100%!important;transition:transform .35s}
@media(max-width:520px){.body-preview{height:124px}}
.body-preview>div.bulked,.body-preview>div.chicken{background-image:none}
/* G25 · венозный слой поверх спрайта (17 стадий, scaleX до 2.1).
   Стадию считает game.js (bodyVisual) и отдаёт её одними и теми же CSS-переменными
   аватару на карте и превью «ФОРМА», поэтому шкаф и диалог показывают ровно те же
   стадии, что сцена. Ноги не «уплывают»: масштаб идёт от transform-origin:center
   bottom (см. выше), а scaleY растёт всего с .94 до 1.02 — ступня стоит на месте.
   Вены рисует код: инлайн-SVG-разметка, навешиваемая game.js, — нового файла в
   assets/ не появляется. Слой идёт ДО emotion-блока в каскаде, поэтому маска и
   background эмоции остаются поверх вен; кепка (.avatar:before) — самый верхний слой. */
.avatar .vein-layer,#bodySprite .vein-layer{position:absolute;left:23%;top:27%;width:54%;height:30%;z-index:0;display:block;pointer-events:none;background-repeat:no-repeat;background-position:center;background-size:100% 100%;opacity:0;transition:opacity .35s}
.avatar.veiny .vein-layer,#bodySprite.veiny .vein-layer{display:none}
/* Стадия 16 (scaleX 2.1) шире коробки аватара: при 112px это ±118px от оси. Запас до края
   сцены = x% её ширины, поэтому на десктопе (1280px) и в центре карты качок виден целиком,
   а на узких экранах у самой стены рамка сцены (overflow:hidden) срезает край. Числа —
   в _coord/g25/report-geometry.txt; упор задан владельцем тикета и не меняется. */


.gym-scene .scene-background{background-image:url('assets/gym-photo-v2.png')!important;background-size:cover;background-position:center;background-color:#344743}
.gym-scene .scene-background:before,.gym-scene .scene-background:after{content:none}
/* П.1 (20260928): Толя в Зале ×1,3 от текущих размеров (и база, и override). */
.hotspot.gym-tolya-spot{top:auto;bottom:11%;display:flex;flex-direction:column;align-items:center;justify-content:end;gap:3px;width:clamp(123.5px,19.5%,201.5px);height:clamp(201.5px,62.4%,325px);padding:0;border:0;border-radius:0;background:none;box-shadow:none;transform:translateX(-50%);white-space:normal;z-index:7}
.hotspot.gym-tolya-spot img{display:block;min-height:0;max-width:100%;height:calc(100% - 30px);width:auto;object-fit:contain;object-position:bottom;filter:drop-shadow(0 7px 5px #0009);pointer-events:none}
.hotspot.gym-tolya-spot{width:clamp(132.6px,20.8%,215.8px);height:clamp(215.8px,66.3%,348.4px)}
/* П.1: на узких экранах (390px и меньше) минимум clamp не влезал в высоту сцены —
   ограничиваем высоту Толи 88% сцены, чтобы не срезало голову/подпись. */
@media(max-width:520px){.hotspot.gym-tolya-spot{height:min(clamp(215.8px,66.3%,348.4px),88%)}}
.hotspot.gym-tolya-spot span{display:inline-flex;align-items:center;min-height:44px;padding:0 6px;border:1px solid #d8e8c5;border-radius:7px;background:#14241fe8;color:#ecf8df;font:700 10px/1.2 'Space Mono',monospace;box-shadow:0 4px 12px #0007;white-space:nowrap}
.hotspot.gym-tolya-spot:hover,.hotspot.gym-tolya-spot:focus{background:none;border:0;transform:translateX(-50%) scale(1.025)}
.hotspot.gym-tolya-spot.done{background:none;border:0;opacity:1}
.tolya-dialog{display:flex;align-items:center;gap:14px;padding:12px;border:1px solid #596e5c;border-radius:10px;background:linear-gradient(120deg,#314138,#1b2823)}
.tolya-dialog img{flex:none;width:75px;height:118px;object-fit:contain;object-position:bottom;filter:drop-shadow(0 4px 4px #0008)}
.tolya-dialog b{color:#cde9ae;font:700 15.4px 'Space Mono',monospace}
.tolya-dialog p{margin:7px 0 0;color:#e1ebdd;font:16.8px/1.5 Manrope,sans-serif}
.apartment-room-nav{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:10px 0 2px;color:#bfcbbd;font:10px 'Space Mono',monospace}
.apartment-room-nav[hidden],.apartment-room-nav button[hidden]{display:none}
.apartment-room-nav button,.room-back,.room-object{border:1px solid #b8d09e;border-radius:7px;background:#23392cf0;color:#eff9e6;min-height:46px;padding:14px 14px;font:700 10px 'Space Mono',monospace;cursor:pointer;box-shadow:0 4px 12px #0006}
.apartment-room-nav button[aria-current="true"]{background:#b8df8e;color:#19301c}
.room-back{position:absolute;top:14px;left:14px;z-index:7}
.room-object{position:absolute;left:27%;top:42%;z-index:7;transform:translate(-50%,-50%)}
.apartment-room .bathroom-seam{left:59%;top:74%;width:44px;height:44px;transform:translate(-50%,-50%) skew(-4deg);border-left:2px solid #d3d0c535;border-right:2px solid #393d3848;background:linear-gradient(90deg,#d8d6c51a,#3639301a);box-shadow:none;opacity:.62;z-index:7}
.apartment-room .bathroom-seam:hover,.apartment-room .bathroom-seam:focus{opacity:.9;box-shadow:0 0 0 1px #e4e3ce77}
/* Открытая щель: кепки собраны, за плиткой светится особый убор. Отличие от базы —
   не прозрачность, а свет из-за плитки, рамка и мягкая пульсация. */
.apartment-room .bathroom-seam.open{opacity:1;border:2px solid #ffe9a8;background:radial-gradient(circle at 50% 46%,#fff6d2 0%,#ffd970 34%,#8a5f16 68%,#1b1a15 100%);box-shadow:0 0 0 2px #241d10cc,0 0 18px 5px #ffd970aa,0 0 38px 12px #ffb64d55;animation:bathroom-seam-glow 1.7s ease-in-out infinite alternate}
.apartment-room .bathroom-seam.open:hover,.apartment-room .bathroom-seam.open:focus{box-shadow:0 0 0 2px #241d10cc,0 0 26px 9px #ffe9a8cc,0 0 52px 18px #ffb64d66}
@keyframes bathroom-seam-glow{from{filter:brightness(.86)}to{filter:brightness(1.3)}}
@media(prefers-reduced-motion:reduce){.apartment-room .bathroom-seam.open{animation:none}}
.gym-rep-stage{height:130px;position:relative;margin:16px 0;border:2px solid #66766b;border-radius:12px;background:linear-gradient(180deg,#222d29,#101b17);overflow:hidden}
.gym-rep-zone{position:absolute;left:43%;width:14%;inset-block:0;background:#b9ef7b77;box-shadow:0 0 24px #bbf58c88}
.gym-rep-stage i{position:absolute;top:0;bottom:0;left:0;width:5px;background:#fff3bd;box-shadow:0 0 14px #fff}
.gym-rep-count{display:flex;justify-content:space-between;color:#d7ecce;font:700 18.2px 'Space Mono',monospace}
.cap-options{grid-template-columns:repeat(5,minmax(0,1fr))}
.cap-counter{border-color:#778b62;color:#e9f4df;font-weight:700;white-space:nowrap}.cap-counter:hover{background:#293a2b}
.cap-chip{min-width:0}
.cap-chip .cap-drawing{background-size:contain;background-position:center;background-repeat:no-repeat}
.collection-row.found{background:#344831}
.collection-row:not(.found) span{color:#acb5a7}
.bathroom-vault{max-height: min(65vh,560px);max-height: min(65svh,560px);overflow:auto;overscroll-behavior:contain}
.first-scene-help{display:flex;flex-wrap:wrap;gap:7px 15px;margin:0 0 12px;padding:10px 12px;border:1px solid #61734d;border-radius:9px;background:#263329;color:#e7f2dc;font-size:11px;line-height:1.45}.first-scene-help[hidden]{display:none}.first-scene-help b{color:var(--lime);white-space:nowrap}.first-scene-help span{flex:1 1 210px}
.next-location{flex:none;padding:8px 12px;border:1px solid #a6d56a;border-radius:8px;background:#35523a;color:#f4ffe8;font:700 11px Manrope;cursor:pointer}.next-location:hover:not(:disabled){background:#4a704b}.next-location:disabled{border-color:#465147;background:#252d28;color:#909b90;cursor:default}
@media(max-width:520px){.progress-row{flex-wrap:wrap}.progress-row .progress-track{min-width:60%}.next-location{width:100%;min-height:40px}}
.catchup-hat-peek{z-index:7;width:44px;height:38px;border:1px solid #c5f477;border-radius:12px;background-color:#121a!important;background-repeat:no-repeat;background-position:center;background-size:contain;opacity:1;filter:drop-shadow(0 2px 5px #000d);box-shadow:0 0 0 3px #c5f47799,0 0 16px #c5f47799;animation:catchup-hat-peek 1.2s ease-in-out infinite alternate;cursor:pointer}
.catchup-hat-peek:hover,.catchup-hat-peek:focus{outline:2px solid #efffd4;outline-offset:3px;transform:translate(-50%,-50%) scale(1.12)}
@keyframes catchup-hat-peek{from{translate:0 2px}to{translate:0 -3px}}
.catchup-hat-peek{width:42px;height:34px;border:0;background-color:transparent!important;box-shadow:none;filter:drop-shadow(0 2px 2px #000a);animation:none}

.fridge-game{margin:14px 0;padding:10px;border:1px solid #65715e;border-radius:10px;background:linear-gradient(180deg,#dbe4dc,#aebbb0);box-shadow:inset 0 0 18px #4a584833}.fridge-shelves{height:190px;position:relative;overflow:hidden;border:7px solid #e9eee8;border-radius:7px;background:repeating-linear-gradient(180deg,transparent 0 53px,#879489 54px 59px,#eef3ed 60px 64px);box-shadow:inset 0 0 12px #34433755}.fridge-food{position:relative;display:inline-grid;place-items:center;width:20%;height:52px;font-size:37.8px;filter:drop-shadow(0 2px 1px #334)}.fridge-mouse{position:absolute;z-index:2;font-size:44.8px;filter:drop-shadow(0 2px 2px #222);transition:left .12s,top .12s}.fridge-mouse[hidden]{display:none}@media(max-width:520px){.fridge-shelves{height:160px}.fridge-food{font-size:32.2px}}
.fridge-shelves .fridge-food{position:absolute;z-index:2;width:55px;height:52px;transform:translate(-50%,-25%);pointer-events:none}
.fridge-shelves .fridge-mouse{z-index:1;width:49px;height:43px;padding:0;border:0;background:transparent;font-size:40.6px;cursor:pointer;transform:translate(-50%,-50%);touch-action:manipulation}
.fridge-shelves .fridge-mouse:hover,.fridge-shelves .fridge-mouse:focus{outline:2px solid #415548;border-radius:50%}
.match-summary{margin:5px 0 12px;color:#d7e3d0;font-size:16.8px}.match-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:5px;max-width:390px;margin:0 auto 12px;padding:12px;border:5px solid #a68c68;border-radius:12px;background:#493a2b;box-shadow:inset 0 0 0 3px #241d18}.match-tile{aspect-ratio:1;border:2px solid #ffffff66;border-radius:8px;color:#fff;font-size:clamp(28px,7vw,46.2px);font-weight:800;text-shadow:0 2px 3px #222;box-shadow:inset 0 -5px #0003,0 2px 2px #0007;cursor:pointer;touch-action:manipulation}.match-tile.selected{outline:3px solid #fff;transform:scale(1.07);z-index:1}.match-type-0{background:#4b8e89}.match-type-1{background:#ba655b}.match-type-2{background:#c6a14e}.match-type-3{background:#6e79a4}.accept-measures{display:grid;gap:12px;margin:12px 0}.accept-measures label{display:grid;gap:5px;padding:9px;border:1px solid #596b58;border-radius:8px;background:#25342b}.accept-measures label span{font-size:15.4px;color:#d9e5d1}.accept-measures input{width:100%;accent-color:#bce774}
/* П.25 (20260928): крупный тач-бегунок для ползунков допусков — палец на телефоне
   (бегунок 30×30, зона строки 32px, touch-action:none чтобы драг не скроллил страницу). */
.accept-measures input[type=range]{height:32px;touch-action:none;-webkit-appearance:none;appearance:none;background:transparent}
.accept-measures input[type=range]::-webkit-slider-runnable-track{height:10px;border-radius:5px;background:#3c4f3e}
.accept-measures input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:30px;height:30px;margin-top:-10px;border-radius:50%;background:#bce774;border:2px solid #18251e}
.accept-measures input[type=range]::-moz-range-track{height:10px;border-radius:5px;background:#3c4f3e}
.accept-measures input[type=range]::-moz-range-thumb{width:30px;height:30px;border-radius:50%;background:#bce774;border:2px solid #18251e}.accept-compare{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0}.accept-compare>div{min-width:0;text-align:center}.accept-compare b{display:block;margin-bottom:6px;font:14px 'Space Mono',monospace;color:#c5f477}.accept-pattern{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:3px;padding:6px;border:3px solid #b59b78;border-radius:6px;background:#55402f}.accept-pattern i,.accept-pattern button{display:block;aspect-ratio:1;min-width:0;border:1px solid #ffffff66;border-radius:3px}.accept-pattern button{cursor:pointer}.accept-pattern button.accepted{outline:3px solid #c5f477}.accept-color-0{background:#d9d2b4}.accept-color-1{background:#568d91}.accept-color-2{background:#bb7659}.accept-route{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0}.accept-route button{min-height:58px;border:1px solid #75886d;border-radius:9px;background:#26362b;color:#e7f0df;cursor:pointer}.accept-route button:last-child{grid-column:1/-1}.accept-route button.accepted{background:#526c3c;color:#fff}.accept-route span{display:inline-grid;place-items:center;width:23px;height:23px;margin-right:7px;border-radius:50%;background:#b7cd8d;color:#202920}
.gym-alt-stage{position:relative;display:grid;place-items:center;min-height:145px;margin:12px 0;padding:18px;border:1px solid #52654e;border-radius:12px;background:linear-gradient(135deg,#27352b,#141e18)}.gym-alt-stage .timed-cap{right:8px;top:7px;left:auto;transform:none}.gym-plates{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;width:100%;text-align:center}.gym-plates>div{display:grid;gap:8px;padding:13px 4px;border:1px solid #8c9d82;border-radius:9px;background:#354433}.gym-plates small{color:#c3d6bb;font:12.6px 'Space Mono',monospace}.gym-plates b{font-size:28px;color:#f1e3b6}.gym-barbell{color:#c7d2c7;white-space:nowrap}.gym-memory-display{font-size:clamp(30.8px,7vw,47.6px);font-weight:800;text-align:center;color:#d6eab9}
.hat-peek{width:36px;height:28px;background-size:contain;background-position:center;background-repeat:no-repeat;opacity:.88;clip-path:inset(0 0 14% 0);touch-action:manipulation}.hat-peek:before,.hat-peek:after{display:none}.catchup-hat-peek{width:42px;height:33px;opacity:.95}.hat-peek:hover,.hat-peek:focus{opacity:1;filter:drop-shadow(0 2px 2px #172018)}
.hat-peek.last-hat-peek{width:110px!important;height:110px!important;background-size:65px auto;clip-path:none;opacity:.76!important}
.room-object.bathroom-aim-spot{left:58%;top:72%}
/* П.2б (20260928): кепка на карте (z-index:5) лежала поверх кнопок квестов —
   у .hotspot z-index не было вовсе (auto), поэтому внутри общего контейнера
   .map-hotspots (:52 index.html, z-index:6) кепка перехватывала тап.
   Поднимаем хотспоты на 6: выше кепок (5), но ниже подписи-таблетки Толи
   (.hotspot.gym-tolya-spot, 7) и внешних слоёв сцены — тост (8), nav комнат (9),
   «Выход» (10), прогресс (11), заметки (13), overlay (20/50). */
.hotspot{z-index:6}
/* G8: кепка в зале тонула под спотом Толи (:117, z-index:7 против :5 у кепки).
   Поднять кепку над семёркой нельзя — она стала бы воровать клики у Толи: рамка
   спота после ×1,3 (п.1, 20260928) достигает ~216×348 и накрывает козырёк целиком
   (кепка на карте — inline 60×45 из HAT_PEEK_STYLE, game.js:365; «последняя» 15-я —
   110×110, но она спавнится в углах карты, вне рамки Толи). Поэтому спор решён
   маршрутизацией указателя, а не порядком слоёв: прозрачная фигура событий не
   принимает, их собирает подпись-таблетка внизу рамки. Тап по телу Толи проваливается
   к кепке, тап по подписи по-прежнему открывает разговор. Картинка уже была
   pointer-events:none (:118), так что приём для этого спота не новый. Тем же разводом
   закрывается любой декор-обёртка, под которым может лечь кепка; слой кепок при этом
   остаётся единым. */
.hotspot.gym-tolya-spot{pointer-events:none}
.hotspot.gym-tolya-spot span{pointer-events:auto}

/* === ЗАЛ · визуальный слой трёх мини-игр (G2) ===
   Только дополняющие правила: базовые .gym-rep-* / .gym-alt-stage выше не переписаны,
   здесь добавлены слои сцены, акцент зоны попадания и состояния успеха/ошибки. */
.gym-rep-stage{isolation:isolate;box-shadow:inset 0 -34px 46px #0008,inset 0 2px 0 #ffffff1f,0 10px 26px #0006}
.gym-rep-track{position:absolute;inset-block:0;left:0;right:0;z-index:0;background:repeating-linear-gradient(90deg,#ffffff0d 0 1px,transparent 1px 10%)}
.gym-rep-track:after{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:#ffffff1a}
.gym-rep-zone{z-index:1;border-inline:2px solid #e6ffcb;border-radius:3px;background:linear-gradient(180deg,#c5f4771f,#b9ef7b4d 42%,#c5f4771f);box-shadow:0 0 22px #bbf58c66,inset 0 0 26px #d8ffb02e;transition:left .2s,width .2s}
.gym-rep-zone:before{content:"ЗОНА";position:absolute;left:50%;top:5px;transform:translateX(-50%);color:#16240f;font:700 11.2px 'Space Mono',monospace;letter-spacing:.1em;background:#c5f477d9;padding:1px 4px;border-radius:3px}
.gym-rep-stage i{z-index:2;width:6px;border-radius:3px;background:linear-gradient(180deg,#fffdf0,#ffe9a6);box-shadow:0 0 10px #fff,0 0 26px #ffd97ba6}
.gym-rep-count{gap:8px;margin-top:2px}
.gym-rep-count b{flex:1;text-align:center;padding:7px 6px;border:1px solid #4e6049;border-radius:8px;background:#1b2620;color:#cfe4c4;font:700 16.8px 'Space Mono',monospace}
#gymArmTap,#gymLegTap{min-width:132px;flex:1}
.gym-rep-hit,.gym-alt-hit{border-color:#c5f477!important;box-shadow:0 0 0 2px #c5f47755,0 0 26px #c5f4774d!important}
.gym-rep-hit .gym-rep-zone,.gym-alt-hit .gym-memory-cues span.active{background:#d6ffa066}
.gym-rep-miss,.gym-alt-miss{border-color:#e0705f!important;box-shadow:0 0 0 2px #e0705f4d,0 0 22px #e0705f3d!important}
.gym-rep-miss .gym-rep-zone,.gym-alt-miss .gym-memory-display{color:#ffd9cf}
.gym-rep-miss .gym-rep-zone{background:#e0705f55;border-color:#f0b6ab}
@keyframes gym-pop{from{transform:scale(.86);opacity:.35}to{transform:scale(1);opacity:1}}
.gym-plates>div{position:relative;overflow:hidden;box-shadow:inset 0 1px 0 #ffffff24}
.gym-plates>div:first-child{border-left:4px solid #c5f477}
.gym-plates>div:last-child{border-right:4px solid #c5f477}
.gym-plate-diff{display:block;color:#9fb398;font:12.6px 'Space Mono',monospace;letter-spacing:.04em}
.gym-limit-meter{display:block;height:7px;border-radius:4px;background:#20301f;box-shadow:inset 0 0 0 1px #4d5f48;overflow:hidden}
.gym-limit-meter:after{content:"";display:block;height:100%;width:calc(var(--gym-left,0) * 100% / var(--gym-limit,1));background:linear-gradient(90deg,#7fae52,#c5f477);transition:width .18s}
.gym-barbell{position:relative;display:inline-block;font-size:26.6px;letter-spacing:-1px;text-shadow:0 2px 0 #0006}
.gym-barbell:after{content:"";position:absolute;left:-6px;right:-6px;top:50%;height:2px;background:#8fa08a55;transform:translateY(-50%)}
[data-plate]{min-width:74px;flex:1 1 auto;font-variant-numeric:tabular-nums}
#plateReset{flex:1 1 100%;border-color:#8a6a52;background:#3a2b24;color:#f0dccf}
#plateReset:hover{border-color:#e0705f;background:#4a332a}
.gym-memory-round{color:#c5f477;font:700 15.4px 'Space Mono',monospace;letter-spacing:.14em;text-align:center}
.gym-memory-display{padding:9px 10px;border:1px dashed #5c7055;border-radius:10px;background:#0f1a14cc;letter-spacing:.02em;text-shadow:0 2px 6px #000a;animation:gym-pop .18s ease-out}
.gym-memory-cues{display:flex;gap:10px;justify-content:center;margin-top:12px}
.gym-memory-cues span{padding:8px 15px;border:1px solid #4f6149;border-radius:9px;background:#1d2a22;color:#9db096;font:700 16.8px 'Space Mono',monospace;transition:.14s}
.gym-memory-cues span.active{border-color:#eaffd0;background:#c5f477;color:#16240f;box-shadow:0 0 22px #c5f4778c;transform:translateY(-2px)}
.gym-memory-steps{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin-top:12px}
.gym-memory-steps i{display:grid;place-items:center;width:30px;height:30px;border:1px solid #55674f;border-radius:8px;background:#202c24;color:#8ea087;font:700 16.8px 'Space Mono',monospace;transition:.14s}
.gym-memory-steps i.done{border-color:#7fa65e;background:#33482c;color:#dcf3c6}
.gym-memory-steps i.active{border-color:#f4ffe4;background:#c5f477;color:#16240f;box-shadow:0 0 18px #c5f477a6;transform:scale(1.14)}
.gym-memory-controls button:disabled{opacity:.45;cursor:default}
.gym-memory-controls button:not(:disabled){border-color:#a6d56a;background:#2f452c;color:#f4ffe8}
@media(max-width:520px){.gym-rep-stage{height:112px}.gym-rep-count b{font-size:15.4px}#gymArmTap,#gymLegTap{min-width:0;min-height:46px}.gym-plates{gap:7px}.gym-plates b{font-size:23.8px}.gym-memory-steps i{width:26px;height:26px;font-size:15.4px}}
@media(prefers-reduced-motion:reduce){.gym-rep-zone,.gym-memory-cues span,.gym-memory-steps i,.gym-limit-meter:after,.gym-memory-display{transition:none;animation:none}}
.gym-alt-stage.gym-memory-stage{display:flex;flex-direction:column;justify-content:center;gap:9px;min-height:245px;padding:20px;background:radial-gradient(circle at 50% 15%,#425a40,#1a291f 70%,#111a16)}
.gym-memory-stage .gym-memory-display{display:grid;place-items:center;min-height:56px;width:min(430px,100%);font-size:clamp(25.2px,5.6vw,39.2px);color:#f6eac6}
.gym-memory-stage .gym-memory-cues,.gym-memory-stage .gym-memory-steps{margin-top:0}
.gym-memory-stage .gym-memory-cues span{min-width:100px;text-align:center;opacity:.6}
.gym-memory-stage .gym-memory-cues span.active{opacity:1;transform:translateY(-2px) scale(1.06)}
.gym-memory-stage>*:not(.gym-memory-coach){position:relative;z-index:1}.gym-memory-coach{position:absolute;left:0;bottom:0;height:90%;max-width:28%;object-fit:contain;object-position:bottom left;opacity:.55;filter:drop-shadow(5px 5px 4px #0009);pointer-events:none}
@media(max-width:520px){.gym-memory-coach{height:72%;opacity:.26}.gym-memory-stage .gym-memory-display{background:#0f1a14eb}}
.peel-slide,.peel-edge,.peel-hold,.peel-flick,.peel-sequence{position:relative}
.peel-card .peel-track{position:relative;display:block;height:26px;border:1px solid #566b56;border-radius:7px;background:#141c16;overflow:hidden}
.peel-edge .peel-zone{position:absolute;top:0;bottom:0;background:#c5f47733;border-left:2px solid var(--lime);border-right:2px solid var(--lime)}
.peel-edge .peel-arrow{position:absolute;right:6px;top:50%;transform:translateY(-50%);color:var(--gold);font-size:21px}
.peel-edge button,.peel-hold button{min-height:38px;font-size:15.4px}
.peel-bar{position:relative;display:block;height:14px;border:1px solid #566b56;border-radius:99px;background:#141c16;overflow:hidden}
.peel-bar>i{display:block;height:100%;width:0;background:linear-gradient(90deg,#7d9a52,var(--lime));transition:width .06s linear}
.peel-flick .peel-runner{position:absolute;left:0;top:50%;width:22px;height:22px;margin-top:-11px;border-radius:6px;background:var(--gold);cursor:ew-resize}
.peel-stack{position:relative;display:block;height:74px;border:1px dashed #566b56;border-radius:9px;background:#141c16}
.peel-step{position:absolute;width:26px;height:26px;display:grid;place-items:center;border-radius:7px;background:#c5f477;color:#141c16;font:15.4px 'Space Mono',monospace;cursor:pointer}
.peel-step.gone{opacity:.18;text-decoration:line-through;pointer-events:none}
@media(max-width:520px){.peel-card{grid-template-columns:62px 1fr 34px}.peel-stack{height:64px}.peel-step{width:22px;height:22px}}

/* G15 · «Оплата улыбкой»: четыре разные механики для квестов timingGame.
   Только новые правила с префиксом .timing-*, существующие селекторы не тронуты. */
.timing-hold-stage,.timing-series-stage,.timing-water-stage{position:relative;height:96px;border:1px solid #435345;border-radius:10px;background:linear-gradient(90deg,#873e31 0 24%,#435d36 24% 76%,#873e31 76%);overflow:hidden;margin:15px 0}
.city-scene .scene-background::after{content:"";position:absolute;inset:0;background:url('assets/city-license-plate.svg') center/100% 100% no-repeat;pointer-events:none}
.timing-hold-zone,.timing-series-zone,.timing-water-band{position:absolute;top:0;bottom:0;background:#c5f47740;border-left:2px solid #c5f477;border-right:2px solid #c5f477;pointer-events:none}
.timing-hold-bar,.timing-water-bar{height:12px;border-radius:8px;background:#303936;overflow:hidden;margin:10px 0 0}
.timing-hold-bar>i,.timing-water-bar>i{display:block;height:100%;width:0;background:linear-gradient(90deg,#7fd1a8,#c5f477);transition:width .1s linear}
.timing-water-mark{position:absolute;top:-4px;bottom:-4px;width:2px;background:#fff6ca;box-shadow:0 0 8px #fff;pointer-events:none}
.timing-rhythm-track{position:relative;display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:5px;height:74px;border:1px solid #435345;border-radius:10px;padding:8px;background:#1b231d;overflow:hidden;margin:15px 0}
.timing-rhythm-slot{display:grid;place-items:center;border:1px solid #566b56;border-radius:7px;background:#26342a;color:#8f9c8f;font:14px 'Space Mono',monospace}
.timing-rhythm-slot.timing-rhythm-marked{border-color:#c5f477;color:#c5f477;background:#2f4230}
.timing-rhythm-slot.active{background:#c5f477;color:#1b251c;box-shadow:0 0 12px #c5f47777}

/* П.17 (20260928) · кнопка «Выход» дома после всех дел: красное свечение и медленное мигание.
   Класс .exit-armed вешает JS-исполнитель, когда на карте не осталось обязательных дел. */
.exit-armed{color:#ffd9d9!important;border-color:#e4574fb3!important;background:#3a1712e6;box-shadow:0 0 14px #ff4a3d66,0 0 4px #ff4a3d55;animation:exit-armed-blink 1.8s ease-in-out infinite}
@keyframes exit-armed-blink{0%,100%{opacity:1;box-shadow:0 0 14px #ff4a3d66,0 0 4px #ff4a3d55}50%{opacity:.55;box-shadow:0 0 22px #ff6a5dcc,0 0 6px #ff6a5daa}}
@media(prefers-reduced-motion:reduce){.exit-armed{animation:none;opacity:1;color:#ffb3adb3!important;border-color:#e4574fcc!important;box-shadow:0 0 16px #ff4a3d77}}

/* П.20 (20260928) · конфетти на весь экран после победы в мини-играх.
   Разметку создаёт JS: <div class="confetti-overlay"><i class="confetti-piece" …></i></div>.
   Контракт CSS-переменных: --x (левая позиция 0–100vw), --d (длительность падения),
   --delay (задержка старта), --c (цвет), --spin (угол поворота 360–720deg —
   вынесен в отдельную переменную, т.к. угол нельзя вывести из длительности в CSS). */
.confetti-overlay{position:fixed;inset:0;pointer-events:none;z-index:95;overflow:hidden}
.confetti-piece{position:absolute;top: -10vh;top: -10svh;left:var(--x,50vw);width:10px;height:14px;border-radius:3px;background:var(--c,#ff7aa2);animation:confetti-fall var(--d,3s) linear var(--delay,0s) forwards;will-change:transform}
@keyframes confetti-fall{from{transform:translateY(0) rotate(0deg)}to{transform: translateY(120vh) rotate(var(--spin,540deg));transform: translateY(120svh) rotate(var(--spin,540deg))}}
@media(prefers-reduced-motion:reduce){.confetti-piece{display:none}}

/* П.26/27 (20260928) · полноэкранное уведомление (сбор 15 кепок, секретный убор).
   Разметку создаёт JS: .grand-notice > .grand-notice-card > .grand-notice-text + .grand-notice-btn. */
.grand-notice{position:fixed;inset:0;z-index:96;display:flex;align-items:center;justify-content:center;padding:16px;background:#080c0bd9}
.grand-notice-card{width:min(560px,calc(100vw - 32px));max-height: calc(100vh - 48px);max-height: calc(100svh - 48px);overflow:auto;overscroll-behavior:contain;padding:26px 24px 22px;border:2px solid #c5f477;border-radius:18px;background:linear-gradient(160deg,#243527,#151d16);box-shadow:0 24px 70px #000c;text-align:center}
.grand-notice-text{margin:0;color:#f2f8e9;font:700 clamp(20px,4.6vw,30px)/1.3 Manrope,system-ui,sans-serif;white-space:pre-line}
.grand-notice-text b{display:block;margin-top:10px;color:#c5f477;font-size:.72em}
.grand-notice-btn{margin-top:20px;min-height:52px;padding:12px 34px;border:1px solid #9ecf6e;border-radius:11px;background:#c5f477;color:#141c16;font:800 17px Manrope,system-ui,sans-serif;cursor:pointer;touch-action:manipulation}
.grand-notice-btn:active{transform:translateY(1px)}
@media(max-width:390px){.grand-notice{padding:10px}.grand-notice-card{padding:20px 14px 16px;border-radius:14px}.grand-notice-btn{width:100%;min-height:56px;font-size:18px}}

/* === П.12 (20260928) · ЭЛЕКТРОГИТАРА: подсветка аккордов по классам ===
   game.js (setPad) вешает на кнопки .guitar-note классы pad-lit / pad-pressed и
   дублирует эффект инлайн-стилями (инлайн остаётся запасным слоем и побеждает в
   каскаде — значения ниже совпадают с ним 1:1, поэтому визуал не «прыгает»).
   lit — жёлтое свечение (#f3e27a), pressed — зелёная рамка/фон (#3d5a3f).
   Тёмный текст на жёлтом добавлен для контраста: инлайн цвет не задаёт, а базовый
   .mini-button (#eaf3e4) на #f3e27a не читается. */
.guitar-note{transition:background .12s,box-shadow .12s}
.guitar-note.pad-lit{background:#f3e27a;border-color:#fff6c2;box-shadow:0 0 16px #ffe97a,0 0 3px #fff;color:#1c2419}
.guitar-note.pad-pressed{background:#3d5a3f;border-color:var(--lime);box-shadow:0 0 0 2px #c5f47733}
@media (prefers-reduced-motion: reduce){.guitar-note{transition:none}}
/* P.39 (B5): tap active feedback for classes without :active.
   transform only on in-flow items; room-* are absolute and .room-object carries
   translate(-50%,-50%) -- filter only there so position never jumps. */
.phone-tabs button:active,.cap-chip:active{transform:scale(.97);filter:brightness(.92)}
.room-back:active,.room-object:active,.apartment-room-nav button:active{filter:brightness(.92)}
/* P.40 (P1/P2): touch-action для скролл-контейнера телефона и тач-отклик
   остальных кнопок без :active. transform нигде не трогаем — у .hotspot,
   .hat-peek и .phone-item есть свои translate/percent-позиции. */
.phone-item,.phone-tabs button,.phone-back{touch-action:manipulation}
.phone-item:active{filter:brightness(.9)}
.quiet-button:active,.activity-choice:active,.hotspot:active,.garage-open:active,.car-offer button:active{filter:brightness(.92)}
.hat-peek:active{filter:brightness(.92);opacity:1}
