:root{--bg: #f7f1e8;--card: #ffffff;--ink: #3a312a;--ink-2: #8a7d6f;--accent: #e8823a;--accent-2: #f0a04b;--danger: #d9534f;--danger-bg: #fdecea;--warn: #d99a1f;--warn-bg: #fdf3dc;--ok: #3f9e63;--ok-bg: #e8f5ec;--line: #eadfce;--shadow: 0 6px 24px rgba(90, 60, 30, .08);--radius: 16px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:PingFang SC,Microsoft YaHei,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased}button{font-family:inherit}.app{display:flex;min-height:100vh}.sidebar{width:220px;flex:none;background:#2f2a26;color:#e8ddd0;display:flex;flex-direction:column;padding:20px 14px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 18px}.brand-icon{font-size:30px}.brand-name{font-size:17px;font-weight:800;letter-spacing:.5px}.brand-sub{font-size:12px;color:#a8988a}.nav{display:flex;flex-direction:column;gap:6px;flex:1}.nav-item{display:flex;align-items:center;gap:10px;background:none;border:none;color:#cfc2b4;font-size:15px;padding:12px 14px;border-radius:12px;cursor:pointer;text-align:left;transition:background .15s,color .15s}.nav-item:hover{background:#ffffff12;color:#fff}.nav-item.active{background:var(--accent);color:#fff;font-weight:700}.nav-icon{font-size:18px}.sidebar-foot{font-size:12px;color:#a8988a;display:flex;align-items:center;gap:8px;padding:0 8px}.dot{width:8px;height:8px;border-radius:50%;background:#7fbf7f;box-shadow:0 0 6px #7fbf7f}.dot-angry,.dot-alert{background:#e88e8a;box-shadow:0 0 6px #e88e8a}.dot-worried{background:#f2b134;box-shadow:0 0 6px #f2b134}.dot-sleeping{background:#8a7d6f;box-shadow:none}.main{flex:1;padding:26px 30px 60px;min-width:0}.bottom-nav{display:none}.page{max-width:1120px;margin:0 auto}.page-narrow{max-width:720px}.page-title{margin:0 0 18px;font-size:22px}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.card-title{display:flex;justify-content:space-between;align-items:center;font-weight:700;margin-bottom:12px}.muted{color:var(--ink-2)}.small{font-size:12.5px}.btn{border:none;border-radius:12px;padding:10px 18px;font-size:14px;font-weight:600;cursor:pointer;transition:transform .1s,box-shadow .15s,background .15s}.btn:active{transform:scale(.97)}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 4px 14px #e8823a59}.btn-primary:hover{background:#d9732c}.btn-ghost{background:#f3e9dc;color:var(--ink)}.btn-ghost:hover{background:#eadcca}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#c64642}.btn-small{padding:6px 12px;font-size:13px;border-radius:10px}.btn:disabled{opacity:.5;cursor:not-allowed}.link-btn{background:none;border:none;color:var(--accent);font-size:13px;cursor:pointer;padding:2px 4px;font-weight:600}.link-btn:hover{text-decoration:underline}.link-btn.danger{color:var(--danger)}.quick-btns{display:flex;gap:8px;flex:none}.input{width:100%;padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;font-size:14px;background:#fff;color:var(--ink);outline:none;transition:border-color .15s}.input:focus{border-color:var(--accent)}.input-sm{padding:6px 8px;font-size:13px;width:auto}.field{display:flex;flex-direction:column;gap:6px;font-size:13.5px}.field>span{color:var(--ink-2);font-weight:600}.field-row{display:flex;gap:12px}.field-row .field{flex:1}.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}.badge-danger{background:var(--danger-bg);color:var(--danger)}.badge-warn{background:var(--warn-bg);color:var(--warn)}.badge-ok{background:var(--ok-bg);color:var(--ok)}.badge-primary{background:#fdeadd;color:var(--accent)}.badge-muted{background:#f0ebe3;color:var(--ink-2)}.bar{height:8px;background:#f0e6d8;border-radius:999px;overflow:hidden}.bar-lg{height:10px}.bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent-2),var(--accent));transition:width .5s ease}.home-empty{text-align:center;max-width:520px;margin:40px auto 0}.home-empty h2{margin:6px 0}.empty-actions{display:flex;flex-direction:column;gap:12px;margin-top:22px}.home-stack{display:flex;flex-direction:column;gap:16px}.overview-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.stat-card{text-align:left}.stat-label{font-size:13px;color:var(--ink-2);font-weight:600}.stat-big{font-size:28px;font-weight:800;margin:6px 0}.stat-unit{font-size:14px;font-weight:600;color:var(--ink-2);margin-left:3px}.stat-mid{font-size:19px;font-weight:800;margin:8px 0}.stat-sub{font-size:12.5px;color:var(--ink-2);margin-top:8px}.stat-sub .badge{margin-left:6px}.stat-row{display:flex;gap:8px;margin:8px 0;flex-wrap:wrap}.bar-fill-schedule{background:linear-gradient(90deg,#8fb3e0,#5b8fd6)}.bar-fill-danger{background:linear-gradient(90deg,#e88e8a,var(--danger))}.text-danger{color:var(--danger)}.stage-snapshot-list{display:flex;flex-direction:column;gap:9px}.stage-snap-row{display:flex;align-items:center;gap:10px}.stage-snap-name{width:132px;flex:none;font-size:13.5px;font-weight:600;display:flex;align-items:center;gap:6px;white-space:nowrap}.stage-snap-row .bar{flex:1}.stage-snap-pct{width:40px;flex:none;text-align:right;font-size:12.5px;color:var(--ink-2)}.stage-snap-row.active .stage-snap-name{color:var(--accent)}.quick-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px dashed var(--line)}.quick-row:last-child{border-bottom:none}.quick-name{font-weight:600;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.quick-meta{font-size:12.5px;color:var(--ink-2);margin-top:3px}.feed{max-height:300px;overflow-y:auto;display:flex;flex-direction:column;gap:12px}.feed-item{display:flex;gap:10px}.feed-avatar{width:34px;height:34px;flex:none;border-radius:50%;background:#fdeadd;display:flex;align-items:center;justify-content:center;font-size:18px}.feed-text{background:#faf4ec;padding:10px 13px;border-radius:4px 14px 14px;font-size:13.5px;line-height:1.55}.feed-time{font-size:11.5px;color:var(--ink-2);margin-top:4px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#281e1473;display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.modal{background:#fff;border-radius:18px;padding:26px;width:100%;max-width:460px;max-height:90vh;overflow-y:auto;display:flex;flex-direction:column;gap:14px;animation:pop-in .2s ease}.modal h3{margin:0}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.board-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;flex-wrap:wrap;margin-bottom:22px}.board-stats{width:300px;text-align:right}.board-pct{font-size:30px;font-weight:800;color:var(--accent)}.board-stats .bar{margin:6px 0}.board-stats .small{display:block}.timeline{position:relative;padding-left:34px}.timeline:before{content:"";position:absolute;left:13px;top:8px;bottom:8px;width:3px;border-radius:3px;background:#e8dcc8}.tl-item{position:relative;margin-bottom:18px}.tl-node{position:absolute;left:-34px;top:16px;width:29px;height:29px;border-radius:50%;background:#fff;border:3px solid #d8c9b0;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;color:var(--ink-2);z-index:2}.tl-active .tl-node{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 4px #e8823a26}.tl-done .tl-node{background:var(--ok);border-color:var(--ok);color:#fff}.tl-head{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.tl-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.tl-stage-name{font-size:16.5px;font-weight:800}.tl-owner{font-size:13px;color:var(--ink-2)}.tl-dates{font-size:13px;color:var(--ink-2);display:flex;align-items:center;gap:4px;flex-wrap:wrap}.tl-date-edit{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.edit-btn{margin-left:6px}.task-date{margin-left:6px;padding:3px 6px;font-size:12.5px}.tl-progress{display:flex;align-items:center;gap:10px;margin:10px 0 4px}.tl-progress .bar{flex:1}.task-list{margin-top:8px}.task-row{display:flex;gap:12px;padding:10px 4px;border-top:1px solid #f4ecdf}.check{width:22px;height:22px;flex:none;margin-top:1px;border:2px solid #d8c9b0;border-radius:7px;background:#fff;cursor:pointer;font-size:14px;font-weight:800;color:#fff;display:flex;align-items:center;justify-content:center;transition:all .15s}.check:hover{border-color:var(--ok)}.check.checked{background:var(--ok);border-color:var(--ok)}.task-main{flex:1;min-width:0}.task-name{font-weight:600;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.task-meta{font-size:12.5px;color:var(--ink-2);margin-top:2px}.task-done .task-name{color:var(--ink-2);text-decoration:line-through;text-decoration-color:#c9b9a4}.note-input{width:100%;margin-top:6px;border:none;border-bottom:1px dashed #e0d2bd;font-size:12.5px;padding:4px 2px;background:transparent;color:var(--ink-2);outline:none}.note-input:focus{border-bottom-color:var(--accent)}.task-add{display:flex;gap:8px;margin-top:8px;align-items:center;flex-wrap:wrap}.task-add .input{flex:1;min-width:140px}.task-add-btn{margin-top:8px}.set-card{margin-bottom:18px}.set-card h3{margin:0 0 14px;font-size:16px}.set-grid{display:flex;flex-direction:column;gap:14px;margin-bottom:14px}.set-card .btn{align-self:flex-start}.check-line{display:flex;align-items:center;gap:10px;font-size:14px;flex-wrap:wrap}.check-line input[type=checkbox]{width:17px;height:17px;accent-color:var(--accent)}.range{width:100%;accent-color:var(--accent)}.range-labels{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-2)}.data-actions{display:flex;gap:10px;flex-wrap:wrap}.diary-form{margin-bottom:18px}.diary-text{resize:vertical}.diary-form-row{display:flex;align-items:center;gap:10px;margin-top:10px;flex-wrap:wrap}.diary-form-spacer{flex:1}.diary-stage-select{min-width:180px}.diary-preview{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}.diary-preview-item{position:relative}.diary-preview-item img{width:84px;height:84px;object-fit:cover;border-radius:10px;display:block}.diary-preview-remove{position:absolute;top:-7px;right:-7px;width:22px;height:22px;border-radius:50%;border:none;background:var(--ink);color:#fff;font-size:13px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.diary-list{display:flex;flex-direction:column;gap:14px}.diary-entry-head{display:flex;align-items:center;gap:10px}.diary-entry-date{font-weight:700;font-size:14px}.diary-del-confirm{display:flex;gap:8px;align-items:center}.diary-entry-text{margin:10px 0 0;line-height:1.7;font-size:14.5px;white-space:pre-wrap}.diary-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin-top:12px}.diary-photos img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;cursor:zoom-in;display:block;transition:transform .15s}.diary-photos img:hover{transform:scale(1.03)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#140e08d1;display:flex;align-items:center;justify-content:center;z-index:200;cursor:zoom-out;padding:30px}.lightbox img{max-width:92vw;max-height:88vh;border-radius:10px}.lightbox-close{position:absolute;top:18px;right:24px;background:none;border:none;color:#fff;font-size:36px;cursor:pointer;line-height:1}.urge-modal{max-width:520px}.tone-tabs{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.tone-tab{border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:5px 14px;font-size:13px;font-weight:600;color:var(--ink-2);cursor:pointer;transition:all .15s}.tone-tab.active{background:var(--accent);border-color:var(--accent);color:#fff}.tone-desc{font-size:12px;color:var(--ink-2)}.urge-text{line-height:1.7;resize:vertical;font-size:14px}.urge-actions{margin-top:2px}.btn-copied{background:var(--ok);box-shadow:0 4px 14px #3f9e6359}.empty-hint{text-align:center;padding:34px 20px}.empty-hint h3{margin:0 0 6px}.budget-overview{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:16px}.budget-total-input{width:150px;font-weight:700}.budget-input-wrap{display:flex;align-items:center;gap:6px}.budget-bar-card{margin-bottom:16px}.budget-cats{margin-top:14px;display:flex;flex-direction:column;gap:9px}.budget-cat-row{display:flex;align-items:center;gap:10px}.budget-cat-label{width:92px;flex:none;font-size:13px;display:flex;align-items:center;gap:7px}.budget-cat-label i{width:10px;height:10px;border-radius:3px;display:inline-block;flex:none}.budget-cat-row .bar{flex:1}.budget-cat-amount{width:96px;flex:none;text-align:right;font-size:12.5px;color:var(--ink-2)}.budget-form{margin-bottom:16px}.budget-form h3{margin:0 0 14px;font-size:16px}.budget-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}.budget-note-field{grid-column:1 / -1}.budget-item{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px dashed var(--line)}.budget-item:first-child{border-top:none;padding-top:4px}.budget-item-dot{width:10px;height:10px;border-radius:50%;flex:none}.budget-item-main{flex:1;min-width:0}.budget-item-name{font-weight:600;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.budget-item-meta{font-size:12.5px;color:var(--ink-2);margin-top:2px}.budget-item-amount{font-weight:700;white-space:nowrap}@media(max-width:760px){.budget-form-grid,.overview-cards{grid-template-columns:1fr}}@media(max-width:1100px){.overview-cards{grid-template-columns:repeat(2,1fr)}.budget-overview{grid-template-columns:1fr}}@media(max-width:760px){.sidebar{display:none}.main{padding:18px 14px 84px}.bottom-nav{display:flex;position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--line);z-index:50}.bottom-nav-item{flex:1;background:none;border:none;padding:10px 0 12px;font-size:11px;color:var(--ink-2);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px}.bottom-nav-item span:first-child{font-size:20px}.bottom-nav-item.active{color:var(--accent);font-weight:700}.board-stats{width:100%;text-align:left}.board-pct{font-size:24px}}.cat-stage{position:relative;padding-top:66px;text-align:center}.cat{width:100%;max-width:340px;display:block;margin:0 auto;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.cat-img{width:100%;max-width:340px;display:block;margin:0 auto;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;aspect-ratio:360 / 340;object-fit:contain}.cat *{transform-box:fill-box}.cat-body,.cat-head,.cat-tail,.cat-ruff,.cat-paws,.cat-ear-l,.cat-ear-r{transform-box:view-box}.cat-shadow{animation:shadow-pulse 3.8s ease-in-out infinite;transform-origin:center}@keyframes shadow-pulse{0%,to{transform:scaleX(1);opacity:.12}50%{transform:scaleX(.95);opacity:.09}}.cat-body{transform-origin:180px 300px;animation:breathe 3.8s ease-in-out infinite}@keyframes breathe{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.015)}}.cat-ruff{transform-origin:180px 220px;animation:ruff-breathe 3.8s ease-in-out infinite}@keyframes ruff-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.02,1.035)}}.cat-head{transform-origin:180px 150px;animation:head-sway 6.5s ease-in-out infinite}@keyframes head-sway{0%,to{transform:rotate(0)}30%{transform:rotate(1.8deg)}70%{transform:rotate(-1.8deg)}}.cat-tail{transform-origin:124px 274px;animation:tail-sway 3.4s ease-in-out infinite}@keyframes tail-sway{0%,to{transform:rotate(0)}50%{transform:rotate(8deg)}}.eye-full,.eye-closed,.eye-brow{display:none}.cat-eye{transform-origin:center;animation:blink 5.2s infinite}@keyframes blink{0%,45%,51%,to{transform:scaleY(1)}48%{transform:scaleY(.05)}}.cat-state-worried .eye-full,.cat-state-angry .eye-full,.cat-state-alert .eye-full,.cat-state-celebrate .eye-full{display:block}.cat-state-worried .eye-lazy,.cat-state-angry .eye-lazy,.cat-state-alert .eye-lazy,.cat-state-celebrate .eye-lazy,.cat-state-sleeping .eye-lazy,.cat-state-sleeping .eye-full{display:none}.cat-state-sleeping .eye-closed{display:block}.cat-ear-l{transform-origin:158px 62px}.cat-ear-r{transform-origin:202px 62px}.cat-twitch .cat-ear-l{animation:ear-twitch-l .5s ease-in-out}.cat-twitch .cat-ear-r{animation:ear-twitch-r .5s ease-in-out}@keyframes ear-twitch-l{0%,to{transform:rotate(0)}40%{transform:rotate(-10deg)}}@keyframes ear-twitch-r{0%,to{transform:rotate(0)}40%{transform:rotate(10deg)}}.cat-state-worried .eye-pupil{animation:dart 1.1s ease-in-out infinite}@keyframes dart{0%,to{transform:translate(0)}30%{transform:translate(3px)}65%{transform:translate(-3px)}}.cat-state-worried .cat-tail{animation:tail-sway 1.1s ease-in-out infinite}.cat-state-worried .cat-ear-l{transform:rotate(5deg)}.cat-state-worried .cat-ear-r{transform:rotate(-5deg)}.cat-state-angry .cat-eye{animation:none;transform:scaleY(.9)}.cat-state-angry .eye-brow{display:block}.cat-state-angry .cat-tail{animation:tail-lash .32s ease-in-out infinite alternate}@keyframes tail-lash{0%{transform:rotate(-10deg)}to{transform:rotate(14deg)}}.cat-state-angry .cat-head{animation:head-shake .5s ease-in-out infinite}@keyframes head-shake{0%,to{transform:rotate(0)}25%{transform:rotate(-1.8deg)}75%{transform:rotate(1.8deg)}}.cat-state-angry .cat-ear-l{transform:rotate(-13deg)}.cat-state-angry .cat-ear-r{transform:rotate(13deg)}.cat-state-angry .cat-ruff{animation:ruff-breathe .6s ease-in-out infinite}.cat-state-alert .cat-eye{animation:none;transform:scale(1.12)}.cat-state-alert .cat-ear-l{transform:rotate(-7deg)}.cat-state-alert .cat-ear-r{transform:rotate(7deg)}.cat-state-alert .cat-tail{animation:tail-sway 1.7s ease-in-out infinite}.cat-state-sleeping .cat-body{animation:breathe 4.6s ease-in-out infinite}.cat-state-sleeping .cat-tail{animation:tail-sway 6s ease-in-out infinite}.cat-state-sleeping .cat-head{animation:none;transform:rotate(2deg) translateY(2px)}.cat-state-sleeping .cat-ruff{animation:ruff-breathe 4.6s ease-in-out infinite}.fx-zzz{position:absolute;top:96px;right:10%;pointer-events:none}.fx-zzz span{display:inline-block;margin-left:6px;font-weight:700;color:#b9a08c;font-size:18px;animation:zzz 2.4s ease-in-out infinite}.fx-zzz span:nth-child(1){animation-delay:0s;font-size:14px}.fx-zzz span:nth-child(2){animation-delay:.5s;font-size:18px}.fx-zzz span:nth-child(3){animation-delay:1s;font-size:22px}@keyframes zzz{0%{transform:translate(0) scale(.7);opacity:0}30%{opacity:.9}to{transform:translate(14px,-34px) scale(1.15);opacity:0}}.cat-state-celebrate .cat-eye{animation:blink 1.6s infinite}.cat-state-celebrate .cat-body{animation:bounce .9s ease-in-out infinite}@keyframes bounce{0%,to{transform:translateY(0) scaleY(1)}30%{transform:translateY(-16px) scaleY(1.02)}55%{transform:translateY(0) scaleY(.965)}}.cat-state-celebrate .cat-tail{animation:tail-sway .8s ease-in-out infinite}.cat-state-celebrate .cat-head{animation:head-sway 1.6s ease-in-out infinite}.fx-confetti{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.fx-confetti span{position:absolute;top:-12px;width:9px;height:14px;border-radius:2px;animation:confetti-fall 2.2s linear infinite}.fx-confetti span:nth-child(1){background:#f6c445}.fx-confetti span:nth-child(2){background:#e8823a}.fx-confetti span:nth-child(3){background:#7fbf7f}.fx-confetti span:nth-child(4){background:#e88e8a}.fx-confetti span:nth-child(5){background:#7fa9d9}.fx-confetti span:nth-child(6){background:#f2b134}.fx-confetti span:nth-child(7){background:#d98bb0}@keyframes confetti-fall{0%{transform:translateY(0) rotate(0);opacity:1}to{transform:translateY(300px) rotate(340deg);opacity:.1}}.cat-state-seek .cat-paws{animation:paw-tap 1.1s ease-in-out infinite;transform-origin:180px 300px}@keyframes paw-tap{0%,to{transform:translateY(0)}45%{transform:translateY(-9px)}}.cat-state-seek .cat-head{animation:head-sway 2.4s ease-in-out infinite}.fx-hearts,.fx-fish{position:absolute;top:26%;left:50%;transform:translate(-50%);pointer-events:none}.fx-hearts span,.fx-fish span{display:inline-block;margin:0 5px;font-size:20px;animation:rise .9s ease-out forwards}.fx-hearts span:nth-child(2),.fx-fish span:nth-child(2){animation-delay:.12s;font-size:26px}.fx-hearts span:nth-child(3),.fx-fish span:nth-child(3){animation-delay:.24s;font-size:17px}@keyframes rise{0%{transform:translateY(0) scale(.6);opacity:0}25%{opacity:1}to{transform:translateY(-66px) scale(1.15);opacity:0}}.bubble{position:absolute;top:0;left:50%;transform:translate(-50%);background:#fff;border-radius:16px;padding:12px 16px;max-width:92%;min-width:200px;box-shadow:0 8px 24px #5a3c1e1f;font-size:14px;line-height:1.6;color:var(--ink);z-index:5;text-align:left;animation:pop-in .35s ease}.bubble:after{content:"";position:absolute;bottom:-7px;left:50%;transform:translate(-50%) rotate(45deg);width:14px;height:14px;background:#fff;border-radius:2px}.bubble-empty{color:var(--ink-2)}@keyframes pop-in{0%{transform:translate(-50%) scale(.85);opacity:0}to{transform:translate(-50%) scale(1);opacity:1}}.cat-status{margin-top:14px;display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap}.cat-status-emoji{font-size:20px}.cat-status-label{font-weight:700;color:var(--ink)}.cat-status-desc{color:var(--ink-2);font-size:13px}.cat-actions{margin-top:12px;display:flex;gap:10px;justify-content:center}@media(max-width:760px){.cat,.cat-img{max-width:250px}.bubble{font-size:13px;padding:10px 12px}}.float-cat{position:fixed;z-index:80;width:158px;touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.float-cat:active{cursor:grabbing}.float-art{position:relative}.float-cat .cat,.float-cat .cat-img{pointer-events:none;max-width:158px}.float-bubble{position:absolute;bottom:calc(100% - 10px);left:50%;transform:translate(-50%);width:216px;background:#fff;border-radius:14px;padding:9px 12px;font-size:12.5px;line-height:1.55;color:var(--ink);box-shadow:0 8px 24px #5a3c1e2e;z-index:6;text-align:left;pointer-events:none;animation:pop-in .3s ease}.float-bubble:after{content:"";position:absolute;bottom:-6px;left:50%;transform:translate(-50%) rotate(45deg);width:12px;height:12px;background:#fff;border-radius:2px}.float-tag{text-align:center;margin-top:-6px;font-size:12px;font-weight:700;color:var(--ink);pointer-events:none}.float-actions{display:flex;gap:6px;justify-content:center;margin-top:6px;opacity:0;transition:opacity .2s}.float-cat:hover .float-actions{opacity:1}.float-actions button{width:32px;height:32px;border-radius:50%;border:1.5px solid var(--line);background:#fff;cursor:pointer;font-size:16px;line-height:1;box-shadow:var(--shadow);display:flex;align-items:center;justify-content:center;transition:transform .12s}.float-actions button:active{transform:scale(.9)}@media(hover:none){.float-actions{opacity:1}}@media(max-width:760px){.float-cat{width:120px}.float-cat .cat,.float-cat .cat-img{max-width:120px}.float-bubble{width:190px;font-size:12px}}
