:root{
 --ink:#4a3a5c;--ink2:#6f5d82;--muted:#6f6080;
 --cream:#fff4ef;--paper:#fffdfc;--line:#f2dfe4;--dot:#ffe4e9;
 --pink:#ff92ac;--pink-d:#e8617f;--pink-l:#ffe0e7;--pink-t:#b32a50;
 --mint:#66dcb6;--mint-d:#2bb68d;--mint-l:#d6f8ee;--mint-t:#0f6b51;
 --sky:#8fd3f8;--sky-d:#4aa6d9;--sky-l:#ddf1fd;--sky-t:#17658f;
 --gold:#ffc554;--gold-d:#e5a01c;--gold-l:#fff0cf;--gold-t:#8a5f00;
 --lilac:#bfa4f2;--lilac-d:#9670e2;--lilac-l:#ece1ff;--lilac-t:#6035b8;
 --navy:#4a3a5c;--coral:#ff9d80;
 --round:26px;--shadow:0 12px 0 rgba(74,58,92,.1),0 20px 40px rgba(74,58,92,.16);
 --font:ui-rounded,"Hiragino Maru Gothic ProN","ヒラギノ丸ゴ ProN W4","Hiragino Maru Gothic Pro","M PLUS Rounded 1c","Arial Rounded MT Bold",sans-serif;
}
*{box-sizing:border-box}
body{margin:0;color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.6;background:#ffe9ef radial-gradient(var(--dot) 2.5px,transparent 2.5px) 0 0/24px 24px;-webkit-font-smoothing:antialiased}
button{font:inherit;color:inherit}
b,strong{font-weight:800}
[hidden]{display:none!important}

.app-shell{width:min(100%,520px);min-height:100dvh;margin:auto;display:flex;flex-direction:column;background:var(--cream);box-shadow:0 0 0 3px rgba(74,58,92,.08),0 24px 60px rgba(74,58,92,.18);padding-bottom:calc(78px + env(safe-area-inset-bottom));overflow:hidden}
.app-shell>main{flex:1;display:flex;flex-direction:column;min-height:0}

.room-tools{position:absolute;z-index:5;top:16px;right:16px;display:flex;flex-direction:column;align-items:flex-end;gap:9px}
.room-action-buttons{display:flex;align-items:center;gap:10px}
.coins{display:flex;align-items:center;gap:6px;background:var(--paper);padding:6px 14px;border-radius:99px;border:2.5px solid var(--pink-d);box-shadow:0 3px 0 var(--pink-d)}
.coins span{color:var(--gold-t)}
.coins strong{font-size:1.02rem}

.pet-room{flex:1;min-height:380px;position:relative;overflow:hidden;background:#f4dfbd url("assets/backgrounds/companion-room-v001.png") center 30%/cover no-repeat;border-radius:0 0 38px 38px;border-bottom:3px solid #d6b77f}
.pet-room:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,250,239,.28),transparent 25%,rgba(91,65,39,.04) 62%,rgba(255,248,234,.18));pointer-events:none}
.sky-glow{display:none}
.room-copy{position:absolute;z-index:3;top:16px;left:16px;right:110px;display:flex;align-items:center;gap:10px}
.kicker{display:inline-block;font-size:.7rem;letter-spacing:.1em;font-weight:800;color:var(--pink-t);background:var(--paper);border-radius:99px;padding:2px 10px;border:2px solid var(--pink-l)}
.date-card{flex:none;width:60px;padding:0;border:2.5px solid var(--pink-d);border-radius:16px;background:var(--paper);overflow:hidden;text-align:center;line-height:1;box-shadow:0 4px 0 var(--pink-d);transform:rotate(-3deg);cursor:pointer;transition:transform .08s,box-shadow .08s}
.date-card:active{transform:rotate(-3deg) translateY(4px);box-shadow:0 0 0 var(--pink-d)}
.date-month{display:block;background:linear-gradient(180deg,#ffa6bd,var(--pink));color:var(--ink);font-size:.66rem;font-weight:800;padding:5px 0 4px;letter-spacing:.04em}
.date-day{display:block;font-size:1.6rem;font-weight:800;color:var(--ink);padding:5px 0 2px}
.date-week{display:block;font-size:.6rem;font-weight:800;color:var(--pink-t);padding:0 0 6px}
.room-copy h1{margin:0;font-size:1.2rem;letter-spacing:0;background:var(--paper);border:2.5px solid var(--sky-d);color:var(--sky-t);border-radius:99px;padding:6px 14px;box-shadow:0 4px 0 var(--sky-d)}
.pet-bubble{position:absolute;z-index:6;left:50%;top:104px;transform:translate(-50%,8px) scale(.9);max-width:min(78%,300px);margin:0;padding:9px 14px;background:var(--paper);border:2.5px solid var(--ink);border-radius:18px;color:var(--ink);font-size:.86rem;font-weight:700;text-align:center;box-shadow:0 4px 0 rgba(74,58,92,.25);opacity:0;pointer-events:none;transition:opacity .2s,transform .25s cubic-bezier(.2,.8,.2,1)}
.pet-bubble:after{content:"";position:absolute;left:50%;bottom:-9px;width:14px;height:14px;background:var(--paper);border-right:2.5px solid var(--ink);border-bottom:2.5px solid var(--ink);transform:translateX(-50%) rotate(45deg)}
.pet-bubble.show{opacity:1;transform:translate(-50%,0) scale(1)}

.pet-stage{position:absolute;z-index:2;width:min(100% - 24px,420px);top:84px;bottom:142px;left:50%;transform:translateX(-50%);animation:none;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;outline:none;border-radius:28px}
.pet-stage:active{cursor:grabbing}
.pet-stage:focus-visible{outline:3px solid var(--pink);outline-offset:4px}
.pet-hand{position:absolute;z-index:7;left:50%;top:38%;width:48px;height:48px;margin:-24px 0 0 -24px;font-size:40px;line-height:48px;text-align:center;pointer-events:none;opacity:0;transform:rotate(-20deg) scale(.6);transition:opacity .15s,transform .15s;filter:drop-shadow(0 3px 0 rgba(74,58,92,.28))}
.pet-hand.show{opacity:1;transform:rotate(-20deg) scale(1)}
.pet-hand.stroking{animation:stroke .42s ease-in-out infinite alternate}
@keyframes stroke{from{transform:rotate(-30deg) translate(-9px,2px)}to{transform:rotate(-6deg) translate(9px,-5px)}}
.pet-hint{position:absolute;z-index:4;left:50%;bottom:150px;transform:translate(-50%,0);background:var(--paper);border:2px solid var(--pink-l);color:var(--pink-t);border-radius:99px;padding:4px 12px;font-size:.7rem;font-weight:800;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .3s}
.pet-hint.show{opacity:1;animation:hintBob 1.6s ease-in-out infinite}
@keyframes hintBob{50%{transform:translate(-50%,-5px)}}
.pet-stage[data-state] .hoshiyomi-media{position:absolute;inset:auto 0 0 0;width:100%;height:124%;object-fit:contain;object-position:center bottom;transform:none;pointer-events:none}
.pet-stage .hoshiyomi-media{display:none!important}
.pet-stage[data-species="hoshiyomi"] .hoshiyomi-media[data-species="hoshiyomi"],.pet-stage[data-species="haririto"] .hoshiyomi-media[data-species="haririto"],.pet-stage[data-species="tsumugi"] .hoshiyomi-media[data-species="tsumugi"]{display:block!important}
.spark{position:absolute;color:var(--gold);opacity:0;pointer-events:none;text-shadow:0 2px 0 var(--gold-d)}
.pet-stage[data-state="joy"] .spark,.pet-stage[data-state="reunion"] .spark,.pet-stage[data-state="recover"] .spark{animation:spark 1s ease-out}
.s1{left:10%;top:34%;font-size:26px}
.s2{right:6%;top:18%;font-size:32px;animation-delay:.12s!important}
.s3{right:13%;bottom:22%;font-size:21px;animation-delay:.24s!important}

.pet-hud{position:absolute;z-index:4;left:14px;right:14px;bottom:78px;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;pointer-events:none;transition:opacity .18s,transform .22s cubic-bezier(.2,.8,.2,1)}
.pet-room.actions-open .pet-hud{opacity:0;transform:translateY(10px)}
.stat{background:rgba(255,253,252,.9);border:2.5px solid var(--line);border-radius:16px;padding:7px 9px 8px;box-shadow:0 3px 0 var(--line)}
.stat-head{display:flex;justify-content:space-between;align-items:baseline;gap:4px;margin-bottom:5px;font-size:.72rem;font-weight:800;color:var(--ink)}
.stat-head small{font-size:.62rem;font-weight:700;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat-track{display:block;height:11px;border-radius:99px;background:#eee6ea;border:2px solid #e2d6dc;overflow:hidden}
.stat-fill{display:block;height:100%;width:0;border-radius:99px;transition:width .5s cubic-bezier(.2,.8,.2,1)}
.stat-energy .stat-fill{background:linear-gradient(90deg,var(--gold),#ffd889)}
.stat-growth .stat-fill{background:linear-gradient(90deg,var(--lilac-d),var(--lilac))}
.stat-hunger .stat-fill{background:linear-gradient(90deg,var(--mint-d),var(--mint))}
.stat.low .stat-fill{background:linear-gradient(90deg,#f0687f,#ff9fb0)}
.stat.low .stat-head small{color:var(--pink-t)}

.pet-dock{position:absolute;z-index:5;left:14px;right:14px;bottom:14px}
.action-toggle{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;border:3px solid var(--lilac-d);border-radius:99px;background:var(--paper);padding:11px 2px;color:var(--lilac-t);font-weight:800;font-size:.92rem;cursor:pointer;box-shadow:0 5px 0 var(--lilac-d);transition:transform .08s,box-shadow .08s,background .15s}
.action-toggle span{color:var(--gold-d);transition:transform .25s}
.action-toggle:active{transform:translateY(5px);box-shadow:0 0 0 var(--lilac-d)}
.action-toggle[aria-expanded="true"]{background:var(--lilac-l)}
.action-toggle[aria-expanded="true"] span{transform:rotate(45deg)}
.pet-actions{position:absolute;left:0;right:0;bottom:calc(100% + 10px);display:flex;gap:8px;opacity:0;transform:translateY(14px) scale(.96);pointer-events:none;transition:opacity .2s,transform .22s cubic-bezier(.2,.8,.2,1)}
.pet-actions.open{opacity:1;transform:none;pointer-events:auto}
.pet-actions button{position:relative;flex:1;border:2.5px solid var(--lilac-d);border-radius:99px;background:var(--paper);padding:10px 2px;color:var(--lilac-t);font-weight:800;font-size:.79rem;cursor:pointer;box-shadow:0 4px 0 var(--lilac-d);transition:transform .08s,box-shadow .08s}
.pet-actions button:hover{background:var(--lilac-l)}
.pet-actions button:active{transform:translateY(4px);box-shadow:0 0 0 var(--lilac-d)}
.snack-badge{position:absolute;top:-9px;right:-4px;min-width:22px;height:22px;padding:0 6px;border-radius:99px;background:var(--gold);border:2px solid var(--gold-d);color:var(--ink);font-size:.66rem;line-height:18px}

.shop-fab{width:52px;height:52px;display:grid;place-items:center;border:2.5px solid var(--gold-d);border-radius:50%;background:var(--paper);color:var(--gold-t);cursor:pointer;box-shadow:0 4px 0 var(--gold-d);transition:transform .08s,box-shadow .08s}
.shop-fab:active{transform:translateY(4px);box-shadow:0 0 0 var(--gold-d)}
.garden-fab{width:52px;height:52px;display:grid;place-items:center;padding:4px;border:2.5px solid var(--mint-d);border-radius:50%;background:rgba(255,253,252,.95);color:var(--mint-t);box-shadow:0 4px 0 var(--mint-d);cursor:pointer}.garden-fab svg{width:27px;height:27px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.garden-fab span{font-size:.53rem;font-weight:900;line-height:1;margin-top:-5px}.garden-fab:active{transform:translateY(4px);box-shadow:none}

.today-cta{flex:none;padding:14px 16px 10px}
.habit-cta{display:flex;align-items:center;gap:14px;width:100%;border:3px solid var(--pink-d);border-radius:24px;background:linear-gradient(180deg,#ffa6bd,var(--pink));padding:13px 16px 13px 14px;color:var(--ink);text-align:left;cursor:pointer;box-shadow:0 6px 0 var(--pink-d);transition:transform .08s,box-shadow .08s}
.habit-cta:active{transform:translateY(6px);box-shadow:0 0 0 var(--pink-d)}
.habit-cta-icon{flex:none;width:46px;height:46px;display:grid;place-items:center;border-radius:50%;background:var(--paper);border:2.5px solid var(--pink-d);color:var(--pink-t);font-size:1.4rem;font-weight:900}
.habit-cta-text{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.habit-cta-text b{font-size:1.18rem}
.habit-cta-text small{font-size:.76rem;font-weight:700;color:var(--ink)}
.habit-cta-arrow{flex:none;font-size:1.9rem;font-weight:900;color:var(--paper);text-shadow:0 2px 0 var(--pink-d);line-height:1}

.page-view{flex:1;padding:18px 16px 30px}
.page-head{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.page-title{flex:1;min-width:0}
.page-title h1{margin:4px 0 0;font-size:1.45rem}
.back-btn{flex:none;width:42px;height:42px;padding:0 0 3px;border:2.5px solid var(--line);border-radius:50%;background:var(--paper);color:var(--ink2);font-size:1.7rem;line-height:1;cursor:pointer;box-shadow:0 3px 0 var(--line);transition:transform .08s,box-shadow .08s}
.back-btn:active{transform:translateY(3px);box-shadow:0 0 0 var(--line)}

.history-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}
.summary-card{background:var(--paper);border:3px solid var(--line);border-radius:20px;padding:10px 6px 9px;text-align:center;box-shadow:0 5px 0 var(--line)}
.summary-card b{display:block;font-size:1.5rem;line-height:1.1;color:var(--pink-t)}
.summary-card small{font-size:.66rem;font-weight:700;color:var(--muted)}
.month-nav{display:flex;align-items:center;justify-content:space-between;margin:4px 2px 8px}
.month-nav h2{margin:0;font-size:1.05rem}
.month-nav button{width:38px;height:38px;padding:0 0 3px;border:2.5px solid var(--line);border-radius:50%;background:var(--paper);color:var(--ink2);font-size:1.5rem;line-height:1;cursor:pointer;box-shadow:0 3px 0 var(--line);transition:transform .08s,box-shadow .08s}
.month-nav button:active{transform:translateY(3px);box-shadow:0 0 0 var(--line)}
.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;background:var(--paper);border:3px solid var(--line);border-radius:22px;padding:10px 8px 12px;box-shadow:0 5px 0 var(--line);margin-bottom:18px}
.cal-week{text-align:center;font-size:.62rem;font-weight:800;color:var(--muted);padding:2px 0 4px}
.cal-cell{aspect-ratio:1;display:grid;place-items:center;padding:0;border:2px solid transparent;border-radius:12px;background:#f7f1f3;color:var(--ink2);font-size:.82rem;font-weight:800;cursor:default;transition:transform .08s}
.cal-cell.empty{background:none}
.cal-cell.done{cursor:pointer;color:var(--ink)}
.cal-cell.done:active{transform:scale(.92)}
.cal-cell[data-level="1"]{background:var(--mint-l)}
.cal-cell[data-level="2"]{background:#b8efd9}
.cal-cell[data-level="3"]{background:#8fe3c4}
.cal-cell[data-level="4"]{background:var(--mint)}
.cal-cell.today{border-color:var(--pink)}
.history-day{background:var(--paper);border:3px solid var(--line);border-radius:22px;padding:13px 14px;box-shadow:0 5px 0 var(--line);margin-bottom:12px}
.history-day.flash{border-color:var(--pink);box-shadow:0 5px 0 var(--pink)}
.history-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}
.history-head b{font-size:.98rem}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{font-size:.72rem;font-weight:700;color:var(--muted);background:#f4eef1;border:2px solid #ece3e8;border-radius:99px;padding:3px 9px}
.chip.on{color:var(--mint-t);background:var(--mint-l);border-color:#9fe0c6}
.gift-list{display:grid;gap:10px}
.snack-list{display:grid;gap:10px;margin-top:14px;max-height:58dvh;overflow:auto;padding:2px}.snack-choice{display:grid;grid-template-columns:64px 1fr auto;align-items:center;gap:10px;padding:9px;border:2px solid var(--line);border-radius:18px;background:var(--paper)}.snack-choice>img,.snack-choice>span{width:64px;height:64px;object-fit:contain;display:grid;place-items:center;font-size:2rem}.snack-choice div{min-width:0}.snack-choice b,.snack-choice small,.snack-choice em{display:block}.snack-choice b{font-size:.78rem}.snack-choice small{font-size:.65rem;color:var(--muted)}.snack-choice em{font-size:.64rem;color:var(--pink-t);font-style:normal;font-weight:800}.snack-choice button{border:2px solid var(--pink-d);border-radius:99px;background:var(--pink-l);padding:7px 9px;color:var(--pink-t);font-size:.67rem;font-weight:900}.snack-choice.blocked{opacity:.68}.snack-choice.blocked button{border-color:#c9bed2;background:#eee9f0;color:#786d81}.snack-empty{text-align:center;padding:20px}.snack-empty p{color:var(--muted);font-size:.8rem}
.gift-item{display:flex;align-items:center;gap:12px;border:2.5px solid var(--line);border-radius:18px;background:var(--paper);padding:10px 12px;box-shadow:0 4px 0 var(--line)}
.gift-item .item-emoji{font-size:1.7rem;width:44px;text-align:center;line-height:1}
.gift-item b{flex:1;font-size:.95rem}
.gift-item button{border:2.5px solid var(--gold-d);background:var(--gold);color:var(--ink);border-radius:99px;padding:8px 14px;font-size:.78rem;font-weight:800;cursor:pointer;box-shadow:0 3px 0 var(--gold-d);transition:transform .08s,box-shadow .08s}
.gift-item button:active{transform:translateY(3px);box-shadow:0 0 0 var(--gold-d)}
.history-empty{color:var(--muted);font-weight:600;font-size:.86rem;text-align:center;padding:24px 0;margin:0}
.kicker{margin:0}
.settings-btn{border:2.5px solid var(--sky-d);border-radius:99px;background:var(--paper);color:var(--sky-t);padding:8px 15px;font-weight:800;font-size:.86rem;cursor:pointer;box-shadow:0 4px 0 var(--sky-d);transition:transform .08s,box-shadow .08s}
.settings-btn:active{transform:translateY(4px);box-shadow:0 0 0 var(--sky-d)}

.habit-list{display:grid;gap:12px}
.habit{background:var(--paper);border:3px solid var(--line);border-radius:var(--round);padding:15px 15px 16px;box-shadow:0 5px 0 var(--line)}
.habit-main{display:flex;align-items:center;gap:12px}
.habit-icon{width:48px;height:48px;flex:none;display:grid;place-items:center;border-radius:50%;font-weight:900;font-size:1.18rem;background:var(--gold-l);color:var(--gold-t);border:2.5px solid currentColor}
.habit:nth-child(4n+2) .habit-icon{background:var(--sky-l);color:var(--sky-t)}
.habit:nth-child(4n+3) .habit-icon{background:var(--mint-l);color:var(--mint-t)}
.habit:nth-child(4n+4) .habit-icon{background:var(--lilac-l);color:var(--lilac-t)}
.habit-info{flex:1;min-width:0}
.habit-info h3{font-size:1.02rem;margin:0}
.habit-info p{font-size:.78rem;color:var(--muted);margin:1px 0 0;font-weight:600}
.reward{flex:none;font-weight:800;color:var(--gold-t);font-size:.82rem;background:var(--gold-l);border-radius:99px;padding:4px 11px;border:2px solid var(--gold)}
.levels{display:flex;gap:7px;margin-top:13px}
.levels button{flex:1;border:2.5px solid var(--pink-l);background:var(--paper);color:var(--pink-t);border-radius:99px;padding:9px 2px;font-size:.76rem;font-weight:800;cursor:pointer;box-shadow:0 3px 0 var(--pink-l);transition:transform .08s,box-shadow .08s,background .12s}
.levels button:hover{background:var(--pink-l);border-color:var(--pink)}
.levels button:active{transform:translateY(3px);box-shadow:0 0 0 var(--pink-l)}
.habit.done{background:var(--mint-l);border-color:var(--mint);box-shadow:0 5px 0 var(--mint)}
.habit.done .levels{display:none}
.habit.done .reward{background:var(--mint);color:var(--ink);border-color:var(--mint-d)}
.done-label{display:none;color:var(--mint-t);font-weight:800;font-size:.84rem;margin-top:10px}
.habit.done .done-label{display:block}

.shop-note{font-size:.74rem;color:var(--muted);font-weight:600;margin:-6px 0 14px 2px}
.shop-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.item{background:var(--paper);border:3px solid var(--line);border-radius:22px;padding:13px 8px 12px;text-align:center;box-shadow:0 5px 0 var(--line)}
.item-emoji{font-size:2.1rem;display:block;line-height:1.3}
.item-image{display:block;width:52px;height:52px;object-fit:contain;margin:0 auto}
.item b{display:block;font-size:.78rem;margin:6px 0 8px}
.item button{border:2.5px solid var(--gold-d);background:var(--gold);color:var(--ink);border-radius:99px;padding:7px 10px;font-size:.72rem;font-weight:800;cursor:pointer;box-shadow:0 3px 0 var(--gold-d);transition:transform .08s,box-shadow .08s}
.item button:active{transform:translateY(3px);box-shadow:0 0 0 var(--gold-d)}
.item button:disabled{background:#e4dde9;border-color:#c9bed2;color:#7d7287;box-shadow:0 3px 0 #c9bed2;cursor:default;transform:none}

.bottom-nav{position:fixed;z-index:10;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,520px);height:78px;padding:8px 8px env(safe-area-inset-bottom);display:flex;gap:4px;background:var(--paper);border-top:3px solid var(--line)}
.bottom-nav button{flex:1;border:0;background:none;color:var(--muted);font-size:.68rem;font-weight:800;cursor:pointer;border-radius:18px;padding:6px 0;transition:background .15s,color .15s}
.bottom-nav span{display:block;font-size:1.2rem;margin-bottom:1px}
.bottom-nav .active{color:var(--pink-t);background:var(--pink-l)}

dialog{border:0;border-radius:30px;padding:0;width:min(calc(100% - 26px),440px);box-shadow:var(--shadow);color:var(--ink);font-family:var(--font);background:var(--paper);border:3px solid var(--pink-l)}
dialog::backdrop{background:rgba(74,58,92,.45);backdrop-filter:blur(3px)}
.dialog-card{padding:24px}
.dialog-head{display:flex;justify-content:space-between;align-items:start}
.dialog-head h2{margin:6px 0 20px;font-size:1.35rem}
.dialog-head button{border:2.5px solid var(--line);background:var(--paper);width:38px;height:38px;border-radius:50%;font-size:1.2rem;color:var(--ink2);cursor:pointer;flex:none;box-shadow:0 3px 0 var(--line)}
.dialog-card label{display:block;font-weight:800;margin-bottom:8px}
.dialog-card input{width:100%;font-family:var(--font);font-size:1.3rem;font-weight:700;padding:12px 14px;border:2.5px solid var(--line);border-radius:16px;color:var(--ink);background:var(--paper)}
.dialog-card input:focus{outline:0;border-color:var(--pink);box-shadow:0 0 0 4px var(--pink-l)}
.hint{color:var(--muted);font-size:.8rem;font-weight:600}
.schedule-preview{display:grid;grid-template-columns:1fr auto 32px 1fr auto;align-items:center;padding:14px 16px;background:var(--sky-l);border:2.5px solid #bde4f8;border-radius:20px;margin:18px 0}
.schedule-preview span{font-size:.76rem;font-weight:800;color:var(--sky-t)}
.schedule-preview b{font-size:1.05rem}
.schedule-preview i{height:3px;background:#bde4f8;border-radius:99px;margin:0 7px}
.primary{width:100%;border:3px solid var(--pink-d);border-radius:99px;padding:14px;background:var(--pink);color:var(--ink);font-weight:800;font-size:1rem;cursor:pointer;box-shadow:0 5px 0 var(--pink-d);transition:transform .08s,box-shadow .08s}
.primary:active{transform:translateY(5px);box-shadow:0 0 0 var(--pink-d)}

.toast{position:fixed;z-index:20;bottom:96px;left:50%;transform:translate(-50%,20px);background:var(--ink);color:#fff;padding:12px 20px;border-radius:99px;opacity:0;pointer-events:none;transition:.25s;font-size:.84rem;font-weight:700;white-space:nowrap;box-shadow:0 6px 0 rgba(74,58,92,.28)}
.toast.show{opacity:1;transform:translate(-50%,0)}

.book-view{flex:1;padding:24px 16px 34px;background:linear-gradient(180deg,var(--lilac-l),var(--cream) 240px)}
.book-hero{position:relative;padding:6px 2px 20px}
.book-hero h1{margin:7px 0 3px;font-size:1.8rem;letter-spacing:0}
.book-hero>p:not(.kicker){margin:0;color:var(--ink2);font-size:.85rem;font-weight:600}
.book-hero .kicker{color:var(--lilac-t);border-color:var(--lilac-l)}
.book-hero span{position:absolute;right:2px;top:14px;background:var(--paper);border:2.5px solid var(--lilac);border-radius:99px;padding:6px 13px;color:var(--lilac-t);font-size:.7rem;font-weight:800;box-shadow:0 3px 0 var(--lilac)}
.evolution-map-button{margin-top:14px;border:2.5px solid var(--lilac-d);background:var(--paper);color:var(--lilac-t);border-radius:99px;padding:9px 14px;font-weight:900;font-size:.76rem;box-shadow:0 3px 0 var(--lilac-d);cursor:pointer}
.book-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.book-card{position:relative;border:3px solid var(--line);border-radius:24px;background:var(--paper);padding:9px 9px 14px;overflow:hidden;box-shadow:0 5px 0 var(--line);color:var(--ink);text-align:left;cursor:pointer;font-family:var(--font);transition:transform .08s,box-shadow .08s}
.book-card:active{transform:translateY(5px);box-shadow:0 0 0 var(--line)}
.book-number{position:absolute;z-index:2;top:11px;left:11px;padding:3px 9px;border-radius:99px;background:var(--pink);color:var(--ink);font-size:.62rem;font-weight:800;border:2px solid var(--pink-d)}
.portrait-wrap{display:block;aspect-ratio:1;border-radius:18px;background:radial-gradient(circle,#fff 12%,var(--pink-l) 78%);overflow:hidden;margin-bottom:9px}
.portrait-wrap img{width:100%;height:100%;object-fit:contain}
.book-card strong,.book-card small{display:block;padding:0 4px}
.book-card strong{font-size:.96rem}
.book-card small{font-size:.68rem;color:var(--muted);margin-top:2px;font-weight:600}
.book-card.locked{cursor:default;background:#faf6f7}
.book-card.locked .portrait-wrap{background:#efe9ec}
.book-card.locked img{filter:grayscale(1) brightness(0);opacity:.72}
.book-card.locked .book-number{background:#efe9f1;color:#5f5469;border-color:#b6a9bf}

.character-dialog{padding:22px 22px 26px;text-align:center;position:relative;font-family:var(--font)}
.character-dialog>img{display:block;width:min(100%,290px);aspect-ratio:1;object-fit:contain;margin:-6px auto -12px}
.character-dialog h2{font-size:1.6rem;margin:0}
.character-dialog>p:not(.kicker){font-size:.86rem;color:var(--ink2);margin:6px auto 16px;max-width:330px;font-weight:600}
.character-dialog .kicker{color:var(--lilac-t);border-color:var(--lilac-l)}
.character-dialog dl{margin:0;text-align:left;background:var(--lilac-l);border:2.5px solid #ddcdf7;border-radius:20px;padding:6px 16px}
.character-dialog dl div{display:grid;grid-template-columns:52px 1fr;gap:10px;padding:10px 0}
.character-dialog dl div+div{border-top:2px solid #ddcdf7}
.character-dialog dt{font-size:.72rem;color:var(--lilac-t);font-weight:800;padding-top:2px}
.character-dialog dd{margin:0;font-size:.82rem;font-weight:600}
.detail-close{position:absolute;z-index:2;right:14px;top:14px;border:2.5px solid var(--line);border-radius:50%;width:38px;height:38px;background:var(--paper);color:var(--ink2);font-size:1.2rem;cursor:pointer;box-shadow:0 3px 0 var(--line)}

@keyframes idle{50%{transform:translateX(-50%) translateY(-5px)}}
@keyframes jump{0%,100%{transform:translateX(-50%) translateY(0) rotate(0)}45%{transform:translateX(-50%) translateY(-26px) rotate(-2deg)}}
@keyframes nibble{50%{transform:translateX(-50%) scale(1.045) rotate(1deg)}}
@keyframes breathe{50%{transform:translateX(-50%) translateY(3px) scale(1.025)}}
@keyframes arrive{0%{transform:translateX(-110%) scale(.8);opacity:0}70%{transform:translateX(-42%) scale(1.05)}100%{transform:translateX(-50%) scale(1);opacity:1}}
@keyframes spark{0%{opacity:0;transform:scale(.3) translateY(8px)}35%{opacity:1}100%{opacity:0;transform:scale(1.4) translateY(-20px)}}

@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}
@media(min-width:700px){body{padding:24px 0}.app-shell{border-radius:34px;min-height:calc(100dvh - 48px)}.bottom-nav{bottom:24px;border-radius:0 0 34px 34px}}

/* Habit formation v2 */
.add-habit-btn,.secondary{border:2.5px solid var(--mint-d);background:var(--mint-l);color:var(--mint-t);border-radius:14px;padding:9px 12px;font-weight:900;font-family:var(--font);cursor:pointer;box-shadow:0 3px 0 var(--mint-d)}
.habit-guide{display:flex;flex-direction:column;gap:2px;margin:0 0 14px;padding:13px 15px;border:2px solid var(--blue-d);border-radius:18px;background:var(--blue-l);color:var(--ink2)}
.habit-guide b{font-size:.83rem}.habit-guide span{font-size:.72rem;font-weight:600}
.habit-v2{padding:14px}.habit-more{border:0;background:transparent;color:var(--muted);font-weight:900;padding:8px;cursor:pointer}
.levels-v2{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:12px}
.levels-v2 button{min-height:76px;display:flex;flex-direction:column;justify-content:center;gap:2px;border-width:2px;padding:7px 4px}
.levels-v2 button span{font-size:.62rem;color:var(--muted);font-weight:800}.levels-v2 button b{font-size:.73rem;line-height:1.25}.levels-v2 button small{font-size:.62rem;color:var(--gold-t);font-weight:900}
.levels-v2 button.minimum{background:var(--mint-l);border-color:var(--mint-d)}
.habit-secondary{display:flex;justify-content:flex-end;gap:12px;margin-top:8px}.habit-secondary button,.recovery-tip button{border:0;background:none;color:var(--muted);font-size:.7rem;text-decoration:underline;cursor:pointer}
.recovery-tip{margin:10px 0 0;padding:9px 11px;border-radius:12px;background:var(--pink-l);color:var(--ink2);font-size:.73rem;font-weight:700}
.done-panel{margin-top:12px;padding:12px;border-radius:14px;background:var(--mint-l);color:var(--mint-t);font-weight:900}.done-panel small{display:block;font-size:.68rem;color:var(--muted)}
.empty-state{text-align:center;padding:36px 18px;background:var(--paper);border:3px solid var(--line);border-radius:24px}.empty-state p{font-size:.8rem;color:var(--muted)}
.paused-habits{margin-top:14px;padding:12px;border:2px dashed var(--line);border-radius:16px}.paused-habits>span{display:block;color:var(--muted);font-size:.7rem;font-weight:800;margin-bottom:7px}.paused-habits button{border:0;background:var(--paper);border-radius:10px;padding:7px 10px;margin:3px;font:inherit;font-size:.72rem;color:var(--ink2);cursor:pointer}
.done-panel.neutral{background:#f0edf3;color:var(--ink2)}
.review-cta{width:100%;display:grid;grid-template-columns:1fr auto;position:relative;text-align:left;border:3px solid var(--lilac);border-radius:20px;background:var(--lilac-l);padding:14px 42px 14px 16px;margin:16px 0;color:var(--ink);font-family:var(--font);cursor:pointer;box-shadow:0 4px 0 var(--lilac)}.review-cta span{font-weight:900}.review-cta small{grid-column:1;color:var(--muted);font-weight:700}.review-cta>b{position:absolute;right:18px;top:18px;font-size:1.4rem}
.habit-form{max-height:min(90dvh,760px);overflow:auto}.habit-form>label,.habit-form .form-row{margin-top:12px}.habit-form select,.dialog-card select{width:100%;padding:11px;border:2px solid var(--line);border-radius:12px;background:white;font:inherit}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-row label{margin:0}.habit-form fieldset{border:2px solid var(--line);border-radius:16px;margin:14px 0;padding:10px}.habit-form legend{font-weight:900}.habit-form fieldset label{display:grid;grid-template-columns:70px 1fr;align-items:center;margin:7px 0;font-size:.78rem}.habit-form fieldset input{font-size:.85rem;padding:9px}.weekday-fields{display:flex;gap:4px;margin:9px 0}.weekday-fields label{display:flex;flex-direction:column;align-items:center;flex:1;padding:6px 2px;background:var(--blue-l);border-radius:10px;font-size:.7rem}.weekday-fields input{width:auto}.ifthen-preview{background:var(--gold-l);border:2px solid var(--gold);border-radius:14px;padding:11px;font-size:.78rem;font-weight:800}.form-actions{display:flex;align-items:center;gap:12px}.form-actions .primary{flex:1}.danger-text{border:0;background:none;color:#b35664;text-decoration:underline;cursor:pointer}
.review-grid,.companion-summary{display:grid;grid-template-columns:1fr 1fr;gap:10px}.review-grid div,.companion-summary div{text-align:center;padding:16px;background:var(--blue-l);border:2px solid var(--blue-d);border-radius:18px}.review-grid b,.companion-summary b{display:block;font-size:1.5rem}.review-grid small,.companion-summary small{font-size:.68rem;color:var(--muted);font-weight:700}
.panel{margin-top:16px;padding:16px;background:var(--paper);border:3px solid var(--line);border-radius:22px;box-shadow:0 4px 0 var(--line)}.panel h2{font-size:1rem;margin:0 0 12px}.trait-list{display:grid;gap:8px}.trait-list>div{display:grid;grid-template-columns:82px 1fr 30px;align-items:center;gap:7px;font-size:.7rem;font-weight:800}.trait-list i{height:9px;background:#eee8df;border-radius:9px;overflow:hidden}.trait-list i b{display:block;height:100%;background:linear-gradient(90deg,var(--mint),var(--blue));border-radius:9px}.trait-list small{text-align:right}
.evolution-list{display:grid;gap:8px}.evolution-list>div,.evolution-list>button{width:100%;display:flex;align-items:center;gap:11px;padding:9px;border-radius:16px;background:var(--gold-l);border:2px solid var(--gold);text-align:left;font-family:var(--font);color:var(--ink)}.evolution-list>button{cursor:pointer;box-shadow:0 3px 0 var(--gold-d)}.evolution-list>button:active{transform:translateY(3px);box-shadow:none}.evolution-list img{width:66px;height:66px;object-fit:contain;flex:none;background:rgba(255,255,255,.65);border-radius:13px}.evolution-list span{min-width:0}.evolution-list b,.evolution-list small,.evolution-list em{display:block}.evolution-list small{font-size:.7rem;color:var(--ink2);margin-top:2px}.evolution-list em{font-size:.67rem;color:var(--gold-t);font-style:normal;font-weight:900;margin-top:4px}.evolution-list p,.memory-list>p{font-size:.78rem;color:var(--muted)}
.memory-list{display:grid;gap:8px}.memory-list article{display:flex;gap:10px;padding:10px;border-radius:14px;background:var(--pink-l)}.memory-list article>span{font-size:1.1rem}.memory-list p{margin:0;font-size:.76rem;font-weight:700}.memory-list small{display:block;color:var(--muted);font-size:.65rem;margin-top:3px}
.evolved-companion:before{content:"";position:absolute;inset:0;background-image:var(--companion-portrait);background-repeat:no-repeat;background-position:center bottom;background-size:contain;filter:drop-shadow(0 9px 0 rgba(74,58,92,.12));transition:transform .25s}.evolved-companion .hoshiyomi-media{display:none!important}.evolved-companion.static-react:before{animation:evolvedReact .85s ease-in-out}.evolved-companion.evolution-reveal:before{animation:evolutionReveal 1.7s cubic-bezier(.2,.8,.2,1)}
.evolution-dialog-card{text-align:center}.evolution-dialog-card .dialog-head{text-align:left}.evolution-dialog-card>img{display:block;width:min(100%,280px);height:250px;object-fit:contain;margin:-14px auto -8px}.evolution-reason{font-weight:900;color:var(--lilac-t);margin:0 0 12px}.evolution-notice{display:flex;flex-direction:column;padding:12px;background:var(--lilac-l);border:2px solid var(--lilac);border-radius:16px;margin-bottom:16px}.evolution-notice span{font-size:.72rem;color:var(--muted);font-weight:700}.evolution-cancel{border:0;background:none;color:var(--muted);font-weight:800;padding:13px;cursor:pointer}
.raising-card{display:flex;align-items:center;gap:13px}.raising-card>img{width:92px;height:92px;object-fit:contain;background:var(--mint-l);border-radius:20px}.raising-card>div{flex:1;min-width:0}.raising-card b,.raising-card small,.raising-card em{display:block}.raising-card small{font-size:.68rem;color:var(--muted);font-weight:800}.raising-card em{font-size:.65rem;color:var(--mint-t);font-style:normal;font-weight:800;margin-top:5px}.raising-track{display:block;height:14px;margin-top:8px;border:2px solid var(--mint-d);background:#e9f5ef;border-radius:99px;overflow:hidden}.raising-track i{display:block;height:100%;background:linear-gradient(90deg,var(--mint),var(--gold));border-radius:99px;transition:width .45s}.receive-egg{margin-top:10px}.tendency-card{display:block!important}.tendency-card b{font-size:.82rem}.garden-list{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:9px;min-height:116px;padding:18px 10px 12px;border:2px solid #82c99e;border-radius:20px;background:linear-gradient(#dff4ff 0 44%,#a9e3ba 44%);overflow:hidden}.garden-list:before{content:"";position:absolute;left:-8%;right:-8%;bottom:-28px;height:80px;border-radius:50%;background:#8bd3a4}.garden-card{position:relative;z-index:1;display:flex;align-items:center;gap:7px;border:2px solid #79bd94;background:rgba(255,253,252,.9);border-radius:18px;padding:8px;text-align:left;font-family:var(--font);cursor:pointer;box-shadow:0 3px 0 #79bd94}.garden-card img{width:52px;height:52px;object-fit:contain;transform:rotate(-5deg);filter:saturate(.78)}.garden-card>span:not(.sleep-z){min-width:0}.garden-card b,.garden-card small{display:block}.garden-card b{font-size:.72rem}.garden-card small{font-size:.58rem;color:var(--muted)}.garden-card .sleep-z{position:absolute;right:7px;top:-12px;color:var(--lilac-t);font-size:.66rem;font-weight:900;animation:sleepFloat 2s ease-in-out infinite}.garden-card.locked-switch{cursor:not-allowed;opacity:.72}.garden-empty{position:relative;z-index:1;grid-column:1/-1;align-self:center;text-align:center;margin:0;color:var(--mint-t);font-size:.72rem;font-weight:800}@keyframes sleepFloat{50%{transform:translateY(-5px);opacity:.55}}
.wide-dialog{width:min(calc(100% - 18px),500px);max-height:92dvh}.evolution-map-dialog{max-height:92dvh;overflow:auto}.evolution-map{display:grid;gap:2px;margin-top:14px}.map-stage{text-align:center}.map-stage>span{display:inline-block;padding:3px 11px;border-radius:99px;background:var(--lilac-l);color:var(--lilac-t);font-size:.67rem;font-weight:900}.map-stage>div{display:flex;justify-content:center;flex-wrap:wrap;gap:7px;margin-top:7px}.map-node{position:relative;width:82px;min-height:102px;padding:5px;border:2px solid var(--line);border-radius:15px;background:var(--paper)}.map-node img{width:68px;height:68px;object-fit:contain}.map-node b,.map-node small{display:block;font-size:.62rem;line-height:1.25}.map-node small{color:var(--mint-t)}.map-node.locked img{filter:grayscale(1) brightness(0);opacity:.7}.map-node.current{border-color:var(--pink-d);background:var(--pink-l);box-shadow:0 3px 0 var(--pink-d)}.map-node.passed{border-color:var(--mint-d)}.map-arrow{display:block;color:var(--lilac-d);font-size:1.25rem;font-style:normal;line-height:1.2}.rare-stage{margin-top:8px;padding-top:12px;border-top:2px dashed var(--gold)}.rare-stage>span{background:var(--gold-l);color:var(--gold-t)}
.map-stage>.map-routes{display:flex;gap:4px;margin:6px auto 0;max-width:420px}.map-routes small{padding:3px 7px;border-radius:9px;background:var(--blue-l);color:var(--sky-t);font-size:.55rem;font-weight:800}
.garden-view{position:relative;flex:1;min-height:calc(100dvh - 78px);overflow:hidden;background:#dcefc8 url("assets/garden/spirit-garden-v001.png") center/cover no-repeat}.garden-view:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(255,255,255,.62),transparent 22%,rgba(45,89,65,.08))}.garden-view-head{position:relative;z-index:4;display:flex;align-items:flex-start;gap:11px;padding:18px 16px 34px;background:linear-gradient(180deg,rgba(255,253,252,.96),rgba(255,253,252,.78) 72%,transparent)}.garden-view-head h1{margin:3px 0 0;font-size:1.45rem}.garden-view-head>div>p:last-child{margin:1px 0 0;color:var(--ink2);font-size:.7rem;font-weight:800}.garden-view .garden-list{position:absolute;z-index:3;inset:112px 0 0;display:block;min-height:0;padding:0;border:0;border-radius:0;background:none;overflow:hidden}.garden-view .garden-list:before{display:none}.garden-view .garden-card{position:absolute;width:148px;min-height:76px;background:rgba(255,253,252,.84);border-color:rgba(86,143,103,.72);backdrop-filter:blur(3px);animation:gardenBreathe 3.2s ease-in-out infinite}.garden-view .garden-card img{width:68px;height:58px;transform:rotate(78deg) scale(.92);transform-origin:center;filter:saturate(.78) brightness(.96)}.garden-view .garden-card:nth-child(1){left:7%;top:18%}.garden-view .garden-card:nth-child(2){right:6%;top:34%;animation-delay:-1.1s}.garden-view .garden-card:nth-child(3){left:11%;top:51%;animation-delay:-2s}.garden-view .garden-card:nth-child(4){right:8%;top:65%;animation-delay:-.6s}.garden-view .garden-card:nth-child(n+5){left:50%;top:78%;transform:translateX(-50%)}.garden-view .sleep-z{font-size:.78rem;top:-17px}.garden-view .garden-empty{position:absolute;left:50%;bottom:18%;width:70%;transform:translateX(-50%);padding:12px;background:rgba(255,253,252,.82);border-radius:18px;color:var(--ink2)}@keyframes gardenBreathe{50%{margin-top:3px;filter:brightness(1.03)}}
@keyframes evolvedReact{45%{transform:translateY(-15px) scale(1.04) rotate(-2deg)}}@keyframes evolutionReveal{0%{opacity:0;transform:scale(.35) rotate(-12deg);filter:brightness(4) drop-shadow(0 0 24px white)}55%{opacity:1;transform:scale(1.12);filter:brightness(1.8) drop-shadow(0 0 28px #fff6a6)}100%{transform:scale(1);filter:brightness(1) drop-shadow(0 9px 0 rgba(74,58,92,.12))}}
@media(max-width:380px){.levels-v2{grid-template-columns:1fr}.levels-v2 button{min-height:58px}.form-row{grid-template-columns:1fr}}

/* Dedicated sleeping artwork is already drawn horizontally. */
.garden-view .garden-card.sleeping-art{width:108px;min-height:0;padding:0}
.garden-view .garden-card.sleeping-art img{width:108px;height:auto;max-height:84px;transform:none;filter:none;object-fit:contain}
.garden-view .garden-card.sleeping-art>span:last-child{margin-left:-7px}
.garden-view .garden-card.sleeping-art .sleep-z{right:12px}

/* Garden inhabitants live directly in the scenery; details open on tap. */
.garden-view .garden-card,.garden-view .garden-card.sleeping-art{width:108px;min-height:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;backdrop-filter:none;overflow:visible}
.garden-view .garden-card img,.garden-view .garden-card.sleeping-art img{display:block;width:100%;height:auto;max-height:138px;object-fit:contain;filter:drop-shadow(0 8px 6px rgba(55,73,45,.22));transform:rotate(78deg) scale(.92)}
.garden-view .garden-card.sleeping-art img{transform:none;filter:drop-shadow(0 8px 6px rgba(55,73,45,.2))}
.garden-view .garden-card:focus-visible{outline:3px solid var(--gold);outline-offset:5px;border-radius:22px}
.garden-view .garden-card .sleep-z{right:12px;top:-16px;padding:2px 7px;border-radius:99px;background:rgba(255,253,252,.82);text-shadow:0 1px white}
.garden-view .garden-card:active{transform:scale(.96);box-shadow:none}
.character-dialog .garden-select{width:100%;margin-top:16px}
.character-dialog .garden-select:disabled{background:#e4dde9;border-color:#c9bed2;color:#7d7287;box-shadow:0 3px 0 #c9bed2;cursor:not-allowed}
.character-dialog .favorite-link dd b{display:block;color:var(--pink-t);font-size:.88rem}.character-dialog .favorite-link dd small{display:block;margin-top:4px;color:var(--ink2);font-size:.7rem;line-height:1.55;font-weight:700}

/* Keep the sleeping spirit small and centered on the garden lawn. */
.garden-view .garden-card:nth-child(1),.garden-view .garden-card.sleeping-art:nth-child(1){left:50%;right:auto;top:42%;width:108px;margin-left:-54px}
.garden-view .garden-card.sleeping-art img{width:108px;max-height:84px}
.garden-view .garden-card:nth-child(1) .sleep-z{right:2px;top:-14px}
.garden-view .garden-card:nth-child(2){left:14%;right:auto;top:24%}.garden-view .garden-card:nth-child(3){left:auto;right:12%;top:33%}.garden-view .garden-card:nth-child(4){left:12%;right:auto;top:55%}.garden-view .garden-card:nth-child(5){left:auto;right:14%;top:62%}.garden-view .garden-card:nth-child(6){left:28%;right:auto;top:72%}.garden-view .garden-card:nth-child(7){left:auto;right:27%;top:76%}.garden-view .garden-card:nth-child(8){left:7%;right:auto;top:79%}.garden-view .garden-card:nth-child(9){left:auto;right:7%;top:81%}

.test-lab-fab{border:2px solid var(--lilac-d);border-radius:99px;background:rgba(255,253,252,.96);color:var(--lilac-t);padding:5px 10px;font-size:.66rem;font-weight:900;box-shadow:0 3px 0 var(--lilac-d);cursor:pointer}.test-lab-view{background:linear-gradient(180deg,#f4efff,#fff7ee)}.test-warning{padding:11px 13px;border:2px solid var(--gold-d);border-radius:15px;background:var(--gold-l);font-size:.72rem}.test-status{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:12px 0}.test-status span{padding:9px;border:2px solid var(--line);border-radius:13px;background:var(--paper);font-size:.68rem;font-weight:800}.test-panel{margin:12px 0;padding:14px;border:2.5px solid #d9cdf1;border-radius:20px;background:rgba(255,255,255,.9);box-shadow:0 4px 0 #d9cdf1}.test-panel h2{margin:0 0 9px;font-size:.95rem}.test-panel p{margin:0 0 8px;color:var(--muted);font-size:.7rem}.test-panel label{display:block;font-size:.72rem;font-weight:800}.test-panel select{width:100%;margin:5px 0 9px;padding:10px;border:2px solid var(--line);border-radius:12px;background:white;font:inherit}.test-panel>button,.test-button-grid button{border:2px solid var(--lilac-d);border-radius:13px;background:var(--lilac-l);color:var(--lilac-t);padding:9px 10px;margin:4px 3px;font-size:.7rem;font-weight:900;cursor:pointer}.test-button-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.test-button-grid button{margin:0}.danger-zone{border-color:#efb8c4}.danger-zone button{border-color:var(--pink-d);background:var(--pink-l);color:var(--pink-t)}

/* One spirit rests in the middle; larger gardens use a clear 3 × 4 layout. */
.garden-view .garden-card{right:auto;margin-left:0;transform:none}
.garden-view .garden-card:nth-child(1){left:5%;top:8%;margin-left:0}.garden-view .garden-card:nth-child(2){left:50%;top:8%;margin-left:-54px}.garden-view .garden-card:nth-child(3){left:auto;right:5%;top:8%}
.garden-view .garden-card:nth-child(4){left:5%;top:28%}.garden-view .garden-card:nth-child(5){left:50%;top:28%;margin-left:-54px}.garden-view .garden-card:nth-child(6){left:auto;right:5%;top:28%}
.garden-view .garden-card:nth-child(7){left:5%;top:48%}.garden-view .garden-card:nth-child(8){left:50%;top:48%;margin-left:-54px}.garden-view .garden-card:nth-child(9){left:auto;right:5%;top:48%}
.garden-view .garden-card:nth-child(10){left:5%;top:68%}.garden-view .garden-card:nth-child(11){left:50%;top:68%;margin-left:-54px}.garden-view .garden-card:nth-child(12){left:auto;right:5%;top:68%}
.garden-view .garden-card:only-child{left:50%;right:auto;top:42%;margin-left:-54px}
