:root{--ink: #241a12;--blush: #ff7aa2;--sun: #ffc76b;--sea: #6fd6c9;--paper: #fff6f2}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#0f0a08;font-family:Outfit,system-ui,-apple-system,sans-serif;color:var(--paper);-webkit-font-smoothing:antialiased}#app{position:relative;width:100vw;height:100vh}#stage{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}#hud{position:absolute;inset:0;pointer-events:none;display:flex;flex-direction:column;align-items:center;padding:clamp(20px,4vh,48px) 24px;gap:10px}.hud-kicker{font-size:clamp(11px,1.4vw,14px);letter-spacing:.34em;text-transform:uppercase;opacity:.62;font-weight:600}.hud-title{font-family:Fraunces,Georgia,serif;font-weight:800;font-size:clamp(30px,6.2vw,68px);line-height:1.02;text-align:center;margin:0;text-wrap:balance;text-shadow:0 10px 40px rgba(0,0,0,.45)}.hud-sub{font-size:clamp(14px,1.9vw,19px);opacity:.8;text-align:center;max-width:40ch;margin:0}.hud-bottom{margin-top:auto;text-align:center;font-size:clamp(12px,1.5vw,15px);opacity:.7}.hud-pill{pointer-events:auto;cursor:pointer;border:1px solid rgba(255,246,242,.28);background:#fff6f214;backdrop-filter:blur(8px);color:var(--paper);font:inherit;font-weight:600;padding:10px 22px;border-radius:999px;transition:background .2s ease,transform .2s ease}.hud-pill:hover{background:#fff6f22e;transform:translateY(-1px)}.fade-in{animation:fade-in .5s ease both}@keyframes fade-in{0%{opacity:0;transform:translateY(8px)}}.g-layer{position:absolute;inset:0;pointer-events:none;font-variant-numeric:tabular-nums}.g-top{position:absolute;top:clamp(14px,3vh,30px);left:0;right:0;display:flex;justify-content:space-between;align-items:flex-start;padding:0 clamp(16px,3vw,40px);gap:16px}.g-stat{background:#0c16226b;border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(10px);border-radius:14px;padding:9px 16px;min-width:116px}.g-stat-label{font-size:10px;letter-spacing:.22em;text-transform:uppercase;opacity:.7;font-weight:600}.g-stat-value{font-size:clamp(20px,3vw,30px);font-weight:700;line-height:1.1}.g-gate{text-align:center;padding:10px 22px;border-radius:999px;font-weight:700;font-size:clamp(14px,2.1vw,20px);letter-spacing:.04em;border:1px solid rgba(255,255,255,.2);background:#0c162273;backdrop-filter:blur(10px);transition:color .2s ease,border-color .2s ease}.g-gate.open{color:#7dffc4;border-color:#7dffc473}.g-gate.warn{color:#ffd166;border-color:#ffd16680}.g-gate.shut{color:#ff7a8a;border-color:#ff7a8a8c}.g-bar{position:absolute;left:50%;bottom:clamp(64px,11vh,104px);transform:translate(-50%);width:min(46vw,460px);height:8px;border-radius:999px;background:#ffffff29;overflow:hidden}.g-bar>i{display:block;height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,#7dffc4,#ffd166)}.g-bar-tick{position:absolute;top:-4px;width:2px;height:16px;background:#ffffffa6;border-radius:2px}.g-hint{position:absolute;left:50%;bottom:clamp(22px,5vh,46px);transform:translate(-50%);text-align:center;font-size:clamp(12px,1.6vw,15px);opacity:.78;text-shadow:0 2px 12px rgba(0,0,0,.6)}.g-key{display:inline-block;border:1px solid rgba(255,255,255,.4);border-bottom-width:2px;border-radius:6px;padding:1px 8px;margin:0 2px;font-weight:700}.g-center{position:absolute;inset:0;display:grid;place-items:center;text-align:center}.g-big{font-family:Fraunces,Georgia,serif;font-weight:800;font-size:clamp(52px,13vw,150px);line-height:1;text-shadow:0 12px 50px rgba(0,0,0,.5)}.g-flash{position:absolute;left:50%;top:30%;transform:translate(-50%);white-space:nowrap;font-family:Fraunces,Georgia,serif;font-size:clamp(22px,3.6vw,42px);font-weight:800;letter-spacing:.01em;text-shadow:0 6px 26px rgba(0,0,0,.65)}.g-quit{position:absolute;bottom:clamp(18px,4vh,38px);right:clamp(16px,3vw,40px);pointer-events:auto}.y-compass{position:absolute;left:50%;top:18%;transform:translate(-50%);text-align:center;opacity:0;transition:opacity .35s ease}.y-compass>span{display:block;font-size:clamp(38px,5vw,64px);line-height:1;color:#ffd166;text-shadow:0 0 22px rgba(255,160,60,.75)}.y-compass>em{display:block;font-style:normal;font-size:11px;letter-spacing:.3em;text-transform:uppercase;opacity:.75;margin-top:4px}.y-vig{position:absolute;inset:0;opacity:0;pointer-events:none;background:radial-gradient(ellipse at center,#0000 28%,#000000f5 82%);transition:opacity .6s linear}.y-lock{position:absolute;left:50%;top:62%;transform:translate(-50%);padding:9px 20px;border-radius:999px;border:1px solid rgba(255,255,255,.25);background:#0a08108c;backdrop-filter:blur(6px);font-size:13px;letter-spacing:.08em}.y-map{position:absolute;left:clamp(16px,3vw,40px);bottom:clamp(54px,9vh,92px);width:clamp(150px,15vw,240px);height:clamp(150px,15vw,240px);border-radius:12px;border:1px solid rgba(255,214,150,.3);background:#08060c99;box-shadow:0 10px 40px #0009;image-rendering:auto}.y-map-key{position:absolute;left:clamp(16px,3vw,40px);bottom:clamp(22px,4.5vh,48px);display:flex;gap:12px;flex-wrap:wrap;max-width:clamp(150px,15vw,240px);font-size:10px;letter-spacing:.04em;opacity:.72}.y-map-key span{display:inline-flex;align-items:center;gap:4px}.y-map-key i{width:7px;height:7px;border-radius:50%;display:inline-block}.k-lit{background:#ffb648}.k-unlit{background:#6f6152}.k-exit{background:#7dffc4}.k-art{background:#ffd166}.b-wind{position:absolute;right:clamp(16px,3vw,40px);bottom:clamp(54px,9vh,92px);text-align:center}.b-wind-dial{width:clamp(58px,6vw,84px);height:clamp(58px,6vw,84px);border-radius:50%;border:1px solid rgba(255,246,242,.32);background:#0c162273;backdrop-filter:blur(8px);display:grid;place-items:center}.b-wind-dial span{font-size:clamp(26px,3vw,38px);line-height:1;color:#8fd6ff;display:block;transition:transform .12s linear}.b-wind em{display:block;font-style:normal;font-size:10px;letter-spacing:.28em;text-transform:uppercase;opacity:.7;margin-top:6px}.b-card-wrap{position:absolute;inset:0;display:grid;place-items:center;padding:24px;pointer-events:none;opacity:0;transition:opacity .35s ease}.b-card-wrap.open{pointer-events:auto;opacity:1;background:#080e148c;backdrop-filter:blur(3px)}.b-card{--accent: #e0913a;width:min(620px,92vw);max-height:86vh;overflow-y:auto;background:#f6ecd6;color:#2f2313;border-radius:14px;border-top:6px solid var(--accent);box-shadow:0 30px 90px #0009;padding:clamp(22px,3vw,34px);animation:card-in .4s cubic-bezier(.2,.9,.2,1) both}@keyframes card-in{0%{opacity:0;transform:translateY(18px) scale(.98)}}.b-kicker{font-size:11px;letter-spacing:.3em;text-transform:uppercase;color:#2f23138c;font-weight:600}.b-card h2{font-family:Fraunces,Georgia,serif;font-size:clamp(30px,4.5vw,46px);margin:6px 0 4px;line-height:1.05}.b-dish{margin:0 0 18px;font-size:clamp(15px,1.9vw,18px);font-style:italic;color:var(--accent);filter:brightness(.72);font-weight:600}.b-card h3{font-size:11px;letter-spacing:.24em;text-transform:uppercase;margin:20px 0 6px;color:#2f23138c}.b-card p{margin:0;line-height:1.62;font-size:clamp(14px,1.7vw,16px)}.b-card footer{display:flex;gap:10px;flex-wrap:wrap;margin-top:26px;padding-top:20px;border-top:1px dashed rgba(47,35,19,.28)}.b-btn{font:inherit;font-weight:700;cursor:pointer;border-radius:999px;padding:12px 22px;border:1px solid rgba(47,35,19,.32);background:transparent;color:#2f2313;transition:background .18s ease,transform .18s ease}.b-btn:hover{background:#2f231317;transform:translateY(-1px)}.b-primary{background:var(--accent);border-color:transparent;color:#1d1509}.b-primary:hover{filter:brightness(1.08);background:var(--accent)}.b-reprov{margin-top:14px;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:#3f7a4a;font-weight:700}.b-nav{position:absolute;left:clamp(16px,3vw,40px);bottom:clamp(54px,9vh,92px);width:clamp(190px,20vw,300px);height:auto;aspect-ratio:340 / 184;border-radius:10px;border:1px solid rgba(255,214,150,.32);box-shadow:0 10px 40px #0000008c}.m-pulse{position:absolute;left:50%;bottom:clamp(96px,15vh,150px);transform:translate(-50%);width:clamp(54px,6vw,78px);height:clamp(54px,6vw,78px);border-radius:50%;border:2px solid rgba(255,246,242,.85);display:grid;place-items:center;pointer-events:none}.m-pulse>i{width:40%;height:40%;border-radius:50%;background:#ff4d6d;box-shadow:0 0 24px #ff4d6de6}.mood-wrap{position:absolute;inset:0;background:radial-gradient(120% 80% at 18% 8%,#fff5fa,#fff5fa00 60%),radial-gradient(110% 90% at 88% 22%,#ffd2e8,#ffd2e800 62%),linear-gradient(168deg,#fff7fb,#ffe1ef 46%,#f2e7ff);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(10px,2.4vh,28px);padding:clamp(16px,3vh,40px) clamp(16px,4vw,56px);pointer-events:none}.mood-head{display:flex;align-items:center;gap:clamp(10px,1.6vw,22px)}.mood-avatar{width:clamp(58px,7.5vw,104px);height:clamp(58px,7.5vw,104px);flex:none;animation:mood-pop .6s cubic-bezier(.2,1.1,.3,1) both}.mood-title{margin:0;font-family:Fraunces,Georgia,serif;font-weight:800;font-size:clamp(26px,5.2vw,62px);line-height:1.02;color:#3a2230;text-wrap:balance;animation:mood-pop .6s cubic-bezier(.2,1.1,.3,1) .06s both}.mood-grid{pointer-events:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(4px,1.4vw,26px);width:min(100%,1080px)}.mood-tile{position:relative;appearance:none;border:0;background:none;padding:clamp(6px,1.4vh,18px) 8px clamp(8px,1.6vh,20px);font:inherit;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:clamp(2px,.8vh,10px);border-radius:26px;animation:mood-rise .62s cubic-bezier(.2,1.05,.3,1) both;animation-delay:var(--d, 0ms);transition:transform .32s cubic-bezier(.2,.9,.2,1);-webkit-tap-highlight-color:transparent}.mood-tile:hover,.mood-tile:focus-visible{transform:translateY(-6px);outline:none}.mood-tile:active{transform:translateY(-2px) scale(.985)}.mood-blob{position:absolute;left:50%;top:42%;width:clamp(120px,17vw,236px);aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,var(--c) 0%,var(--c) 54%,rgba(255,255,255,0) 72%);transition:transform .36s cubic-bezier(.2,.9,.2,1),opacity .3s ease;opacity:.92;z-index:0}.mood-tile:hover .mood-blob,.mood-tile:focus-visible .mood-blob{transform:translate(-50%,-50%) scale(1.1);opacity:1}.mood-icon{position:relative;z-index:1;width:clamp(96px,13.5vw,190px);height:clamp(96px,13.5vw,190px)}.mood-label{position:relative;z-index:1;font-family:Fraunces,Georgia,serif;font-weight:800;font-size:clamp(14px,1.9vw,26px);line-height:1.14;color:#3a2230;text-align:center;max-width:15ch;text-wrap:balance}.mood-foot{pointer-events:auto}.mood-foot .hud-pill{border-color:#3a223047;background:#ffffff80;color:#3a2230}.mood-foot .hud-pill:hover{background:#fffc}@keyframes mood-rise{0%{opacity:0;transform:translateY(26px) scale(.94)}}@keyframes mood-pop{0%{opacity:0;transform:translateY(-10px)}}@media (max-width: 560px){.mood-label{max-width:12ch}}.ask-wrap{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(20px,4vh,48px) clamp(18px,5vw,60px);pointer-events:none;transition:opacity .5s ease}.ask-wrap.accepted .ask-row,.ask-wrap.accepted .ask-title{transition:transform .6s cubic-bezier(.2,.9,.2,1),opacity .6s ease}.ask-wrap.accepted .ask-row{opacity:0;transform:scale(1.14)}.ask-stack{display:flex;flex-direction:column;align-items:center;gap:clamp(12px,2.4vh,26px);width:min(100%,900px)}.ask-title{margin:0;font-family:Fraunces,Georgia,serif;font-weight:800;font-size:clamp(34px,7.4vw,86px);line-height:1;letter-spacing:-.02em;text-align:center;color:#3a2230;text-wrap:balance;animation:ask-rise .7s cubic-bezier(.2,1.05,.3,1) both}.ask-title em{font-style:normal;background:linear-gradient(96deg,#ff2e8c,#ff5fa8 48%,#ff9ecb);-webkit-background-clip:text;background-clip:text;color:transparent}.ask-sub{margin:0;font-size:clamp(14px,1.9vw,19px);color:#3a22309e;text-align:center;max-width:34ch;min-height:2.6em;animation:ask-rise .7s cubic-bezier(.2,1.05,.3,1) .08s both}.ask-row{display:flex;align-items:center;justify-content:center;gap:clamp(14px,3vw,40px);min-height:clamp(150px,22vh,230px);width:100%;animation:ask-rise .7s cubic-bezier(.2,1.05,.3,1) .16s both}.ask-btn{pointer-events:auto;appearance:none;border:0;cursor:pointer;font:inherit;font-family:Fraunces,Georgia,serif;font-weight:800;border-radius:999px;white-space:nowrap;transform:translate(var(--dx, 0px),var(--dy, 0px)) scale(var(--s, 1));transition:transform .42s cubic-bezier(.2,1.1,.3,1),box-shadow .3s ease,opacity .42s ease,filter .3s ease;-webkit-tap-highlight-color:transparent}.ask-btn:focus-visible{outline:3px solid rgba(58,34,48,.45);outline-offset:4px}.ask-yes{padding:clamp(16px,2.2vh,24px) clamp(38px,5.5vw,74px);font-size:clamp(24px,3.4vw,42px);color:#fffaf3;background:linear-gradient(140deg,#ff2e8c,#ff5fa8 58%,#ff8fc4);box-shadow:0 16px 40px #ff2e8c57,0 2px #ffffff80 inset}.ask-yes:hover{transform:translate(var(--dx, 0px),calc(var(--dy, 0px) - 4px)) scale(calc(var(--s, 1) * 1.05));box-shadow:0 22px 54px #ff2e8c70,0 2px #ffffff80 inset}.ask-yes:active{transform:translate(var(--dx, 0px),var(--dy, 0px)) scale(calc(var(--s, 1) * .97))}.ask-no{padding:clamp(12px,1.7vh,18px) clamp(26px,3.4vw,44px);font-size:clamp(17px,2.2vw,27px);color:#3a2230b8;background:#ffffff9e;box-shadow:0 6px 20px #3a22301f,0 0 0 1px #3a223021 inset}.ask-no:hover{color:#3a2230;background:#ffffffdb}.ask-no.gone{opacity:0;transform:translate(var(--dx, 0px),calc(var(--dy, 0px) + 26px)) scale(.05) rotate(-18deg);filter:blur(3px)}.ask-taunts{position:absolute;left:50%;top:clamp(16px,5vh,64px);transform:translate(-50%);width:min(92vw,620px);display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}.ask-taunt{text-align:center;animation:ask-float 2.5s cubic-bezier(.2,.7,.3,1) both}.ask-taunt strong{display:block;font-family:Fraunces,Georgia,serif;font-weight:800;font-size:clamp(18px,2.6vw,30px);line-height:1.16;color:#3a2230;text-wrap:balance}.ask-taunt span{display:block;margin-top:4px;font-size:clamp(13px,1.6vw,16px);color:#3a22308c}@keyframes ask-rise{0%{opacity:0;transform:translateY(22px)}}@keyframes ask-float{0%{opacity:0;transform:translateY(16px) scale(.94)}14%{opacity:1;transform:translateY(0) scale(1)}72%{opacity:1}to{opacity:0;transform:translateY(-34px)}}@media (prefers-reduced-motion: reduce){.ask-title,.ask-sub,.ask-row{animation:none}}.bk-wrap{position:absolute;left:0;right:0;top:25vh;bottom:0;display:flex;justify-content:center;align-items:flex-start;overflow-y:auto;padding:0 16px clamp(70px,12vh,100px);pointer-events:auto;opacity:0;transform:translateY(26px);transition:opacity .55s ease,transform .55s cubic-bezier(.2,.9,.2,1)}.bk-wrap.in{opacity:1;transform:none}.bk-card{width:min(700px,100%);background:#fff8fb;color:#2f2313;border-radius:18px;box-shadow:0 26px 80px #00000080;padding:clamp(18px,2.6vw,26px)}.bk-kicker{font-family:Fraunces,Georgia,serif;font-weight:800;font-size:clamp(20px,2.8vw,27px);margin-bottom:12px}.bk-cal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.bk-month{font-weight:700;font-size:clamp(14px,1.8vw,16px)}.bk-nav{appearance:none;border:0;background:#2f231312;color:#2f2313;width:30px;height:30px;border-radius:50%;font-size:17px;line-height:1;cursor:pointer;transition:background .18s ease}.bk-nav:hover:not(:disabled){background:#2f231326}.bk-nav:disabled{opacity:.25;cursor:default}.bk-dow,.bk-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.bk-dow{margin-bottom:3px}.bk-dow span{text-align:center;font-size:10px;font-weight:700;letter-spacing:.1em;color:#2f23136b}.bk-day{appearance:none;border:0;background:transparent;font:inherit;font-weight:600;font-size:clamp(13px,1.7vw,15px);color:#2f2313;aspect-ratio:1;border-radius:10px;cursor:pointer;transition:background .15s ease,color .15s ease,transform .15s ease}.bk-day:hover:not(:disabled){background:#ff2e8c24;transform:translateY(-1px)}.bk-day:disabled{cursor:default;color:#2f231342}.bk-day.on{background:linear-gradient(140deg,#ff2e8c,#ff6bb0);color:#fffaf3;box-shadow:0 6px 16px #ff2e8c57}.bk-day.away:disabled{color:#2f231357;background:repeating-linear-gradient(-45deg,rgba(47,35,19,.07) 0 3px,transparent 3px 6px)}.bk-pad{aspect-ratio:1}.bk-away{display:flex;align-items:center;gap:7px;margin:12px 0 4px;font-size:11.5px;letter-spacing:.02em;color:#2f231380}.bk-away-dot{width:12px;height:12px;flex:none;border-radius:3px;background:repeating-linear-gradient(-45deg,rgba(47,35,19,.3) 0 2px,transparent 2px 4px)}.bk-body{display:grid;grid-template-columns:1fr 1fr;gap:clamp(14px,2.4vw,26px);align-items:start}.bk-right{display:flex;flex-direction:column;height:100%}.bk-field{display:flex;flex-direction:column;flex:1;min-height:0}.bk-field textarea{flex:1;min-height:84px}.bk-field span{display:block;font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#2f231380;margin-bottom:4px}.bk-field input,.bk-field textarea{width:100%;font:inherit;font-size:14px;color:#2f2313;background:#2f23130d;border:1px solid rgba(47,35,19,.14);border-radius:10px;padding:9px 11px;resize:vertical;transition:border-color .18s ease,background .18s ease}.bk-field input:focus,.bk-field textarea:focus{outline:none;background:#fff;border-color:#ff2e8c}.bk-hp{position:absolute;left:-9999px;opacity:0}.bk-submit{width:100%;margin-top:auto;font:inherit;font-family:Fraunces,Georgia,serif;font-weight:800;font-size:18px;color:#fffaf3;background:linear-gradient(140deg,#ff2e8c,#ff5fa8 58%,#ff8fc4);border:0;border-radius:999px;padding:13px 20px;cursor:pointer;transition:filter .2s ease,transform .2s ease,opacity .2s ease}.bk-submit:hover:not(:disabled){filter:brightness(1.06);transform:translateY(-1px)}.bk-submit:disabled{cursor:default;opacity:.45;filter:grayscale(.5)}.bk-status{margin:9px 0 0;min-height:1.2em;font-size:13px;text-align:center}.bk-status.good{color:#2f7a4a;font-weight:700}.bk-status.bad{color:#c0392b;font-weight:600}.bk-card.sent .bk-cal,.bk-card.sent .bk-field{opacity:.5;pointer-events:none}@media (max-width: 620px){.bk-body{grid-template-columns:1fr}.bk-submit{margin-top:14px}}.hud-kicker.stow,.hud-title.stow{opacity:0;transform:translateY(-12px);transition:opacity .45s ease,transform .45s ease;pointer-events:none}
