*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;overflow:hidden;background:#05080f;color:#dfe6f2;font-family:"Trebuchet MS",system-ui,sans-serif;user-select:none;-webkit-user-select:none;touch-action:none}
canvas#c{position:fixed;inset:0;width:100%;height:100%;display:block}
canvas#ov{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:3}
#vig{position:fixed;inset:0;pointer-events:none;z-index:2;background:radial-gradient(ellipse at center,rgba(0,0,0,0) 48%,rgba(0,0,8,.55) 80%,rgba(0,0,6,.9) 100%)}
#grain{position:fixed;inset:-50%;pointer-events:none;z-index:2;opacity:.5;mix-blend-mode:overlay;animation:grain .5s steps(5) infinite}
@keyframes grain{0%{transform:translate(0,0)}20%{transform:translate(-7%,4%)}40%{transform:translate(5%,-6%)}60%{transform:translate(-3%,8%)}80%{transform:translate(8%,2%)}100%{transform:translate(0,0)}}
#stinkFx{position:fixed;inset:0;pointer-events:none;z-index:2;opacity:0;background:radial-gradient(ellipse at center,rgba(150,200,40,0) 30%,rgba(120,180,30,.55) 100%);transition:opacity .3s}
#sprayFlash{position:fixed;inset:0;pointer-events:none;z-index:4;opacity:0;background:rgba(170,220,60,.75)}
#sprayFlash.go{animation:sflash 1.2s ease-out}
@keyframes sflash{0%{opacity:.95}100%{opacity:0}}
.hidden{display:none!important}
#hud{position:fixed;inset:0;pointer-events:none;z-index:5;font-size:15px}
.pill{background:rgba(8,12,22,.62);border:1px solid rgba(160,180,220,.22);border-radius:999px;padding:6px 14px;display:inline-flex;gap:8px;align-items:center;backdrop-filter:blur(3px);box-shadow:0 2px 12px rgba(0,0,0,.4)}
.lbl,.mlbl{font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:#9fb0cc}
.tl{position:absolute;left:14px;top:12px;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.clock b{font-size:1.15rem;letter-spacing:.04em;color:#f1e8c8}
.moon{color:#cfd8ff}
#toyIcons{display:inline-flex;gap:4px}
#toyIcons i{width:12px;height:12px;border-radius:50%;border:2px solid #8592ad;display:inline-block}
#toyIcons i.got{background:#ffd75a;border-color:#ffd75a;box-shadow:0 0 8px #ffd75a}
.tr{position:absolute;right:14px;top:12px;display:flex;gap:8px;pointer-events:auto}
.ib{width:42px;height:42px;border-radius:50%;border:1px solid rgba(160,180,220,.3);background:rgba(8,12,22,.62);color:#dfe6f2;font-size:16px;cursor:pointer}
.ib.off{opacity:.45;text-decoration:line-through}
.obj{position:absolute;top:14px;left:50%;transform:translateX(-50%);background:rgba(8,12,22,.55);padding:6px 16px;border-radius:10px;font-size:.95rem;color:#e9e1c2;text-shadow:0 1px 3px #000;white-space:nowrap}
.bl{position:absolute;left:14px;bottom:14px;display:flex;flex-direction:column;gap:7px;width:230px}
.meter{display:flex;align-items:center;gap:8px;background:rgba(8,12,22,.6);padding:5px 10px;border-radius:10px}
.meter .mlbl{width:58px}
.bar{flex:1;height:10px;border-radius:6px;background:rgba(255,255,255,.12);overflow:hidden}
.bar i{display:block;height:100%;width:0%;border-radius:6px;transition:width .15s}
.stink .bar i{background:linear-gradient(90deg,#6c9a1c,#b9e33c);box-shadow:0 0 10px #a5d630}
.stam .bar i{background:linear-gradient(90deg,#4a7ac0,#8fc4ff);width:100%}
.stam.tired .bar i{background:linear-gradient(90deg,#8a3a3a,#d06a5a)}
.abil{display:flex;gap:6px;flex-wrap:wrap;font-size:.72rem}
.abil span{background:rgba(8,12,22,.6);padding:3px 8px;border-radius:8px;color:#c6d0e4}
.abil span.cd{opacity:.4}
.bc{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:10px}
.sense{display:flex;gap:14px;align-items:center}
.eye,.noise{background:rgba(8,12,22,.6);border-radius:14px;padding:6px 12px;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:86px;font-size:.74rem;color:#b8c4dc;position:relative}
.eye{color:#5f6c88}
.eye svg{transition:color .2s}
.noise{height:62px;justify-content:flex-end}
.noise i{position:absolute;left:50%;top:22px;border:2px solid #8fb4ff;border-radius:50%;transform:translate(-50%,-50%);opacity:0;width:8px;height:8px}
.noise .dot{position:absolute;left:50%;top:22px;width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:50%;background:#8fb4ff}
#prompt{background:rgba(10,14,24,.8);border:1px solid rgba(255,220,140,.5);color:#ffe7a8;padding:8px 16px;border-radius:12px;font-size:.95rem}
#toast{position:absolute;left:50%;top:22%;transform:translateX(-50%);font-family:Georgia,serif;font-size:1.5rem;color:#f4e6b8;text-shadow:0 2px 10px #000,0 0 18px rgba(0,0,0,.8);opacity:0;transition:opacity .4s;text-align:center;white-space:nowrap}
#toast.on{opacity:1}
#warn{position:absolute;left:50%;top:33%;transform:translateX(-50%);font-weight:bold;font-size:1.6rem;color:#d8ff6a;text-shadow:0 0 14px #6a9a10,0 2px 4px #000;animation:pulse .3s infinite alternate;white-space:nowrap}
@keyframes pulse{from{opacity:.55;transform:translateX(-50%) scale(1)}to{opacity:1;transform:translateX(-50%) scale(1.08)}}
#sniffArrow{position:absolute;left:50%;top:42%;font-size:46px;color:#ffe08a;text-shadow:0 0 16px #ffb020;margin:-23px 0 0 -23px;transform-origin:center}
.screen{position:fixed;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;padding:16px;overflow:auto;background:rgba(3,5,10,.35)}
.card{position:relative;z-index:2;max-width:640px;width:100%;background:rgba(9,13,24,.78);border:1px solid rgba(150,170,210,.22);border-radius:20px;padding:26px 28px;text-align:center;box-shadow:0 10px 60px rgba(0,0,0,.6);backdrop-filter:blur(4px)}
.card.small{max-width:420px}
h1{font-family:Georgia,"Times New Roman",serif;font-size:3.1rem;margin:6px 0 10px;letter-spacing:.06em;color:#dfe6f2;text-shadow:0 0 22px rgba(120,160,255,.35)}
h1 span{color:#b6e04a;text-shadow:0 0 18px rgba(170,230,60,.55)}
h2{font-family:Georgia,serif;font-size:2rem;margin:4px 0 12px}
.story{line-height:1.55;color:#c7d0e2;margin:0 0 16px}
.story b{color:#ffe08a}
button{font:inherit;cursor:pointer}
.card button{display:block;width:100%;margin:8px 0;padding:11px;border-radius:12px;border:1px solid rgba(160,180,220,.3);background:rgba(30,40,66,.75);color:#e6ecf8;font-size:1rem}
.card button:hover{background:rgba(50,64,100,.85)}
.card button.big{background:linear-gradient(180deg,#5f8d1e,#3f6612);border-color:#9bd040;font-size:1.25rem;font-weight:bold;padding:14px;box-shadow:0 0 24px rgba(140,200,40,.25)}
.card button.big:hover{background:linear-gradient(180deg,#6fa024,#4a7616)}
.diff{display:flex;gap:8px;justify-content:center}
.diff button{width:auto;flex:1;padding:8px}
.diff button.on{background:#2f4f8a;border-color:#8fb4ff}
.best{min-height:1.2em;color:#ffe08a;font-size:.92rem}
.ctrl{text-align:left;margin-top:10px;background:rgba(255,255,255,.04);border-radius:12px;padding:8px 12px}
.ctrl summary{cursor:pointer;color:#a9bde0}
.ctrl .cols{display:flex;gap:16px;margin-top:8px;font-size:.88rem;line-height:1.55}
.ctrl .cols>div{flex:1}
.tips{font-size:.86rem;color:#b0bdd4;line-height:1.5}
.qual{margin-top:10px;font-size:.88rem;color:#a9b6cc;display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}
.qual button{display:inline-block;width:auto;margin:0;padding:4px 12px}
.links{display:flex;gap:14px;justify-content:center;margin-top:14px;flex-wrap:wrap}
.links a{color:#9fc2ff;text-decoration:none;font-size:.92rem}
.links a:hover{text-decoration:underline}
.eyes{display:flex;gap:22px;justify-content:center;height:14px}
.eyes i{width:14px;height:9px;border-radius:50%;background:#f8f070;box-shadow:0 0 12px #e6ff50,0 0 26px #b6e04a;animation:blink 5s infinite}
@keyframes blink{0%,92%,100%{transform:scaleY(1)}95%{transform:scaleY(.1)}}
.fog{position:absolute;inset:-20% -50%;pointer-events:none;background-repeat:repeat-x;opacity:.5;z-index:1}
.fog.f1{background:radial-gradient(ellipse at 20% 70%,rgba(140,160,200,.28),transparent 40%),radial-gradient(ellipse at 70% 80%,rgba(140,160,200,.22),transparent 45%);animation:drift 26s linear infinite}
.fog.f2{background:radial-gradient(ellipse at 40% 85%,rgba(120,140,190,.25),transparent 40%),radial-gradient(ellipse at 90% 60%,rgba(120,140,190,.18),transparent 40%);animation:drift 40s linear infinite reverse}
.fog.f3{background:radial-gradient(ellipse at 60% 95%,rgba(160,190,120,.12),transparent 45%);animation:drift 55s linear infinite}
@keyframes drift{from{transform:translateX(-12%)}to{transform:translateX(12%)}}
.greenfog{position:absolute;inset:0;background:radial-gradient(ellipse at center,rgba(150,210,40,.35),rgba(60,100,10,.75));animation:gf 3s ease-in-out infinite alternate}
@keyframes gf{from{opacity:.75}to{opacity:1}}
.sprayed{color:#c8f048;font-size:3rem;letter-spacing:.1em;text-shadow:0 0 22px #7aa018}
.sunny{background:rgba(60,40,30,.78);border-color:rgba(255,200,150,.35)}
.sunny h2{color:#ffe0a8}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:10px 0;font-size:.95rem}
.stats div{background:rgba(255,255,255,.07);border-radius:10px;padding:8px}
.stats b{display:block;color:#ffe08a;font-size:1.15rem}
#mobile{position:fixed;inset:0;z-index:6;pointer-events:none}
#joy{position:absolute;left:24px;bottom:28px;width:130px;height:130px;border-radius:50%;background:rgba(255,255,255,.08);border:2px solid rgba(255,255,255,.18);pointer-events:auto}
#knob{position:absolute;left:50%;top:50%;width:56px;height:56px;margin:-28px 0 0 -28px;border-radius:50%;background:rgba(200,215,240,.35)}
.mbtns{position:absolute;right:16px;bottom:22px;display:grid;grid-template-columns:repeat(3,64px);gap:10px;pointer-events:auto}
.mbtns button{height:56px;border-radius:16px;border:1px solid rgba(255,255,255,.25);background:rgba(15,22,38,.6);color:#e4ebf8;font-size:.82rem;font-weight:bold}
.mbtns button.on{background:rgba(80,120,40,.75);border-color:#b6e04a}
.mbtns button:active{background:rgba(70,90,130,.8)}
#loading{z-index:20;background:#05080f}
body.touch .bl{bottom:auto;top:96px;width:190px}
body.touch .abil{display:none}
body.touch .bc{bottom:12px}
body.touch .sense .noise{height:52px}
@media (max-width:700px),(max-height:500px){
  h1{font-size:2.2rem}.card{padding:18px}.story{font-size:.92rem}
  .ctrl .cols{flex-direction:column}
  .obj{top:auto;bottom:auto;top:58px;font-size:.8rem}
  #toast{font-size:1.15rem}
  #warn{font-size:1.15rem}
}
@media (max-height:500px){
  .tl{flex-direction:row}
  .obj{top:12px;left:50%}
  body.touch .bl{top:56px}
  .eye,.noise{min-width:70px;padding:4px 8px}
  .mbtns{grid-template-columns:repeat(3,58px);gap:8px}.mbtns button{height:48px}
  #joy{width:116px;height:116px}
}
#hideFx{position:fixed;inset:0;pointer-events:none;z-index:2;opacity:0;transition:opacity .4s;background:radial-gradient(ellipse 70% 60% at 50% 55%,rgba(5,20,8,0) 45%,rgba(8,28,12,.75) 80%,rgba(3,12,5,.95) 100%)}
body.hiding #hideFx{opacity:1}
@media (orientation:portrait){body.touch #objTxt{top:178px}body.touch .bc{bottom:auto;top:222px;transform:translateX(-50%) scale(.8)}body.touch #toast{top:42%;white-space:normal;width:90%}}
@media (orientation:landscape) and (max-height:500px){body.touch #objTxt{top:58px}body.touch #toast{top:34%}}
