:root{--font: "Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;--font-pixel: "Pixelify Sans", "Nunito", monospace;--paper: #fff8ea;--paper-2: #f8ecd6;--paper-3: #efdcbc;--line: #e6cfa6;--line-2: #c9a576;--wood: #a8744a;--wood-dark: #7a5133;--ink: #4b3527;--ink-2: #6f5341;--muted: #957a64;--honey: #f5b84e;--honey-dark: #d28f2a;--sage: #79b48c;--sage-dark: #4f8d66;--plum: #9271d8;--plum-dark: #6d4fb3;--sky: #6aa8e2;--sky-dark: #457fb9;--rose: #ea7b74;--rose-dark: #c4544e;--radius: 16px;--shadow: 0 10px 28px rgba(58, 36, 18, .22);--lift: 0 4px 0 var(--line-2);font-family:var(--font);font-weight:600;color:var(--ink);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{margin:0;width:100%;height:100%;overflow:hidden;background:#2b211b}button,input,select,textarea{font:inherit;color:inherit}.game{position:fixed;inset:0}.game canvas{display:block;image-rendering:pixelated}.overlay{position:fixed;inset:0;pointer-events:none}.icon{display:block;flex:none}@keyframes pop-in{0%{opacity:0;transform:translateY(10px) scale(.92)}60%{opacity:1;transform:translateY(-2px) scale(1.02)}to{transform:none}}@keyframes slide-in-right{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}@keyframes drop-in{0%{opacity:0;transform:translate(-50%,-16px)}70%{transform:translate(-50%,3px)}to{opacity:1;transform:translate(-50%)}}@keyframes bob{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,-4px)}}@keyframes wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-8deg)}75%{transform:rotate(8deg)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.panel{pointer-events:auto;background:var(--paper);border:2px solid var(--line);border-radius:var(--radius);box-shadow:var(--lift),var(--shadow);color:var(--ink);padding:10px 14px;font-size:14px}.card{display:flex;flex-direction:column;gap:12px;width:min(380px,100%);padding:22px;animation:pop-in .32s cubic-bezier(.2,.9,.3,1.2)}.title{margin:0;font-family:var(--font-pixel);font-weight:700;font-size:26px;line-height:1.1;color:var(--wood-dark);letter-spacing:.5px}.subtitle{margin:0;color:var(--ink-2);font-size:14px;line-height:1.45}.fine-print{margin:0;color:var(--muted);font-size:12px;line-height:1.45}.credit{text-align:center}.credit a{color:inherit}.form-error{color:var(--rose-dark);font-size:13px;font-weight:700}.form-notice{color:var(--sage-dark);font-size:13px;font-weight:700;line-height:1.4}.screen{position:fixed;inset:0;display:grid;place-items:center;padding:16px;overflow-y:auto;background:linear-gradient(180deg,#ffecc840,#2b211ba6),url(/assets/sprites/town-map.png) center / cover no-repeat,#3b2c22;image-rendering:pixelated;animation:pan 60s ease-in-out infinite alternate}@keyframes pan{0%{background-position:center,40% 40%}to{background-position:center,60% 60%}}.modal-backdrop{position:absolute;inset:0;display:grid;place-items:center;padding:16px;background:#2b1c1061;backdrop-filter:blur(2px);pointer-events:auto;animation:fade-in .2s ease-out}.modal-backdrop>.panel{animation:pop-in .32s cubic-bezier(.2,.9,.3,1.2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-weight:800;font-size:14px;color:#4a2a0c;background:var(--honey);border:2px solid var(--honey-dark);border-radius:12px;padding:8px 16px;box-shadow:0 4px 0 var(--honey-dark);cursor:pointer;transition:transform .08s,box-shadow .08s,filter .15s}.btn:hover:not(:disabled){filter:brightness(1.06)}.btn:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 var(--honey-dark)}.btn:disabled{opacity:.55;cursor:default}.btn-secondary{color:var(--ink);background:var(--paper-2);border-color:var(--line-2);box-shadow:0 4px 0 var(--line-2)}.btn-secondary:active:not(:disabled){box-shadow:0 1px 0 var(--line-2)}.btn-google{gap:10px;color:#1f1f1f;background:#fff;border-color:#c9c9c9;box-shadow:0 4px #b9b9b9}.btn-google:active:not(:disabled){box-shadow:0 1px #b9b9b9}.btn-sage{color:#13361f;background:var(--sage);border-color:var(--sage-dark);box-shadow:0 4px 0 var(--sage-dark)}.btn-plum{color:#fff;background:var(--plum);border-color:var(--plum-dark);box-shadow:0 4px 0 var(--plum-dark)}.btn-rose{color:#fff;background:var(--rose);border-color:var(--rose-dark);box-shadow:0 4px 0 var(--rose-dark)}.link{font-size:13px;font-weight:700;color:var(--wood);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.icon-btn{display:inline-grid;place-items:center;color:var(--ink-2);background:none;border:0;border-radius:10px;padding:6px;cursor:pointer;transition:background .15s}.icon-btn:hover:not(:disabled){background:var(--paper-2);color:var(--ink)}.icon-btn:disabled{opacity:.4;cursor:default}.tool{position:relative;display:grid;place-items:center;width:44px;height:44px;color:var(--ink);background:var(--paper);border:2px solid var(--line);border-radius:14px;box-shadow:0 4px 0 var(--line-2);cursor:pointer;pointer-events:auto;transition:transform .08s,box-shadow .08s,background .15s}.tool:hover{background:#fffdf6}.tool:hover .icon{animation:wiggle .4s ease-in-out}.tool:active{transform:translateY(3px);box-shadow:0 1px 0 var(--line-2)}.tool.active{color:#fff;background:var(--plum);border-color:var(--plum-dark);box-shadow:0 4px 0 var(--plum-dark)}.tool .dot{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:var(--rose);border:2px solid var(--paper);color:#fff;font-size:10px;font-weight:900;line-height:14px;text-align:center}[data-tip]{position:relative}[data-tip]:after{content:attr(data-tip);position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%,-4px);padding:4px 8px;border-radius:8px;background:var(--ink);color:var(--paper);font-size:12px;font-weight:800;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s,transform .15s;z-index:5}[data-tip]:hover:after{opacity:1;transform:translate(-50%)}[data-tip-up]:after{top:auto;bottom:calc(100% + 8px)}.field{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:800;color:var(--ink-2)}.field input,.field select,.text-input,textarea.text-input{font-size:15px;font-weight:700;color:var(--ink);background:#fffdf8;border:2px solid var(--line);border-radius:12px;padding:9px 12px;outline:none;transition:border-color .15s,box-shadow .15s}.field input:focus,.field select:focus,.text-input:focus{border-color:var(--honey);box-shadow:0 0 0 3px #f5b84e59}.field input::placeholder,.text-input::placeholder{color:#b9a48f;font-weight:600}.field select option{color:var(--ink)}.text-input{flex:1;min-width:0}.check{display:flex;gap:8px;align-items:flex-start;font-size:13px;line-height:1.4;color:var(--ink-2)}.check input{accent-color:var(--sage-dark)}.divider{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px;font-weight:800}.divider:before,.divider:after{content:"";flex:1;height:2px;background:var(--line)}.row{display:flex;gap:8px;align-items:center}.segmented{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.segmented.two{grid-template-columns:repeat(2,1fr)}.segmented button{display:flex;flex-direction:column;gap:2px;color:var(--ink);background:var(--paper-2);border:2px solid var(--line);border-radius:12px;padding:9px 6px;cursor:pointer;transition:transform .1s,border-color .15s}.segmented button:hover:not(:disabled){transform:translateY(-2px)}.segmented button small{color:var(--muted);font-size:11px}.segmented button.selected{border-color:var(--honey-dark);background:#ffe9bf}.segmented button:disabled{opacity:.6;cursor:default}.tabs{display:flex;gap:6px;flex-wrap:wrap}.tabs button{font-size:13px;font-weight:800;color:var(--ink-2);background:var(--paper-2);border:2px solid transparent;border-radius:999px;padding:5px 13px;cursor:pointer;transition:background .15s,transform .1s}.tabs button:hover{transform:translateY(-1px)}.tabs button.selected{color:#4a2a0c;border-color:var(--honey-dark);background:var(--honey)}.tag{font-size:11px;font-weight:800;padding:2px 8px;border-radius:999px;background:#dff1e4;color:var(--sage-dark)}.badge{display:inline-block;min-width:18px;margin-left:5px;padding:0 5px;border-radius:999px;background:var(--rose);color:#fff;font-size:10px;font-weight:900;line-height:16px;text-align:center}.spinner{width:26px;height:26px;border-radius:50%;border:4px solid var(--line);border-top-color:var(--honey);animation:spin .8s linear infinite}kbd{display:inline-block;min-width:22px;padding:1px 7px;border-radius:7px;background:var(--paper);border:2px solid var(--line-2);box-shadow:0 2px 0 var(--line-2);color:var(--ink);font-family:var(--font-pixel);font-size:13px;text-align:center}.slider{display:grid;grid-template-columns:90px 1fr;align-items:center;gap:10px;font-size:13px;color:var(--ink-2)}input[type=range]{accent-color:var(--honey-dark)}.hud{position:absolute;top:12px;left:12px;display:flex;align-items:center;gap:10px;padding:8px 14px 8px 8px;animation:pop-in .35s ease-out}.hud-avatar{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:linear-gradient(180deg,#cfe8d7,#9fcfae);border:2px solid var(--sage-dark);overflow:hidden}.hud-who{display:flex;flex-direction:column;gap:3px}.hud-name{font-weight:900;font-size:15px;color:var(--ink)}.hud-stats{display:flex;gap:6px;align-items:center}.pill{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-family:var(--font);font-weight:900;font-size:14px;line-height:18px}.pill.coins{background:#ffe6a8;color:#7a4b07}.pill.streak{background:#ffd9c7;color:#a2421d}.pill.people{background:#dfeaf8;color:#2f5f92}.pill.bump{animation:pop-in .4s ease-out}.coin-float{position:absolute;left:60px;top:34px;font-family:var(--font-pixel);font-size:16px;color:#c88412;text-shadow:0 1px 0 #fff;pointer-events:none;animation:float-up 1.4s ease-out forwards}@keyframes float-up{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-34px)}}.toolbar{position:absolute;top:12px;right:12px;display:flex;gap:8px;padding:6px;border-radius:20px;background:#4b352747;backdrop-filter:blur(3px);pointer-events:auto;animation:pop-in .35s ease-out}.cap{position:absolute;top:82px;left:12px;max-width:320px;font-size:12px;padding:6px 10px}.hint{position:absolute;bottom:84px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:8px 14px;font-weight:800;white-space:nowrap;animation:drop-in .3s ease-out,bob 2.4s ease-in-out .3s infinite}.controls{position:absolute;bottom:12px;left:50%;transform:translate(-50%);display:flex;gap:12px;padding:6px 12px;border-radius:999px;background:#2b1c1073;color:#f7ead2;font-size:12px;font-weight:700;white-space:nowrap}.controls kbd{font-size:11px;padding:0 5px;min-width:18px;margin-right:3px}.house-bar{position:absolute;top:12px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;white-space:nowrap;padding:6px 8px 6px 14px;animation:drop-in .35s ease-out}.house-bar strong{font-family:var(--font-pixel);font-size:17px;color:var(--wood-dark)}.house-bar .btn{font-size:13px;padding:5px 12px}.toast{position:absolute;top:76px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;max-width:min(440px,calc(100vw - 32px));text-align:center;font-weight:800;cursor:pointer;animation:drop-in .35s cubic-bezier(.2,.9,.3,1.3)}.connection{position:absolute;inset:0;display:grid;place-items:center;background:#2b1c1073;pointer-events:auto}.connection-card{display:flex;flex-direction:column;align-items:center;gap:10px;max-width:340px;padding:22px 26px;text-align:center;animation:pop-in .3s ease-out}.connection-title{font-family:var(--font-pixel);font-size:20px;color:var(--wood-dark)}.connection-detail{color:var(--ink-2);font-size:13px;line-height:1.45}.avatar-sprite{position:relative;display:inline-block;flex:none}.avatar-sprite>span{position:absolute;inset:0;background-repeat:no-repeat;image-rendering:pixelated}.profile-setup{width:min(660px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow-y:auto}.creator{display:grid;grid-template-columns:auto 1fr;gap:20px;align-items:start}.creator-preview{display:flex;flex-direction:column;align-items:center;gap:10px}.creator-stage{display:grid;place-items:center;width:160px;height:210px;border-radius:14px;border:2px solid var(--line);background:radial-gradient(ellipse 42px 9px at 50% 178px,rgba(58,36,18,.25),transparent 70%),linear-gradient(180deg,#d9efe1,#bfe0c9 60%,#a8d3b6)}.creator-tools{display:flex;align-items:center;gap:14px}.creator-tools .icon-btn{font-size:20px}.creator-parts{display:flex;flex-direction:column;gap:14px}.creator-row{display:grid;grid-template-columns:56px 1fr;align-items:center;gap:6px 10px}.creator-row>.swatches{grid-column:2}.creator-label{font-size:13px;font-weight:800;color:var(--ink-2)}.stepper{display:flex;align-items:center;gap:6px;background:var(--paper-2);border-radius:12px;padding:2px}.stepper .icon-btn{font-size:22px;line-height:1;padding:0 8px}.stepper-value{flex:1;text-align:center;font-weight:900}.stepper-value small{font-weight:700;color:var(--muted)}.swatches{display:flex;flex-wrap:wrap;gap:6px}.swatch{width:24px;height:24px;padding:0;border:2px solid rgba(75,53,39,.5);border-radius:50%;cursor:pointer;transition:transform .12s}.swatch:hover{transform:scale(1.15)}.swatch.selected{box-shadow:0 0 0 2px var(--paper),0 0 0 4px var(--honey-dark)}.profile-actions{display:flex;justify-content:flex-end;gap:10px}.home-choice{display:flex;flex-direction:column;gap:12px}@media(max-width:560px){.creator{grid-template-columns:1fr}}.focus-card{position:absolute;right:12px;bottom:12px;display:flex;flex-direction:column;gap:10px;width:min(330px,calc(100vw - 24px));padding:16px;animation:pop-in .32s cubic-bezier(.2,.9,.3,1.2)}.focus-title{display:flex;align-items:center;gap:8px;font-family:var(--font-pixel);font-size:18px;color:var(--wood-dark)}.focus-stats{display:flex;justify-content:space-between;color:var(--ink-2);font-size:13px;font-weight:800}.shop{display:flex;flex-direction:column;gap:12px;width:min(780px,calc(100vw - 32px));max-height:min(660px,calc(100vh - 32px));padding:20px}.shop-header{display:flex;align-items:flex-start;gap:12px}.shop-header>div:first-child,.shop-header>.title{flex:1}.shop-coins{font-family:var(--font);font-weight:900;font-size:20px;color:#b07612;white-space:nowrap}.shop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;overflow-y:auto;padding:4px 4px 8px}.shop-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 10px;border-radius:14px;background:var(--paper-2);border:2px solid var(--line);text-align:center;transition:transform .15s}.shop-card:hover{transform:translateY(-3px) rotate(-.5deg)}.shop-card.locked .item-sprite-box{opacity:.45}.shop-card-name{font-weight:900;font-size:13px}.shop-card-meta{color:var(--muted);font-size:11px}.shop-card .btn{width:100%;font-size:13px}.owned{color:var(--sage-dark)}.item-sprite-box{display:grid;place-items:center;border-radius:12px;background:linear-gradient(45deg,rgba(255,255,255,.35) 25%,transparent 25%) 0 0 / 12px 12px,#e9d3ad}.item-sprite{display:block;background-repeat:no-repeat;image-rendering:pixelated}.drawer{position:absolute;top:76px;right:12px;bottom:84px;width:min(310px,calc(100vw - 24px));display:flex;flex-direction:column;gap:10px;padding:16px;overflow-y:auto;animation:slide-in-right .28s ease-out}.drawer-group{margin:6px 0 4px;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.drawer-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.drawer-item{position:relative}.drawer-name{display:block;margin-top:3px;font-size:10px;line-height:1.2;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawer-item .qty{position:absolute;right:4px;top:30px;font-family:var(--font);font-weight:900;font-size:12px;color:#fff;text-shadow:0 1px 0 var(--ink),1px 0 0 var(--ink),-1px 0 0 var(--ink),0 -1px 0 var(--ink)}.edit-drawer{top:76px}.look-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.edit-item{user-select:none;-webkit-user-drag:none;color:var(--ink);padding:0;background:none;border:2px solid transparent;border-radius:12px;cursor:grab;text-align:center;touch-action:none;transition:transform .12s}.edit-item:hover:not(:disabled){transform:translateY(-2px)}.edit-item.selected{border-color:var(--honey-dark)}.edit-item:disabled{opacity:.35;cursor:default}.drawer-actions{margin-top:auto;position:sticky;bottom:-16px;padding:10px 0 2px;background:var(--paper)}.settings{width:min(480px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow-y:auto}.upgrade{display:flex;flex-direction:column;gap:8px}.friends{width:min(460px,calc(100vw - 32px));max-height:min(620px,calc(100vh - 32px));overflow-y:auto}.friend-row{display:flex;align-items:center;gap:10px;padding:8px 6px;border-radius:12px;transition:background .15s}.friend-row:hover{background:var(--paper-2)}.friend-row.muted{opacity:.7}.friend-name{flex:1;font-weight:900}.friend-name small{color:var(--muted);font-weight:700}.friend-row .btn{font-size:12px;padding:4px 10px}.people{list-style:none;margin:0 0 8px;padding:0}.chat{position:absolute;left:12px;bottom:84px;width:min(380px,calc(100vw - 24px));display:flex;flex-direction:column;gap:8px;pointer-events:none}.chat-launcher{align-self:flex-start;display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;font-weight:800;color:var(--ink-2);cursor:pointer;pointer-events:auto}.chat-launcher kbd{font-size:11px}.chat-window{display:flex;flex-direction:column;gap:8px;padding:10px;animation:pop-in .25s ease-out}.chat-tabs{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.chat-tabs button,.chat-nearby button{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:800;color:var(--ink-2);background:var(--paper-2);border:2px solid transparent;border-radius:999px;padding:3px 10px;cursor:pointer}.chat-tabs>button.selected,.chat-tab.selected>button:first-child{color:#fff;border-color:var(--plum-dark);background:var(--plum)}.chat-tab{display:inline-flex;align-items:center}.chat-tab .close{padding:0 6px;margin-left:-2px;color:var(--muted);background:none}.chat-unread{font-size:11px;font-weight:900;color:var(--rose-dark)}.chat-nearby{display:flex;flex-wrap:wrap;align-items:center;gap:5px;font-size:12px;font-weight:800;color:var(--muted)}.chat-log{display:flex;flex-direction:column;gap:6px;max-height:240px;overflow-y:auto;padding:2px 2px 4px;scrollbar-width:thin}.chat-peek{display:flex;flex-direction:column;gap:4px;align-items:flex-start}.chat-peek .msg{animation:pop-in .25s ease-out}.msg{display:flex;align-items:flex-end;gap:6px;max-width:100%}.msg.mine{flex-direction:row-reverse}.msg-avatar{display:grid;place-items:center;flex:none;width:24px;height:24px;border-radius:8px;color:#fff;font-size:11px;font-weight:900}.msg-bubble{position:relative;min-width:0;padding:5px 10px 6px;border-radius:12px 12px 12px 4px;background:var(--paper-2);border:2px solid var(--line);font-size:13px;line-height:1.35;overflow-wrap:anywhere}.chat-peek .msg-bubble{background:#fff8eaeb;pointer-events:auto}.msg.mine .msg-bubble{border-radius:12px 12px 4px;background:#ffe6a8;border-color:#f0c66d}.msg-name{display:block;font-size:11px;font-weight:900}.msg-actions{display:none;gap:4px;margin-left:6px}.msg:hover .msg-actions{display:inline-flex}.msg-actions button{font-size:10px;font-weight:800;color:var(--muted);background:var(--paper);border:1px solid var(--line);border-radius:6px;padding:0 5px;cursor:pointer}.chat-log.private .msg-bubble{background:#ece4fb;border-color:#cbb9f1}.chat-log.private .msg.mine .msg-bubble{background:#d9cbf6}.chat-private-head{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:800;color:var(--plum-dark)}.chat-notice{font-size:12px;font-weight:800;color:var(--sky-dark);pointer-events:auto}.chat-form{display:flex;gap:6px;align-items:center;padding:4px;border-radius:14px;background:#fffdf8;border:2px solid var(--line)}.chat-form input{flex:1;min-width:0;font-size:14px;font-weight:700;background:transparent;border:0;outline:none;padding:6px}.chat-form input:disabled{opacity:.6}.chat-form .icon-btn.send{color:#fff;background:var(--plum)}.emote-bar{display:grid;grid-template-columns:repeat(10,1fr);gap:4px;padding:6px;border-radius:12px;background:var(--paper-2);animation:pop-in .2s ease-out}.emote-btn{display:grid;place-items:center;padding:2px;background:none;border:0;border-radius:8px;cursor:pointer;transition:transform .12s}.emote-btn:hover{transform:scale(1.25) translateY(-2px)}.emote-btn kbd{font-size:9px;min-width:0;padding:0 3px;margin-top:2px;box-shadow:none;border-width:1px}.ui-sprite{display:block;background-repeat:no-repeat;image-rendering:pixelated}.music{position:absolute;left:12px;bottom:12px;display:flex;flex-direction:column;gap:8px;pointer-events:none}.music-bar{display:flex;align-items:center;gap:10px;width:min(330px,calc(100vw - 24px));padding:6px 8px 6px 6px;border-radius:18px}.disc{flex:none;width:44px;height:44px;border-radius:50%;background:radial-gradient(circle,var(--paper) 0 4px,var(--ink) 5px 7px,transparent 8px),repeating-radial-gradient(circle,#3a2a20 0 2px,#4b3527 2px 4px);border:3px solid var(--honey);box-shadow:inset 0 0 0 2px #ffffff14}.disc.spinning{animation:spin 3.2s linear infinite}.music-meta{flex:1;min-width:0;display:flex;flex-direction:column}.music-meta strong{font-size:14px;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.music-meta small{color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.round-btn{display:grid;place-items:center;width:36px;height:36px;border-radius:12px;color:#fff;background:var(--plum);border:2px solid var(--plum-dark);box-shadow:0 3px 0 var(--plum-dark);cursor:pointer;transition:transform .08s}.round-btn:active{transform:translateY(2px);box-shadow:0 1px 0 var(--plum-dark)}.round-btn.ghost{color:var(--ink-2);background:var(--paper-2);border-color:var(--line-2);box-shadow:0 3px 0 var(--line-2)}.audio-panel{position:absolute;left:calc(100% + 10px);bottom:0;max-height:calc(100vh - 110px);overflow-y:auto;width:min(330px,calc(100vw - 24px));display:flex;flex-direction:column;gap:10px;padding:14px;animation:pop-in .25s ease-out}.stations{display:flex;flex-direction:column;gap:6px}.station{display:flex;align-items:center;gap:10px;padding:6px 8px;border-radius:12px;border:2px solid transparent;background:var(--paper-2);cursor:pointer;text-align:left;transition:transform .12s}.station:hover{transform:translate(3px)}.station.selected{border-color:var(--plum);background:#efe8fb}.station .swatch-dot{flex:none;width:28px;height:28px;border-radius:9px}.station span{display:flex;flex-direction:column}.station small{color:var(--muted);font-size:11px}.stats{width:min(560px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow-y:auto}.stat-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}@media(max-width:520px){.stat-tiles{grid-template-columns:repeat(2,1fr)}}.stat-tile{background:var(--paper-2);border:2px solid var(--line);border-radius:12px;padding:10px}.stat-value{font-family:var(--font);font-weight:900;font-size:22px;font-variant-numeric:tabular-nums;color:var(--wood-dark)}.stat-caption{font-size:11px;font-weight:800;color:var(--muted)}.chart{width:100%;height:auto;display:block}.chart .grid{stroke:#4b35271f;stroke-width:1}.chart .axis{fill:var(--muted);font-size:8px;font-weight:700}.chart.calendar rect.today{stroke:var(--honey-dark);stroke-width:1}.heat-legend{display:flex;align-items:center;justify-content:flex-end;gap:3px;font-size:11px;color:var(--muted)}.heat-swatch{width:11px;height:11px;border-radius:2px}.table-view{font-size:12px;color:var(--muted)}.table-view table{width:100%;margin-top:6px;border-collapse:collapse}.table-view th,.table-view td{text-align:left;padding:3px 6px;border-bottom:1px solid var(--line);color:var(--ink)}.chart-tip{position:fixed;z-index:10;pointer-events:none;font-size:12px;font-weight:800;background:var(--ink);color:var(--paper);border-radius:8px;padding:4px 8px;white-space:nowrap}.world-map{width:min(1180px,calc(100vw - 32px));display:flex;flex-direction:column;gap:12px}.wm-header{display:flex;align-items:center;gap:14px}.wm-header>div:first-child{flex:1}.wm-search{position:relative}.wm-search input{width:210px;font:inherit;font-weight:700;font-size:14px;color:var(--ink);background:var(--paper-2);border:2px solid var(--line);border-radius:12px;padding:8px 12px}.wm-search input:focus{outline:none;border-color:var(--honey)}.wm-results{position:absolute;z-index:5;top:calc(100% + 6px);right:0;width:260px;display:flex;flex-direction:column;padding:6px;background:var(--paper);border:2px solid var(--line);border-radius:14px;box-shadow:var(--shadow);animation:pop-in .2s ease-out}.wm-results button{display:grid;grid-template-columns:12px 1fr;column-gap:8px;align-items:center;text-align:left;font:inherit;font-weight:800;font-size:13px;color:var(--ink);background:none;border:0;border-radius:10px;padding:6px 8px;cursor:pointer}.wm-results button:hover{background:var(--paper-2)}.wm-results small{grid-column:2;font-weight:600;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wm-results i,.wm-legend i{display:inline-block;width:12px;height:12px;border-radius:4px;border:2px solid rgba(0,0,0,.2)}i.home{background:var(--honey)}i.friend{background:var(--sage)}i.public{background:var(--sky)}.wm-viewport{position:relative;height:min(660px,calc(100vh - 170px));min-height:340px;overflow:hidden;border-radius:18px;border:4px solid var(--wood);box-shadow:inset 0 0 0 3px #fff8ea59,inset 0 0 60px #1e3c1e59;background:#5b9c55;cursor:grab;touch-action:none;user-select:none}.wm-viewport.dragging{cursor:grabbing}.wm-world{position:absolute;left:0;top:0;transform-origin:0 0;transition:transform .08s linear}.wm-viewport.dragging .wm-world{transition:none}.wm-ground{position:absolute;inset:0}.wm-current{animation:wm-flow 3s linear infinite}@keyframes wm-flow{to{stroke-dashoffset:-72}}.wm-ripples path{animation:wm-ripple 2.8s ease-in-out infinite alternate}.wm-ripples path+path{animation-delay:-1.4s}@keyframes wm-ripple{0%{opacity:.2;transform:translate(-6px)}to{opacity:.9;transform:translate(6px)}}.wm-tree{position:absolute;background-repeat:no-repeat;image-rendering:pixelated;pointer-events:none;transform-origin:50% 100%;animation:wm-sway 4.6s ease-in-out infinite alternate}@keyframes wm-sway{0%{transform:skew(-1.5deg)}to{transform:skew(1.5deg)}}.wm-place{position:absolute;display:flex;flex-direction:column;align-items:center;font:inherit;background:none;border:0;padding:0;cursor:pointer}.wm-town{transform:translate(-50%,-50%)}.wm-town-pic{display:block;border-radius:14px;background:url(/assets/sprites/town-map.png) center / 100% 100% no-repeat;image-rendering:pixelated;box-shadow:0 0 0 4px #fff8ea,0 0 0 8px var(--wood),0 10px 0 8px var(--wood-dark);transition:transform .2s}.wm-town:hover .wm-town-pic,.wm-town.selected .wm-town-pic{transform:translateY(-4px)}.wm-banner{position:absolute;top:-34px;left:50%;transform:translate(-50%);font-family:var(--font-pixel);font-size:22px;color:#fff8ea;white-space:nowrap;background:var(--rose);border:3px solid var(--rose-dark);border-radius:10px;padding:2px 18px 4px;box-shadow:0 4px 0 var(--rose-dark);text-shadow:0 2px 0 var(--rose-dark)}.wm-banner:before,.wm-banner:after{content:"";position:absolute;top:8px;width:14px;height:22px;background:var(--rose-dark);z-index:-1}.wm-banner:before{left:-10px;clip-path:polygon(0 0,100% 0,100% 100%,0 100%,40% 50%)}.wm-banner:after{right:-10px;clip-path:polygon(0 0,100% 0,60% 50%,100% 100%,0 100%)}.wm-home{transform:translate(-50%,-100%);padding-bottom:0}.wm-home.dim{opacity:.45}.wm-house{position:relative;display:block;background-repeat:no-repeat;image-rendering:pixelated;filter:drop-shadow(0 4px 0 rgba(40,60,30,.35));transition:transform .2s cubic-bezier(.2,.9,.3,1.3)}.wm-home:hover .wm-house,.wm-home.selected .wm-house{transform:translateY(-6px) scale(1.06)}.wm-plate{position:absolute;top:calc(100% + 4px);left:50%;transform:translate(-50%);max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:900;font-size:14px;color:#3b2a1c;background:var(--paper);border:3px solid var(--line-2);border-radius:10px;padding:1px 10px 2px;box-shadow:0 3px 0 var(--line-2)}.wm-plate.home{background:var(--honey);border-color:var(--honey-dark);box-shadow:0 3px 0 var(--honey-dark)}.wm-plate.friend{background:#c8ebd0;border-color:var(--sage-dark);box-shadow:0 3px 0 var(--sage-dark)}.wm-plate.public{background:#d4e7fa;border-color:var(--sky-dark);box-shadow:0 3px 0 var(--sky-dark)}.wm-home.here .wm-plate,.wm-town.here .wm-banner{animation:wm-glow 1.6s ease-in-out infinite}@keyframes wm-glow{50%{filter:brightness(1.12) drop-shadow(0 0 6px rgba(255,240,180,.9))}}.wm-you{position:absolute;transform:translate(-50%,-100%);pointer-events:none;animation:wm-bob 1.2s ease-in-out infinite alternate}.wm-you-pin{position:relative;display:grid;place-items:center;width:46px;height:46px;background:#fff8ea;border:3px solid var(--plum);border-radius:50%;box-shadow:0 4px 0 var(--plum-dark);overflow:visible}.wm-you-pin:after{content:"";position:absolute;bottom:-12px;left:50%;transform:translate(-50%);border:8px solid transparent;border-top:10px solid var(--plum)}@keyframes wm-bob{to{transform:translate(-50%,calc(-100% - 8px))}}.wm-cloud{position:absolute;width:220px;height:90px;background:radial-gradient(circle at 30% 62%,#fff 0 26px,transparent 27px),radial-gradient(circle at 50% 42%,#fff 0 36px,transparent 37px),radial-gradient(circle at 70% 60%,#fff 0 28px,transparent 29px),radial-gradient(ellipse 46% 22% at 50% 74%,#fff 0 98%,transparent 100%);opacity:.7;filter:drop-shadow(0 34px 4px rgba(20,50,20,.22));pointer-events:none;animation:wm-drift 70s linear infinite}.wm-cloud.one{top:14%;animation-delay:-10s}.wm-cloud.two{top:56%;transform:scale(.7);animation-duration:95s;animation-delay:-60s}.wm-cloud.three{top:80%;transform:scale(.85);animation-duration:82s;animation-delay:-35s}@keyframes wm-drift{0%{left:-260px}to{left:110%}}.wm-compass{position:absolute;top:12px;right:12px;width:52px;height:52px;pointer-events:none;filter:drop-shadow(0 3px 0 rgba(0,0,0,.2))}.wm-legend{position:absolute;left:12px;top:12px;display:flex;gap:12px;font-weight:800;font-size:13px;color:var(--ink);background:var(--paper);border:2px solid var(--line);border-radius:12px;padding:6px 12px;box-shadow:0 3px 0 var(--line-2)}.wm-legend span{display:inline-flex;align-items:center;gap:6px}.wm-zoom{position:absolute;right:12px;bottom:12px;display:flex;flex-direction:column;gap:8px}.wm-spinner{position:absolute;inset:0;margin:auto}.wm-card{position:absolute;left:50%;bottom:14px;transform:translate(-50%);display:flex;align-items:center;gap:14px;width:min(440px,calc(100% - 140px));background:var(--paper);border:3px solid var(--line-2);border-radius:18px;padding:12px 16px 12px 12px;box-shadow:0 5px 0 var(--line-2),var(--shadow);cursor:default;animation:wm-card-in .28s cubic-bezier(.2,.9,.3,1.25)}@keyframes wm-card-in{0%{opacity:0;transform:translate(-50%,24px)}}.wm-card-pic{flex:none;display:grid;place-items:center;width:64px;height:64px;border-radius:14px;color:#fff;border:3px solid rgba(0,0,0,.12)}.wm-card-pic.town{background:url(/assets/sprites/town-map.png) center / cover;image-rendering:pixelated}.wm-card-pic.home{background:var(--honey)}.wm-card-pic .wm-house{filter:none}.wm-card-pic.friend{background:var(--sage)}.wm-card-pic.public{background:var(--sky)}.wm-card-body{display:flex;flex-direction:column;gap:4px;min-width:0}.wm-card-body strong{font-family:var(--font-pixel);font-size:19px;font-weight:600;color:var(--ink)}.wm-card-body small{font-size:13px;font-weight:600;color:var(--ink-2)}.wm-card-body .row{display:flex;gap:8px;margin-top:4px}.wm-chip{font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.04em;border-radius:6px;padding:1px 6px;color:#3b2a1c}.wm-chip.home{background:var(--honey)}.wm-chip.friend{background:#c8ebd0}.wm-chip.public{background:#d4e7fa}@media(max-width:640px){.wm-header{flex-wrap:wrap}.wm-search input{width:100%}.wm-legend{display:none}.wm-card{width:calc(100% - 90px);left:12px;transform:none}}.widget-layer{position:absolute;inset:0;pointer-events:none}.widget-column{position:absolute;top:76px;right:12px;bottom:160px;display:flex;flex-direction:column;align-items:flex-end;gap:10px;overflow:hidden}.widget{width:264px;display:flex;flex-direction:column;gap:8px;padding:8px 12px 12px;animation:pop-in .3s cubic-bezier(.2,.9,.3,1.3)}.widget.clock{width:auto;min-width:170px}.widget.dragging{box-shadow:0 10px 0 var(--line-2),0 24px 40px #3a241259;transform:rotate(-1deg) scale(1.02);z-index:4}.widget-head{display:flex;align-items:center;gap:6px;margin:0 -4px;cursor:grab;touch-action:none;user-select:none}.widget.dragging .widget-head{cursor:grabbing}.widget-chip{display:grid;place-items:center;width:20px;height:20px;border-radius:7px;color:#fff}.widget-name{flex:1;font-size:12px;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.widget-close{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;border:0;color:var(--paper);background:var(--ink-2);cursor:pointer;opacity:.55;transition:opacity .15s}.widget:hover .widget-close{opacity:1}.clock-btn{display:block;width:100%;background:none;border:0;padding:0;cursor:pointer}.clock-digital{display:flex;flex-direction:column;align-items:center;padding:4px 10px;border-radius:12px;background:#1f5a3f;color:#dff6e8}.clock-time{font-family:var(--font);font-weight:900;font-size:48px;line-height:1.1;font-variant-numeric:tabular-nums}.clock-time small{font-size:22px;opacity:.8}.clock-time .ampm{margin-left:4px;font-size:14px}.blink.off{opacity:.25}.clock-date{margin-bottom:4px;font-size:12px;font-weight:800;opacity:.85}.clock-analog{display:block;width:150px;height:150px;margin:0 auto}.pomodoro{display:flex;flex-direction:column;gap:8px;padding:10px;border-radius:14px;background:#fde2df;transition:background .4s}.pomodoro.short{background:#dff1e4}.pomodoro.long{background:#e3ecfa}.pomo-modes{display:flex;gap:2px;padding:3px;border-radius:10px;background:#ffffff8c}.pomo-modes button{flex:1;font-size:11px;font-weight:900;color:var(--ink-2);background:none;border:0;border-radius:8px;padding:4px 2px;cursor:pointer}.pomo-modes button.selected{background:var(--paper);color:var(--ink);box-shadow:0 2px 0 var(--line)}.pomo-main{display:flex;align-items:center;justify-content:space-between}.pomo-time{font-family:var(--font);font-weight:900;font-size:44px;line-height:1;font-variant-numeric:tabular-nums;color:var(--ink)}.pomo-bar,.todo-progress{height:8px;border-radius:999px;background:#4b35271f;overflow:hidden}.pomo-bar span,.todo-progress span{display:block;height:100%;border-radius:999px;background:var(--rose);transition:width .4s}.pomodoro.short .pomo-bar span{background:var(--sage)}.pomodoro.long .pomo-bar span{background:var(--sky)}.pomo-foot{display:flex;justify-content:space-between;font-size:12px;font-weight:800;color:var(--ink-2)}.radio-widget{display:flex;flex-direction:column;gap:8px}.yt-host,.radio-art{display:grid;place-items:center;width:240px;height:200px;border-radius:12px;overflow:hidden;background:#2b211b}.yt-host iframe{display:block;width:240px;height:200px;border:0}.disc.big{width:120px;height:120px;border-width:6px;border-color:var(--paper);background:radial-gradient(circle,var(--paper) 0 10px,var(--ink) 11px 20px,transparent 21px),repeating-radial-gradient(circle,#3a2a20 0 3px,#4b3527 3px 6px)}.radio-meta{display:flex;flex-direction:column;min-width:0}.radio-meta strong{font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.radio-meta small{color:var(--muted);font-size:12px}.radio-controls{display:flex;align-items:center;gap:6px}.radio-controls input{flex:1;min-width:0}.todo ul{list-style:none;margin:0 0 6px;padding:0;max-height:220px;overflow-y:auto}.todo li{display:flex;align-items:center;gap:8px;padding:4px 2px;font-size:13px;font-weight:700}.todo li.done span{color:var(--muted);text-decoration:line-through}.todo li span{flex:1;overflow-wrap:anywhere}.todo-check{display:grid;place-items:center;flex:none;width:20px;height:20px;border-radius:6px;border:2px solid var(--sage-dark);background:#fffdf8;color:#fff;cursor:pointer}.todo li.done .todo-check{background:var(--sage);animation:pop-in .3s ease-out}.todo-progress{margin-bottom:8px}.todo-progress span{background:var(--sage)}.todo input{width:100%;font-size:13px;padding:7px 10px}.notes{width:100%;min-height:150px;resize:vertical;font-size:14px;font-weight:700;line-height:21px;color:var(--ink);border:2px solid var(--line);border-radius:12px;padding:7px 10px;outline:none;background:repeating-linear-gradient(transparent 0 20px,#c9a57659 20px 21px) 0 6px,#fffcf0}.widget-picker{width:min(820px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow-y:auto}.widget-cats{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}@media(max-width:640px){.widget-cats{grid-template-columns:repeat(3,1fr)}}.widget-cat{position:relative;overflow:hidden;height:66px;color:#fff;font-size:16px;font-weight:900;text-shadow:0 2px 0 rgba(0,0,0,.2);border:3px solid rgba(0,0,0,.12);border-radius:14px;cursor:pointer;transition:transform .15s}.widget-cat:hover{transform:translateY(-3px)}.widget-cat.selected{border-color:var(--ink);box-shadow:0 4px 0 var(--ink)}.widget-cat-icon{position:absolute;left:-6px;top:-6px;opacity:.25}.widget-options{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.widget-preview{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px;color:var(--ink);background:var(--paper-2);border:2px solid var(--line);border-radius:16px;cursor:pointer;text-align:center;transition:transform .15s,border-color .15s}.widget-preview:hover{transform:translateY(-3px);border-color:var(--honey-dark)}.widget-preview small{color:var(--muted);font-size:11px}.widget-preview-body{display:grid;place-items:center;min-height:150px;pointer-events:none;color:var(--ink-2)}.widget-preview .clock-time{font-size:34px}.preview-big{font-family:var(--font);font-weight:900;font-size:44px;color:var(--rose-dark)}.focus-ring{position:absolute;right:12px;bottom:12px;display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 16px 12px;border-radius:28px;animation:pop-in .35s cubic-bezier(.2,.9,.3,1.3)}.ring{position:relative;width:150px;height:150px}.ring svg{width:100%;height:100%;transform:rotate(-90deg)}.ring circle{fill:none;stroke-width:10}.ring .track{stroke:var(--paper-3)}.ring .fill{stroke:var(--sage);stroke-linecap:round;transition:stroke-dashoffset 1s linear}.ring-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.ring-time{font-family:var(--font);font-weight:900;font-size:34px;line-height:1;font-variant-numeric:tabular-nums;color:var(--ink)}.ring-sub{margin-top:4px;font-size:11px;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.ring-stats{display:flex;gap:6px}.focus-vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 55%,rgba(30,20,12,.35) 100%);animation:fade-in 1.2s ease-out}.focusing-mode .toolbar,.focusing-mode .controls{opacity:.35;transition:opacity .3s}.focusing-mode .toolbar:hover{opacity:1}.transition{position:fixed;inset:0;z-index:50;overflow:hidden;pointer-events:auto}.transition.opening{pointer-events:none}.iris{position:absolute;left:50%;top:50%;width:0;height:0;border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 8px var(--honey),0 0 0 300vmax #2b211b}.transition.closing .iris{animation:iris-close .65s cubic-bezier(.45,0,.55,1) forwards}.transition.covered .iris{box-shadow:0 0 0 300vmax #2b211b}.transition.opening .iris{animation:iris-open .8s cubic-bezier(.2,.7,.3,1) forwards}@keyframes iris-close{0%{width:125vmax;height:125vmax}to{width:0;height:0}}@keyframes iris-open{0%{width:0;height:0}to{width:125vmax;height:125vmax}}.travel{position:absolute;inset:0;display:grid;place-items:center;overflow:hidden;animation:fade-in .4s ease-out .25s both}.travel-card{display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--paper);animation:pop-in .5s cubic-bezier(.2,.9,.3,1.4) .3s both}.travel-card small{font-size:13px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--honey)}.travel-card strong{font-family:var(--font-pixel);font-size:44px;line-height:1}.travel-walker{margin-top:10px;animation:walk-across 1.2s ease-in-out infinite alternate}@keyframes walk-across{0%{transform:translate(-30px)}to{transform:translate(30px)}}.cloud{position:absolute;width:220px;height:70px;border-radius:999px;background:#fff8ea1f;box-shadow:50px -24px 0 8px #fff8ea1f,110px -6px 0 2px #fff8ea1f;animation:drift 6s linear infinite}.cloud.c1{top:18%;animation-duration:7s}.cloud.c2{top:62%;animation-duration:9s;animation-delay:-3s}.cloud.c3{top:82%;transform:scale(.6);animation-duration:5s;animation-delay:-1s}@keyframes drift{0%{left:-260px}to{left:100%}}.zoom-controls{position:absolute;right:12px;bottom:12px;display:flex;flex-direction:column;gap:8px}.zoom-controls .tool:disabled{opacity:.45;cursor:default}.focus-ring,.focus-card{right:68px}.minimap{position:absolute;left:12px;top:90px;width:280px;padding:8px;animation:pop-in .3s ease-out}.minimap-head{display:flex;align-items:center;gap:6px;margin-bottom:6px}.minimap-head strong{flex:1;font-family:var(--font-pixel);font-size:17px;color:var(--wood-dark)}.minimap-view{position:relative;width:100%;aspect-ratio:68 / 50;border-radius:10px;overflow:hidden;border:2px solid var(--wood)}.minimap-world{position:absolute;inset:0;background:url(/assets/sprites/town-map.png) center / 100% 100% no-repeat;image-rendering:pixelated;transition:transform .35s ease}.mm-dot{position:absolute;width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:50%;background:#fff;border:1.5px solid var(--ink)}.mm-dot.focusing{background:var(--sage)}.mm-dot.me{width:11px;height:11px;margin:-5.5px 0 0 -5.5px;background:var(--honey);border:2px solid #fff;box-shadow:0 0 0 2px var(--ink);animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{50%{box-shadow:0 0 0 2px var(--ink),0 0 0 6px #f5b84e73}}
