:root{color:#29483f;font-synthesis:none;--ink:#29483f;--cream:#fffcf6;--gold:#bd7c39;background:#f0e7d8;font-family:Yu Gothic UI,Hiragino Kaku Gothic ProN,Meiryo,sans-serif;font-weight:500}*{box-sizing:border-box}body{margin:0}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible,canvas:focus-visible{outline-offset:5px;outline:3px solid #c48846}button:disabled{cursor:wait;opacity:.5}button,svg{flex-shrink:0}button{touch-action:manipulation}#app{width:100%;height:100svh;min-height:360px;position:relative;overflow:hidden}#scene{touch-action:none;-webkit-user-select:none;user-select:none;outline-offset:-4px;width:100%;height:100%;display:block}#scene.looking{cursor:grabbing}.topbar{pointer-events:none;justify-content:space-between;align-items:start;display:flex;position:absolute;inset:32px 38px auto}.brand{filter:drop-shadow(0 1px 8px #fff8)}.eyebrow{letter-spacing:.21em;font-family:Georgia,serif;font-size:12px;font-weight:600}h1{letter-spacing:.1em;align-items:center;gap:15px;margin:9px 0 0;font-family:Yu Mincho,Hiragino Mincho ProN,serif;font-size:29px;font-weight:600;display:flex}.brand-mark{color:#ac743d;font-family:Georgia,serif;font-size:33px;font-weight:400}.round-button{pointer-events:auto;background:#fffcf2d9;border:1px solid #fff8;border-radius:50%;width:43px;height:43px;font-family:Georgia,serif;font-size:20px;transition:background .2s,transform .2s;box-shadow:0 4px 20px #314d3410}.round-button:hover{background:#fff;transform:translateY(-2px)}.mood{color:#36544b;pointer-events:none;text-shadow:0 1px 6px #fff;align-items:center;gap:9px;font-size:14px;display:flex;position:absolute;top:138px;left:39px}.mood-icon{color:#b07738;font-size:21px}.bottom-bar{bottom:max(25px,env(safe-area-inset-bottom));pointer-events:none;flex-direction:column;align-items:center;gap:14px;width:max-content;max-width:calc(100% - 28px);display:flex;position:absolute;left:50%;transform:translate(-50%)}.session-note{letter-spacing:.1em;color:#476053;text-shadow:0 1px 6px #fff;font-size:13px}.controls{pointer-events:auto;background:#fffcf5f0;border:1px solid #fff9;border-radius:50px;align-items:center;gap:5px;padding:7px;display:flex;box-shadow:0 10px 40px #38351a18}.control-button{background:0 0;border:0;border-radius:40px;justify-content:center;align-items:center;gap:10px;padding:14px 21px;font-size:15px;transition:background .2s,transform .2s;display:flex}.control-button:hover{background:#e8edde}.control-button:active{transform:scale(.97)}.control-button[aria-pressed=true]{background:var(--ink);color:#fffdf3}.control-button svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:22px;height:22px}.control-button kbd{opacity:.55;border:1px solid;border-radius:4px;margin-left:7px;padding:1px 4px;font-family:inherit;font-size:11px;font-weight:500}.control-divider{background:#3453451c;width:1px;height:24px}.gesture-note{letter-spacing:.035em;color:#536353;text-shadow:0 1px 6px #fff;font-size:12px}.gesture-note span{padding:0 10px}.loading-screen{z-index:20;background:#f2e9d9;flex-direction:column;justify-content:center;align-items:center;transition:opacity .7s;display:flex;position:absolute;inset:0}.loading-screen.ready{opacity:0;pointer-events:none}.loading-screen[hidden]{display:none}.loading-paw{color:#ae7643;font-family:Georgia,serif;font-size:62px;animation:2s ease-in-out infinite breathe}.loading-screen h2{letter-spacing:.18em;margin:14px 0;font-family:Yu Mincho,serif;font-size:27px;font-weight:500}.loading-screen p{text-align:center;color:#777765;max-width:400px;margin:10px 24px;font-size:14px;line-height:1.8}.loading-screen button{background:var(--ink);color:#fff;border:0;border-radius:30px;margin-top:18px;padding:12px 24px}#pet-cursor{-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);pointer-events:none;opacity:0;background:#fff5;border:1.5px solid #fff9;border-radius:50%;place-items:center;width:55px;height:55px;transition:opacity .2s,background .2s;display:grid;position:absolute;top:0;left:0;transform:translate(-50%,-50%)}#pet-cursor.visible{opacity:1}#pet-cursor.active{background:#f8c5a269;border-color:#ffeed9}#pet-cursor span{color:#38584a;text-shadow:0 1px 2px #fff;font-size:11px}.pet-heart{pointer-events:none;color:#e59078;text-shadow:0 2px 5px #fff8;font-size:24px;animation:1.2s ease-out forwards float-heart;position:absolute;transform:translate(-50%,-50%)}dialog{width:440px;max-width:calc(100% - 32px);color:var(--ink);background:#fffcf6;border:1px solid #f9f7e9;border-radius:24px;padding:36px;box-shadow:0 22px 100px #16342633}dialog::backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#20392f60}dialog h2{margin:18px 0;font-family:Yu Mincho,serif;font-size:25px;font-weight:600}dialog p{color:#6d7569;font-size:14px;line-height:1.9}dialog dl{margin:25px 0}dialog dt{margin-top:20px;font-size:15px;font-weight:700}dialog dd{color:#647363;margin:5px 0 0;font-size:14px;line-height:1.8}.help-small{font-size:12px!important}.dialog-close{color:#859080;background:0 0;border:0;font-size:28px;position:absolute;top:15px;right:18px}.primary-button{background:var(--ink);color:var(--cream);border:0;border-radius:30px;width:100%;margin-top:15px;padding:14px 20px;font-size:15px}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes float-heart{0%{opacity:0;transform:translate(-50%,-20%)scale(.65)}15%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--drift)), -110px) scale(1.15)}}@keyframes breathe{50%{transform:scale(1.1)rotate(8deg)}}@media (width<=640px){.topbar{inset:max(24px,env(safe-area-inset-top)) 22px auto}.eyebrow{font-size:11px}h1{margin-top:7px;font-size:25px}.brand-mark{font-size:28px}.mood{font-size:13px;top:116px;left:23px}.round-button{width:40px;height:40px}.bottom-bar{bottom:max(23px,env(safe-area-inset-bottom));gap:12px}.control-button{gap:7px;padding:13px 17px;font-size:14px}.control-button kbd{display:none}.controls{gap:3px;padding:6px}.control-button svg{width:21px;height:21px}.gesture-note{letter-spacing:0;font-size:11px}.gesture-note span{padding:0 3px}.session-note{font-size:12px}dialog{padding:28px}#pet-cursor{display:none}}@media (height<=550px) and (width>=641px){.topbar{top:18px}.mood{top:112px}.bottom-bar{gap:8px;bottom:14px}.gesture-note{display:none}.control-button{padding:10px 16px}.session-note{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}.pet-heart{display:none}.loading-paw{animation:none}}dialog{max-height:calc(100svh - 32px);overflow-y:auto}@media (height<=650px) and (width<=640px){.topbar{top:max(12px,env(safe-area-inset-top))}.brand .eyebrow{font-size:9px}.brand h1{margin-top:3px;font-size:21px}.mood{font-size:12px;top:85px}.bottom-bar{bottom:max(14px,env(safe-area-inset-bottom));gap:8px}.session-note{display:none}.gesture-note{font-size:10px}}@media (width<=640px){.controls{gap:2px;padding:5px}.control-button{white-space:nowrap;flex-direction:column;gap:4px;min-width:82px;padding:9px 11px;font-size:12px}.control-button svg{width:20px;height:20px}.control-divider{height:28px}.bottom-bar{gap:10px}.mood{max-width:calc(100% - 45px);font-size:12px}}.top-actions{pointer-events:auto;align-items:center;gap:9px;display:flex}.photo-button{background:#fffcf2ed;border:1px solid #fff8;border-radius:24px;justify-content:center;align-items:center;gap:8px;height:43px;padding:0 16px;font-size:13px;display:flex;box-shadow:0 4px 20px #314d3410}.photo-button:hover{background:#fff}.photo-button svg{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:21px;height:21px}#photo-dialog{text-align:center;width:700px;max-height:calc(100svh - 24px);padding:28px}#photo-dialog .eyebrow{color:#9b714e;font-size:10px}#photo-dialog h2{margin:10px 32px 20px;font-size:24px}.photo-frame{background:#e9e5d9;border-radius:12px;justify-content:center;align-items:center;display:flex;overflow:hidden}#photo-preview{object-fit:contain;-webkit-user-select:auto;user-select:auto;-webkit-touch-callout:default;width:auto;max-width:100%;height:auto;max-height:max(140px,min(52svh,100svh - 330px));display:block}#photo-preview[hidden],#photo-actions[hidden],#photo-share[hidden]{display:none}#photo-status{margin:14px 0;font-size:13px;line-height:1.7}.photo-action-row{justify-content:center;gap:10px;display:flex}.photo-action-row>*{flex:1;justify-content:center;align-items:center;min-height:46px;margin:0;padding:12px 16px;font-size:14px;text-decoration:none;display:flex}.secondary-button{color:var(--ink);background:#e9eee3;border:1px solid #b5c4b4;border-radius:30px}.photo-action-row a:focus-visible{outline-offset:3px;outline:3px solid #c48846}#photo-dialog .photo-hint{color:#7b8071;margin:10px 0 4px;font-size:11px;line-height:1.6}.photo-return{color:#5b7567;background:0 0;border:0;border-radius:24px;min-height:44px;padding:12px 20px;font-size:13px}.photo-return:hover{background:#edf0e5}@media (width<=640px){.top-actions{gap:8px}.photo-button{width:40px;height:40px;padding:0}.photo-button span{display:none}#photo-dialog{border-radius:20px;max-width:calc(100% - 24px);padding:22px 16px}#photo-dialog h2{margin-bottom:16px;font-size:21px}}.chin-button{background:#e5ecda}.chin-button[data-locked=true]{color:#69745f;background:#eeeee3}.chin-button[aria-pressed=true]{color:#fffaf0;background:#486959}@media (width<=1040px){.controls{gap:2px;padding:5px}.control-button{white-space:nowrap;flex-direction:column;gap:4px;min-width:64px;padding:9px 6px;font-size:11px}.control-button svg{width:20px;height:20px}.control-button kbd,.control-divider{display:none}.bottom-bar{gap:10px}}.belly-button{background:#f0e5d9}.belly-button[data-locked=true]{color:#776e62;background:#efeae3}.belly-button[aria-pressed=true]{color:#fffaf0;background:#976c4e}@media (width<=540px){.controls{border-radius:23px;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px;width:286px;max-width:100%;padding:6px;display:grid}.control-button{border-radius:18px;grid-column:span 2;min-width:0}.chin-button,.belly-button{flex-direction:row;grid-column:span 3;gap:6px;min-height:44px;padding:10px 6px;font-size:12px}.chin-button svg,.belly-button svg{width:18px;height:18px}.gesture-note{font-size:10px}}@media (height<=650px) and (width<=540px){.bottom-bar{gap:8px}}.close-view-button{white-space:nowrap;background:#e7eee4}.view-controls{pointer-events:auto;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffcf5ed;border:1px solid #fff9;border-radius:28px;align-items:center;gap:4px;padding:4px;display:flex;box-shadow:0 4px 24px #38351a14}.view-controls button{background:0 0;border:0;border-radius:24px;justify-content:center;align-items:center;gap:6px;min-width:78px;min-height:44px;padding:8px 12px;font-size:12px;display:flex}.view-controls button span{font-family:system-ui,sans-serif;font-size:20px;line-height:1}.view-controls button:hover{background:#e8edde}.view-controls button:disabled{cursor:default;opacity:.35}@media (width<=640px){.view-controls{gap:2px;width:286px;max-width:100%}.view-controls button{flex:1;gap:3px;min-width:0;padding:7px 4px;font-size:11px}.view-controls button span{font-size:18px}.session-note{display:none}.bottom-bar{gap:7px}}.close-view-button[aria-pressed=true]{background:var(--ink);color:var(--cream)}.control-button.needs-focus{background:#f0dcc5;box-shadow:inset 0 0 0 1px #b6845055}.social-button{pointer-events:auto;background:#fffcf2ed;border:1px solid #fff9;border-radius:28px;align-items:center;gap:6px;min-height:44px;padding:10px 15px;font-size:13px;display:flex}.social-button span{color:#ab7655;font-size:19px}.social-button:hover{background:#fff}.social-choices{grid-template-columns:1fr 1fr;gap:10px;display:grid}.social-choices button{text-align:left;background:#f1f0e5;border:1px solid #36544b22;border-radius:15px;min-height:76px;padding:13px 12px}.social-choices button:hover{background:#e4ebdf}.social-choices strong,.social-choices span{display:block}.social-choices strong{font-size:14px}.social-choices span{color:#677566;margin-top:5px;font-size:11px;line-height:1.6}#social-dialog{max-height:calc(100svh - 32px);overflow:auto}#social-dialog h2{font-size:23px}@media (width<=540px){.social-button{padding:9px 11px;font-size:12px}.social-choices{gap:8px}#social-dialog{padding:28px 20px 18px}#social-dialog p{font-size:12px}.social-choices button{min-height:74px;padding:12px 10px}}@media (width<=380px){.brand .eyebrow{font-size:9px}.brand h1{gap:7px;font-size:21px}.top-actions{gap:5px!important}.social-button{gap:3px;padding:8px}}@media (width<=360px){.brand h1{white-space:nowrap;font-size:18px}.brand-mark{display:none}#social-dialog h2{font-size:20px}}#pet-cursor.touch-contact{-webkit-backdrop-filter:none;backdrop-filter:none;background:#e8bc8960;border:2px solid #fff4e1;width:36px;height:36px;display:grid;box-shadow:0 1px 8px #70451c22}#pet-cursor.touch-contact span{white-space:nowrap;background:#fffaf1ed;border-radius:14px;padding:5px 10px;font-size:12px;position:absolute;bottom:45px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #3453451a}@media (width<=540px){.chin-button,.belly-button{flex-direction:column;grid-column:span 2;gap:4px;min-height:0;padding:9px 6px;font-size:11px}.chin-button svg,.belly-button svg{width:20px;height:20px}.controls{grid-template-columns:repeat(6,minmax(0,1fr))}.control-button{grid-column:span 2}.chin-button,.belly-button{grid-column:span 3}}.social-choices[hidden]{display:none}.reaction-tabs{flex-wrap:wrap;gap:6px;margin:18px 0 14px;display:flex}.reaction-tabs button{white-space:nowrap;background:#f1f0e5;border:1px solid #36544b22;border-radius:22px;flex:1;min-height:44px;padding:8px 10px;font-size:12px}.reaction-tabs button[aria-pressed=true]{background:var(--ink);color:#fffdf3}@media (width<=380px){.reaction-tabs{gap:4px}.reaction-tabs button{padding:8px 6px;font-size:11px}}.mood{align-items:flex-start;max-width:calc(100% - 78px);line-height:1.6}#mood-text{text-wrap:pretty;max-width:30em}@media (width<=640px){.mood{max-width:calc(100% - 46px);font-size:12px}#mood-text{max-width:27em}.brand h1{white-space:nowrap;font-size:clamp(18px,5.4vw,22px)}.brand-mark{display:none}}.relationship-label{letter-spacing:.06em;color:#476053;text-shadow:0 1px 6px #fff;margin:9px 0 0;font-size:12px;line-height:1.4}@media (width<=640px){.relationship-label{margin-top:7px;font-size:11px}}@media (height<=650px) and (width<=640px){.relationship-label{margin-top:4px;font-size:10px}}
