/* The source observatory keeps its own independent stylesheet. */
:root{font-family:Inter,Segoe UI,Arial,sans-serif;color:#302a3d;background:#f3f0ea;font-synthesis:none;--ink:#302a3d;--accent:#b34d25;--purple:#7766a8;--line:#ddd8df}*{box-sizing:border-box}body{margin:0;background:#f3f0ea;color:var(--ink)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;background:#fffdfa;border:1px solid #d4ccd6;border-radius:10px;padding:11px 15px;font-weight:650;color:var(--ink);transition:transform .15s,background .15s}button:hover:not(:disabled){background:#f3e6d6;transform:translateY(-1px)}button:disabled{opacity:.45;cursor:not-allowed}.primary{background:var(--accent);border-color:var(--accent);color:white}.primary:hover:not(:disabled){background:#923d1b}a{color:#6b4b8f;text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:3px solid #d28634;outline-offset:3px}.skip{position:absolute;left:12px;top:-80px;z-index:10}.skip:focus{top:12px;background:white;padding:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0)}.topbar{height:92px;padding:0 5vw;background:#302a3d;color:#f5eee4;display:flex;align-items:center;justify-content:space-between;gap:20px;border:0;margin:0}.logo{display:flex;gap:13px;align-items:center;color:#f7ede0;font-size:30px;line-height:1.2}.logo span{font-size:12px;letter-spacing:2px}.logo b{display:block;font-size:11px;color:#d8b89f;margin-top:6px;letter-spacing:1.2px}.topbar nav{display:flex;align-items:center;gap:22px}.topbar nav a{color:#ddd3e3;font-size:13px}.topbar select{background:#43394e;color:#fff;border:1px solid #675b72;border-radius:8px;padding:8px}.local{color:#dbc8b2;font-size:10px;letter-spacing:1.3px;background:transparent}.local:before{content:'●';color:#a8c6a1;margin-right:8px}main{margin:0 auto;padding:42px 30px 16px;max-width:1420px}.intro{padding:0 0 35px;max-width:900px}.eyebrow{font-family:Consolas,monospace;font-size:11px;letter-spacing:1.8px;font-weight:600;color:#83738e}.intro h1{font-size:clamp(30px,3.4vw,48px);letter-spacing:-1.8px;font-weight:700;line-height:1.1;margin:15px 0;color:#302a3d}.intro p{font-size:16px;max-width:720px;line-height:1.7;margin:0;color:#756879}.studio-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(320px,1fr);gap:22px}.panel,.stage-panel{min-width:0;border:1px solid var(--line);border-radius:20px;background:#fffcf7;padding:28px;box-shadow:0 4px 15px #32273a03;margin:0;overflow:hidden}.panel h2{font-size:23px;letter-spacing:-.5px;margin:8px 0 10px}.panel p{font-size:14px;color:#736879;line-height:1.65;margin:8px 0 19px}.panel small,.subtle{font-size:12px;line-height:1.6;color:#766c7a}.section-head{display:flex;justify-content:space-between;align-items:center;gap:10px}.status{font-family:Consolas,monospace;font-size:10px;font-weight:700;letter-spacing:1px;background:#eee8ee;padding:7px 10px;border-radius:30px;color:#74637c;display:inline-block}.status.connected{background:#e3eedd;color:#44613d}.status.rehearsal{background:#ffdfac;color:#85501e}.status.offline,.status.disconnected,.status.stale{background:#f6ded7;color:#913b29}.stage-panel{background:#eee9f4;padding:24px 24px 18px}.companion{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:340px;padding-top:18px}.speech{background:#fffdf7;color:#51435a;border:1px solid #d8cfe0;border-radius:17px 17px 17px 2px;min-height:42px;padding:12px 24px;max-width:90%;font-size:15px;text-align:center;overflow-wrap:anywhere;box-shadow:0 4px 0 #d8cede50;z-index:2}.pet-scene{position:relative;width:min(100%,420px);text-align:center;margin-top:-14px}.pet{display:block;width:100%;height:auto;max-height:275px;overflow:visible}.pet-name{font-size:13px;font-weight:750;background:#ddd4e7;color:#574765;display:inline-block;max-width:90%;overflow-wrap:anywhere;padding:4px 18px;border-radius:100px;position:relative;top:-5px}.hamster{transform-origin:220px 260px;animation:breathe 3s ease-in-out infinite}.moving .hamster{animation:bounce .8s ease-in-out infinite}.moving .orbit{transform-origin:220px 150px;animation:spin 12s linear infinite}.eyes{transform-origin:220px 147px;animation:blink 6s infinite}.sleep-eyes{display:none}.taking-break .eyes{display:none}.taking-break .sleep-eyes{display:block}.reaction .right-paw{transform-origin:280px 202px;animation:wave .4s ease-in-out infinite alternate}.sparkles{display:none;position:absolute;inset:30% 0 auto;font-size:30px;color:#b66d37;z-index:3;pointer-events:none}.sparkles span{margin:0 110px;color:#be6684}.reaction .sparkles{display:block;animation:float 1s ease-in-out infinite alternate}.stage-foot{display:flex;justify-content:space-between;gap:12px;font-size:10px;color:#81718c;padding:8px 0 14px;line-height:1.6}.reaction-bar{display:flex;align-items:center;gap:8px;padding-top:15px;border-top:1px solid #dbd1e4;flex-wrap:wrap}.reaction-bar button{font-size:12px;padding:10px 12px}.cheer-stat{display:flex;align-items:center;gap:10px;margin-left:auto}.cheer-stat strong{font-size:26px}.cheer-stat small{font:9px Consolas,monospace;max-width:65px;letter-spacing:1px}.subtle{margin:10px 0 0}.director form{display:grid;gap:13px}.director label{display:grid;gap:7px;font-size:12px;font-weight:650}input,select,textarea{width:100%;background:#fff;border:1px solid #d8d0db;border-radius:8px;padding:11px 12px;color:#44394c;min-width:0}textarea{resize:vertical}.director .primary{margin-top:4px}#feedback{font-size:12px;margin:8px 0 0;min-height:18px;color:#765384}.goal-display{padding:10px 0 15px;display:flex;flex-direction:column;gap:8px}.goal-display strong{font-size:34px;letter-spacing:-1px}.goal-display span{font-size:12px;color:#7d6e81}progress{width:100%;height:10px;border:0;border-radius:10px;overflow:hidden;background:#e7dfea;accent-color:#8b75ad}progress::-webkit-progress-bar{background:#e7dfea}progress::-webkit-progress-value{background:#8b75ad;border-radius:10px}.inline-controls{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:20px 0 10px}.inline-controls select{width:auto}.quiet{background:transparent;font-size:12px;padding:8px 10px;border-color:#ddd6df}.game-display{padding:17px;background:#f1ecf5;border-radius:10px;font-size:14px;line-height:1.5;min-height:70px;margin:12px 0}.choice-buttons{display:flex;gap:10px}.choice-buttons button{flex:1;font-size:13px}.score{display:flex;justify-content:space-between;margin:18px 0 10px;font-size:12px}.score b{font-size:16px}.moments ol{list-style:none;padding:0;margin:0;max-height:244px;overflow:auto}.moments li{display:flex;gap:20px;border-top:1px solid #eae3eb;padding:12px 0;font-size:13px}.moments time{font:11px Consolas,monospace;color:#8a788e;white-space:nowrap;margin-top:2px}.output{background:#e9eddf;border-color:#d2d9c7}.output .eyebrow{color:#697657}.output a{font-size:12px}.output input{font:12px Consolas,monospace;background:#f8faf4}.bottom-grid{display:grid;grid-template-columns:1fr 1.4fr;gap:60px;margin:35px 5px 20px;padding-top:25px;border-top:1px solid var(--line);font-size:12px;color:#827587}.bottom-grid p{line-height:1.7}.mode-label{display:flex;align-items:center;gap:20px;font-weight:600;color:#53465c}.mode-label select{width:auto}.bottom-grid h3{font-size:14px;margin:0}.bottom-grid a{font-size:12px}footer{display:flex;justify-content:space-between;align-items:center;gap:30px;margin-top:25px;padding:25px 0;border-top:1px solid var(--line);color:#86758b;font-size:11px}footer p{margin:0}footer strong{font-weight:600;white-space:nowrap}
.overlay-only{background:transparent!important;overflow:hidden;margin:0;min-height:100vh}.overlay-widget{position:absolute;right:24px;bottom:24px;width:430px;max-width:calc(100vw - 32px);padding:18px 20px 12px;border-radius:24px;background:rgba(240,235,247,.95);border:1px solid #d4c8e1;box-shadow:0 12px 40px #1f102333}.overlay-widget .companion{min-height:0;padding-top:12px}.overlay-widget .pet{max-height:250px}.overlay-widget .speech{font-size:14px}.overlay-widget .status{display:table;margin:auto}.overlay-brand{font:9px Consolas,monospace;letter-spacing:1.5px;text-align:center;color:#88758f;margin-top:12px}#overlay-goal{text-align:center;font-size:12px;color:#685478;margin-top:8px}.overlay-widget .sparkles span{margin:0 80px}
@keyframes breathe{50%{transform:scale(1.02,1.025)}}@keyframes bounce{50%{transform:translateY(-7px) rotate(2deg)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes blink{0%,43%,47%,100%{transform:scaleY(1)}45%{transform:scaleY(.1)}}@keyframes wave{to{transform:rotate(-45deg)}}@keyframes float{to{transform:translateY(-14px);opacity:.65}}
@media(max-width:1000px){.studio-grid{grid-template-columns:minmax(0,1fr) minmax(280px,.85fr)}.panel{padding:22px}.stage-foot{flex-direction:column}.topbar nav a{display:none}.reaction-bar button{flex:1}.cheer-stat{width:100%;justify-content:center}.intro h1{max-width:650px}.sparkles span{margin:0 70px}}
@media(max-width:740px){.topbar{height:auto;min-height:82px;padding:18px 20px}.topbar nav{gap:8px}.local{display:none}.logo span{font-size:10px}.logo b{font-size:8px}.logo{font-size:25px;gap:8px}main{padding:28px 16px}.intro{padding-bottom:24px}.intro h1{font-size:33px;letter-spacing:-1px}.intro p{font-size:14px}.studio-grid,.bottom-grid{grid-template-columns:1fr;gap:18px}.panel,.stage-panel{padding:22px 18px;border-radius:17px}.companion{min-height:320px}.stage-foot{gap:3px}.reaction-bar button{flex:1 1 40%}.cheer-stat{margin-top:8px}.bottom-grid{margin:24px 0}.mode-label{flex-wrap:wrap}.moments li{gap:12px}footer{display:block}footer p{margin-top:10px;line-height:1.8}.overlay-widget{right:16px;bottom:16px}.section-head{flex-wrap:wrap}.output .inline-controls{align-items:flex-start;flex-direction:column}.topbar select{font-size:12px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.lower-third{background:#3e334d;color:#fff4e2;border-radius:8px;padding:8px 16px;font-size:13px;text-align:center;max-width:94%;overflow-wrap:anywhere;margin:8px 0}.lower-third[hidden]{display:none}
.overlay-root{background:transparent!important}
.character-toggle{display:block;margin:10px auto;font-size:11px;border-color:#c9b9d4;color:#684b7e}
.pet-canvas{display:block;width:100%;height:300px;cursor:grab;touch-action:none;border-radius:20px}.pet-canvas:active{cursor:grabbing}.pet-canvas:focus-visible{outline:3px solid #d28634}.companion[data-renderer="3d"] .pet-bite{display:none!important}
.growth-body{transform-origin:220px 273px;transition:transform .6s}.companion[data-growth=baby] .growth-body{transform:scale(.74)}.companion[data-growth=young] .growth-body{transform:scale(.86)}.companion[data-growth=star] .growth-body{transform:scale(1.04)}
.pet-accessory>*{display:none}.companion[data-accessory=bow] .wear-bow,.companion[data-accessory=flower] .wear-flower,.companion[data-accessory=crown] .wear-crown{display:block}
.pet-bite{display:none;position:absolute;top:63%;left:48%;font-size:28px;pointer-events:none}.eating .pet-bite{display:block;animation:nibble .45s alternate infinite}.eating .head{transform-origin:220px 160px;animation:nibble-head .35s alternate infinite}.eating .right-paw{transform-origin:280px 202px;animation:wave .4s alternate infinite}
.pet.touchable{cursor:pointer;touch-action:manipulation;border-radius:20px}.touch-hint{display:block;text-align:center;font-size:11px;color:#776184;line-height:1.6;margin-top:8px}
.companion[data-touch=nuzzle] .head{transform-origin:220px 190px;animation:nuzzle .7s ease-in-out infinite}.companion[data-touch=tickle] .hamster{animation:tickle .22s ease-in-out infinite}.companion[data-touch=highfive] .right-paw{transform-origin:280px 202px;animation:wave .3s ease-in-out infinite alternate}
.companion[data-touch=nuzzle] .eyes{display:none}.companion[data-touch=nuzzle] .sleep-eyes{display:block}
.pet-care{margin:12px 0 20px;padding:18px;background:#fffcf6c9;border:1px solid #d9cedf;border-radius:16px}.care-heading{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.care-heading h2{font-size:15px;margin:0;max-width:250px;line-height:1.4}.care-heading strong{font-size:10px;background:#e9dff0;padding:6px 9px;border-radius:20px}.pet-mood{font-size:12px;color:#806c83;margin:9px 0 15px}.care-meters{display:grid;grid-template-columns:1fr 1fr;gap:16px}.care-meters label{font-size:11px;font-weight:600}.care-meters progress{margin-top:8px;height:7px}#full-meter{accent-color:#b78a4e}#full-meter::-webkit-progress-value{background:#b78a4e}.next-growth{font-size:10px;color:#87718c;margin:8px 0 15px}.food-tray{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.food-tray button{font-size:21px;padding:10px 4px;display:flex;flex-direction:column;align-items:center;gap:3px;background:#fffdfa}.food-tray span{font-size:11px}.food-tray small{font-size:10px;color:#92714f}.care-feedback{font-size:11px;min-height:18px;color:#7e617f;margin:10px 0}.care-actions{display:flex;gap:8px;flex-wrap:wrap}.care-actions button{flex:1;font-size:11px;padding:10px 7px}.wardrobe{display:flex;align-items:center;gap:15px;font-size:11px;margin:15px 0 10px}.wardrobe select{flex:1;font-size:11px;padding:8px}.pet-note{display:block;font-size:10px;color:#8a788e;line-height:1.6}.paw-game{padding:14px 10px;margin-top:12px;background:#e9e2f2;border-radius:12px}.paw-game[hidden]{display:none}.paw-game p{font-size:12px;text-align:center;margin:0 0 12px}.paw-pads{display:flex;gap:10px}.paw-pads button{flex:1;font-size:25px;border-radius:15px;opacity:1;background:#fff9ee;min-height:58px}.paw-pads button.lit{background:#e7b663;box-shadow:0 0 0 4px #e7b66355;transform:translateY(-4px)}.paw-game small{display:block;font-size:10px;line-height:1.6;color:#776483;margin-top:12px}.paw-game .quiet{display:block;margin:9px auto 0;font-size:10px}
main>.studio-grid>.stage-panel{position:static}
@keyframes nibble{to{transform:translateY(-8px) rotate(12deg)}}@keyframes nibble-head{to{transform:rotate(2deg)}}@keyframes nuzzle{50%{transform:rotate(calc(7deg * var(--touch-flip))) translateY(3px)}}@keyframes tickle{50%{transform:translateX(4px) scale(1.04,.96)}}


.public-panel{align-self:start}.public-panel ol{padding-left:1.3rem;line-height:1.9}.public-panel a{display:inline-block;margin:.5rem .5rem .5rem 0}.public-panel .local-edition{border-top:1px solid #ddd5e2;margin-top:1.5rem;padding-top:1rem}.storage-warning{padding:12px;background:#fff2d7;color:#693e16;white-space:pre-wrap}.public-panel p{line-height:1.7}
