@font-face{font-family:IvySans;src:url('../ivy-room-assets/assets/fonts/ZenKakuGothicNew-Regular.woff2') format('woff2');font-display:swap;font-weight:400}@font-face{font-family:IvySans;src:url('../ivy-room-assets/assets/fonts/ZenKakuGothicNew-Bold.woff2') format('woff2');font-display:swap;font-weight:700}@font-face{font-family:IvyRound;src:url('../ivy-room-assets/assets/fonts/ZenMaruGothic-Bold.woff2') format('woff2');font-display:swap;font-weight:700}
body.ivyr-site{margin:0;background:#faf8f2}#ivyr-app{--ink:#213c2e;--muted:#6b776c;--green:#356548;--sage:#e8eee1;--yellow:#f2cd5d;--line:#e1e5d9;color:var(--ink);font:16px/1.75 IvySans,sans-serif;background:#faf8f2;min-height:100vh}#ivyr-app *{box-sizing:border-box}#ivyr-app a{color:inherit;text-decoration:none}#ivyr-app h1,#ivyr-app h2,#ivyr-app h3,#ivyr-app p{margin:0}#ivyr-app h1,#ivyr-app h2,#ivyr-app h3{line-height:1.5}#ivyr-app h1{font:700 clamp(28px,3vw,40px)/1.5 IvyRound,sans-serif;letter-spacing:.03em}#ivyr-app h2{font:700 25px/1.6 IvyRound,sans-serif}#ivyr-app h3{font-size:19px}#ivyr-app button,#ivyr-app input,#ivyr-app select{font:inherit}#ivyr-app button{cursor:pointer}#ivyr-app button:disabled{opacity:.55;cursor:default}#ivyr-app button,#ivyr-app a,#ivyr-app input,#ivyr-app select,#ivyr-app summary{-webkit-tap-highlight-color:transparent}#ivyr-app :focus-visible{outline:3px solid #b77b1c;outline-offset:4px}#ivyr-app svg{width:23px;height:23px;flex-shrink:0;vertical-align:middle}#ivyr-app .skip-link{position:fixed;top:-100px;left:20px;z-index:100;background:white;padding:12px}#ivyr-app .skip-link:focus{top:10px}
#ivyr-app .site-header{background:#fffdf9;border-bottom:1px solid var(--line)}#ivyr-app .header-inner{max-width:1376px;padding:0 40px;height:92px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:28px}#ivyr-app .brand{display:flex;align-items:center;gap:10px;font:700 27px/1.3 IvyRound,sans-serif;white-space:nowrap;letter-spacing:.02em}#ivyr-app .brand svg{width:30px;height:30px;color:#659050}#ivyr-app .desktop-nav{display:flex;height:100%;gap:28px;align-items:center;font-size:14px;font-weight:700}#ivyr-app .desktop-nav a{height:100%;display:flex;align-items:center;position:relative}#ivyr-app .desktop-nav a[aria-current=page]::after{content:'';position:absolute;bottom:19px;height:3px;background:#7b9f60;left:5px;right:5px;border-radius:4px}#ivyr-app .header-end{display:flex;align-items:center;gap:15px}#ivyr-app .status-pill{font-size:12px;white-space:nowrap;padding:7px 12px;border:1px solid var(--line);border-radius:100px;display:flex;align-items:center;gap:7px;color:#606f61}#ivyr-app .status-pill i{width:7px;height:7px;background:#c09c4d;border-radius:50%}#ivyr-app .manage-link{font-size:12px;text-decoration:underline}
#ivyr-app .main-wrap{max-width:1376px;margin:0 auto;padding:40px 40px 70px}#ivyr-app .eyebrow{font-size:12px;font-weight:700;letter-spacing:.18em;color:#79866a;display:block;margin-bottom:9px}#ivyr-app .room-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}#ivyr-app .page-intro{color:var(--muted);font-size:14px;margin-top:10px}#ivyr-app .date-label{font-size:13px;letter-spacing:.08em;color:var(--muted);text-align:right}#ivyr-app .date-label span{display:block;font-size:12px;letter-spacing:0;margin-top:3px}#ivyr-app .home-grid{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:26px}#ivyr-app .room-scene{height:478px;position:relative;overflow:hidden;border-radius:22px;background:linear-gradient(105deg,#eee4cf,#f5ecdc 65%,#e7d5b7);box-shadow:inset 0 0 60px #9c825320}#ivyr-app .scene-grain{position:absolute;inset:0;background:repeating-linear-gradient(94deg,transparent 0 20px,#a27e4110 21px,transparent 22px 65px);pointer-events:none}#ivyr-app .window-frame{position:absolute;width:63%;height:305px;top:22px;left:17%;background:#d6bc96;padding:11px;border:7px solid #f5e9d0;border-radius:90px 90px 6px 6px;box-shadow:0 10px 20px #6c633326,inset 0 0 0 1px #bba581;overflow:hidden}#ivyr-app .window-pane{height:100%;border-radius:70px 70px 0 0;background:linear-gradient(0deg,#b7c58fe3,transparent 58%),url('../ivy-room-assets/assets/images/sky.jpg') center/cover;opacity:.68}#ivyr-app .window-cross{position:absolute;left:49%;top:0;bottom:0;width:11px;background:#f5e9d0;box-shadow:2px 0 3px #99895b30}#ivyr-app .window-cross:after{content:'';position:absolute;height:10px;width:550px;left:-270px;top:53%;background:#f5e9d0}#ivyr-app .sunbeam{position:absolute;left:25%;top:-70px;width:330px;height:650px;transform:rotate(25deg);background:linear-gradient(90deg,transparent,#fff8d060,transparent);pointer-events:none}#ivyr-app .scene-label{position:absolute;left:24px;top:24px;display:flex;align-items:center;gap:8px;border-radius:100px;background:#fffaf0e0;padding:7px 13px;font-size:12px;color:#736442;z-index:2}#ivyr-app .scene-label svg{width:17px;color:#b99137}#ivyr-app .shelf{position:absolute;left:0;right:0;bottom:0;height:112px;background:repeating-linear-gradient(1deg,transparent 0 7px,#a8784422 8px,transparent 9px 17px),linear-gradient(#d7b587,#bc9264);border-top:10px solid #dfc49d;box-shadow:0 -8px 12px #d8caac66}#ivyr-app .room-book{position:absolute;bottom:117px;left:7%;height:125px;width:84px;background:#f8edcc;border:7px solid #c7a775;transform:rotate(-9deg);box-shadow:4px 4px 8px #6e50322a;display:grid;place-items:center;text-align:center;font-size:12px;letter-spacing:.13em;color:#7b885b;line-height:1.8}#ivyr-app .small-pot{position:absolute;bottom:115px;right:8%;width:62px;height:55px;background:#a9b294;border-radius:6px 6px 20px 20px;border-top:5px solid #8e9d7b}#ivyr-app .small-pot span{position:absolute;font-size:85px;bottom:16px;left:-3px;color:#698753;transform:rotate(14deg)}#ivyr-app .ivy-character{position:absolute;width:300px;height:300px;left:50%;bottom:75px;margin-left:-150px;background:none;border:0;padding:0;touch-action:pan-y;animation:ivy-breathe 4.5s ease-in-out infinite;z-index:3;filter:drop-shadow(0 18px 10px #705f3430)}#ivyr-app .ivy-character img{width:100%;height:100%;display:block;pointer-events:none}#ivyr-app .speech{position:absolute;z-index:4;top:72px;right:6%;padding:18px 22px;background:#fffef8;border-radius:24px 24px 24px 3px;font-family:IvyRound;font-size:16px;line-height:1.7;box-shadow:0 6px 14px #93784a16;max-width:225px}#ivyr-app .ivy-face{position:absolute;left:23.5%;top:47%;width:53%;height:32%;background:radial-gradient(ellipse at 40% 0,#303b38,#131e1a 70%);border-radius:40% 40% 40% 40%;pointer-events:none}#ivyr-app .eye{position:absolute;top:32%;height:20%;width:23%;border:5px solid #75d7ef;border-bottom:0;border-radius:60px 60px 0 0;filter:drop-shadow(0 0 3px #53b4d955);animation:ivy-blink 6.5s infinite;transform-origin:center}#ivyr-app .eye-left{left:15%}#ivyr-app .eye-right{right:15%}#ivyr-app .mouth{position:absolute;width:18%;height:17%;background:#ee8890;border-radius:4px 4px 30px 30px;left:41%;top:63%}#ivyr-app .cheek{position:absolute;top:61%;width:10%;height:5%;border-radius:100%;background:#e7a0a880}#ivyr-app .cheek-left{left:15%}#ivyr-app .cheek-right{right:15%}#ivyr-app .reaction-heart{opacity:0;position:absolute;right:0;top:20%;font-size:36px;color:#c46f83}#ivyr-app .ivy-character.loving .reaction-heart{animation:heart-float 1.5s infinite}#ivyr-app .ivy-character.winking .eye-right{transform:scaleY(.2);animation:none}#ivyr-app .ivy-character.tickled{animation:ivy-wiggle .3s infinite}#ivyr-app .ivy-character.looking .ivy-face{transform:translateX(3px)}#ivyr-app .room-actions{position:absolute;bottom:23px;left:20px;right:20px;display:flex;justify-content:center;gap:10px;z-index:5}#ivyr-app .room-actions button{display:flex;align-items:center;gap:6px;background:#fffaf0df;border:1px solid #fffc;border-radius:50px;padding:10px 15px;font-size:12px;min-height:44px;color:#65553d;box-shadow:0 2px 4px #71532910}#ivyr-app .room-actions button:hover{background:white;transform:translateY(-2px)}#ivyr-app .room-actions svg{width:17px;height:17px}#ivyr-app .room-scene.night{background:linear-gradient(120deg,#b5babe,#dad5c8)}#ivyr-app .night .window-pane{background:radial-gradient(circle at 68% 23%,#fff1c2 0 18px,transparent 19px),linear-gradient(#283e51,#6e8d8e)}#ivyr-app .night .sunbeam{display:none}
#ivyr-app .discovery-panel{padding:28px;background:#fffdf7;border:1px solid #e5e8da;border-radius:22px;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:12px}#ivyr-app .discovery-panel h2{font-size:25px}#ivyr-app .discovery-panel h3{font-size:16px}#ivyr-app .discovery-panel p{font-size:13px;color:#75806e;line-height:1.95}#ivyr-app .discovery-panel small{font-size:12px;color:#7d866f}#ivyr-app .discovery-illustration{height:103px;width:100%;border-radius:12px;background:#eff2e8;display:flex;align-items:center;justify-content:center;gap:15px;color:#91a77a}#ivyr-app .discovery-illustration svg{width:49px;height:49px;stroke-width:1}#ivyr-app .discovery-illustration span{font-size:12px;letter-spacing:.18em}#ivyr-app .discovery-photo{height:145px;width:100%;overflow:hidden;border-radius:12px;background:var(--sage);display:grid;place-items:center}#ivyr-app .discovery-photo img{width:100%;height:100%;object-fit:cover}#ivyr-app .button{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:44px;padding:10px 19px;background:#fffef9;border:1px solid #dce3d2;border-radius:10px;font-size:13px;font-weight:700;color:var(--ink);text-decoration:none}#ivyr-app .button.primary{background:var(--yellow);border-color:var(--yellow)}#ivyr-app .button:hover{filter:brightness(.97)}#ivyr-app .button svg{width:18px}#ivyr-app .discovery-panel .button{width:100%;margin-top:3px}#ivyr-app .room-foot{display:flex;gap:18px;align-items:center;padding:13px 0;color:#7b806e;font-size:12px}#ivyr-app .room-foot>span:first-child{display:flex;gap:6px;align-items:center}#ivyr-app .room-foot>span:last-child{margin-left:auto;font-size:12px}#ivyr-app .room-foot svg{width:14px;height:14px}#ivyr-app .quiet-button{background:none;border:0;color:var(--green);padding:8px;text-decoration:underline;text-underline-offset:4px;font-size:12px;min-height:44px}#ivyr-app .observation-strip{display:flex;align-items:center;gap:30px;margin:14px 0 42px;padding:24px 28px;border:1px solid var(--line);background:#fffefa;border-radius:16px}#ivyr-app .observation-strip h2{font-size:17px}#ivyr-app .observation-strip .eyebrow{font-size:12px;margin-bottom:1px}#ivyr-app .observation-cell{border-left:1px solid var(--line);padding-left:30px;display:flex;gap:12px;align-items:center;flex:1}#ivyr-app .observation-cell>span{font-size:12px;color:var(--muted)}#ivyr-app .observation-cell strong{display:block;font-size:17px;color:#5d6b59;font-weight:400}#ivyr-app .observation-cell svg{color:#7f9e92}#ivyr-app .text-link{font-size:12px;color:var(--green);display:inline-flex;align-items:center;gap:10px;font-weight:700}#ivyr-app .text-link svg{width:16px}#ivyr-app .section-head{display:flex;align-items:end;justify-content:space-between;margin:25px 0 22px;gap:20px}#ivyr-app .section-head h2{font-size:25px}#ivyr-app .entry-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}#ivyr-app .entry-card{background:#fffefa;border:1px solid var(--line);border-radius:16px;overflow:hidden;transition:transform .2s,box-shadow .2s}#ivyr-app .entry-card:hover{transform:translateY(-3px);box-shadow:0 8px 22px #324a3010}#ivyr-app .entry-cover{height:195px;position:relative;background:#e9eee0;overflow:hidden}#ivyr-app .entry-cover img{width:100%;height:100%;object-fit:cover;display:block}#ivyr-app .entry-placeholder{height:100%;display:grid;place-items:center;background:radial-gradient(circle at 30% 10%,#faf7dc,transparent),#e7eddc}#ivyr-app .entry-placeholder svg{width:65px;height:65px;stroke-width:1;color:#92a77e}#ivyr-app .entry-card:nth-child(2) .entry-placeholder{background:linear-gradient(130deg,#f3ead6,#ede4ce)}#ivyr-app .entry-card:nth-child(3) .entry-placeholder{background:linear-gradient(130deg,#e0eae4,#d7e5de)}#ivyr-app .entry-copy{padding:22px}#ivyr-app .entry-copy h3{margin-bottom:10px;font-size:18px}#ivyr-app .entry-copy p{font-size:13px;color:var(--muted);margin-bottom:16px}#ivyr-app .photo-count{position:absolute;bottom:10px;right:10px;padding:3px 9px;border-radius:30px;background:#fffefa;font-size:12px}#ivyr-app .learning-grid .entry-cover{height:116px}#ivyr-app .learning-grid .entry-placeholder svg{width:45px;height:45px}
#ivyr-app .page-heading{margin:5px 0 32px}#ivyr-app .back-link{font-size:13px;display:block;margin-bottom:20px;color:var(--green)}#ivyr-app .journal-filter{display:flex;gap:15px;align-items:center;flex-wrap:wrap;padding:18px 22px;background:#edf1e7;border-radius:12px;margin-bottom:28px;font-size:13px}#ivyr-app input[type=month],#ivyr-app select{background:white;border:1px solid #cdd7c5;padding:8px;border-radius:6px;min-height:44px;color:var(--ink)}#ivyr-app .empty-card{text-align:center;padding:70px 24px;background:#f0f2e8;border:1px dashed #cbd7c1;border-radius:18px;grid-column:1/-1}#ivyr-app .empty-card>svg{width:42px;height:42px;color:#8caa78;margin-bottom:20px}#ivyr-app .empty-card p{color:var(--muted);margin:14px 0 20px}#ivyr-app .pagination{display:flex;justify-content:center;gap:12px;margin-top:30px}#ivyr-app .pagination>*{padding:8px 15px;border:1px solid var(--line);border-radius:8px}#ivyr-app .pagination .current{background:var(--sage)}#ivyr-app .article-card{max-width:970px;margin:auto;padding:36px;background:#fffefa;border:1px solid var(--line);border-radius:20px}#ivyr-app .article-prose{max-width:720px;margin:auto;font-size:17px;line-height:2}#ivyr-app .article-prose p{margin:20px 0}#ivyr-app .article-prose h2{margin:32px 0 12px}#ivyr-app .article-prose a{text-decoration:underline;color:var(--green)}#ivyr-app .photo-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-bottom:30px}#ivyr-app .photo-gallery figure{margin:0}#ivyr-app .photo-gallery figure:first-child:last-child{grid-column:1/-1}#ivyr-app .gallery-open{padding:0;border:0;background:none;width:100%;position:relative}#ivyr-app .gallery-open img{width:100%;height:auto;max-height:580px;object-fit:contain;border-radius:10px}#ivyr-app .gallery-open span{position:absolute;bottom:15px;right:15px;background:#fffefaee;border-radius:20px;padding:5px 12px;font-size:12px;color:var(--ink)}#ivyr-app figcaption{font-size:12px;color:var(--muted)}#ivyr-app .observation-blocks{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:30px 0}#ivyr-app .observation-blocks section{padding:20px;background:#f0f3e8;border-radius:12px}#ivyr-app .observation-blocks h2{font-size:17px;margin-bottom:12px}#ivyr-app .observation-blocks p{font-size:14px}#ivyr-app .edit-entry{display:block;margin-top:20px}#ivyr-app #photo-dialog{max-width:95vw;max-height:95vh;border:0;border-radius:14px;padding:16px;background:#fffdf6}#ivyr-app #photo-dialog::backdrop{background:#182a23cf}#ivyr-app #photo-full{display:block;max-width:85vw;max-height:78vh;object-fit:contain;margin-top:10px}#ivyr-app #photo-close{float:right}
#ivyr-app .graph-panel{border:1px solid var(--line);background:#fffefa;border-radius:20px;padding:28px}#ivyr-app .graph-head{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:20px}#ivyr-app .graph-head h2{font-size:24px}#ivyr-app #graph-source{font-size:12px;color:#83714b;margin-top:5px}#ivyr-app .graph-controls fieldset{border:0;padding:0;margin:0 0 16px;min-width:0}#ivyr-app .graph-controls legend{font-size:12px;margin-bottom:8px;font-weight:700}#ivyr-app .segmented{display:flex;gap:7px;flex-wrap:wrap}#ivyr-app .segmented button{min-height:42px;padding:8px 17px;border:1px solid #dae2d2;background:transparent;border-radius:9px;font-size:13px;color:var(--ink)}#ivyr-app .segmented button[aria-pressed=true]{background:#e7eedf;border-color:#547a4c;box-shadow:inset 0 0 0 1px #547a4c;font-weight:700}#ivyr-app .compare-row{display:flex;gap:20px;align-items:center;flex-wrap:wrap;font-size:13px}#ivyr-app .compare-row input{accent-color:var(--green);width:17px;height:17px;vertical-align:middle}#ivyr-app .compare-row .quiet-button{margin-left:auto}#ivyr-app .chart-container{height:380px;width:100%;position:relative;margin:15px 0}#ivyr-app .graph-summary{font-size:13px;font-weight:700;border-top:1px solid var(--line);padding-top:20px;margin-top:20px}#ivyr-app .graph-note,#ivyr-app #graph-message{font-size:12px;color:var(--muted);margin-top:10px}#ivyr-app .data-table-panel{margin-top:20px;border-top:1px solid var(--line);padding-top:16px;font-size:13px}#ivyr-app summary{cursor:pointer;padding:8px 0}#ivyr-app .table-scroll{max-height:350px;overflow:auto}#ivyr-app table{border-collapse:collapse;width:100%;font-size:12px;text-align:left}#ivyr-app th,#ivyr-app td{padding:9px;border-bottom:1px solid var(--line);white-space:nowrap}#ivyr-app th{background:#f0f3e8;position:sticky;top:0}#ivyr-app .table-pagination{display:flex;justify-content:space-between;align-items:center;margin-top:14px}#ivyr-app .learning-note{display:flex;gap:20px;align-items:center;padding:28px;margin-top:24px;background:#edf1e4;border-radius:16px}#ivyr-app .learning-note h2{font-size:19px}#ivyr-app .learning-note p{font-size:13px;color:var(--muted);margin-top:5px}#ivyr-app .learning-note>.text-link{white-space:nowrap;margin-left:auto}#ivyr-app .site-footer{max-width:1296px;margin:0 auto;padding:28px 0 40px;border-top:1px solid var(--line);display:flex;align-items:center;gap:22px}#ivyr-app .site-footer .brand{font-size:20px}#ivyr-app .site-footer .brand svg{width:23px}#ivyr-app .site-footer p{font-size:12px;color:var(--muted)}#ivyr-app .site-footer small{margin-left:auto;font-size:12px;color:var(--muted)}#ivyr-app .mobile-nav{display:none}
@keyframes ivy-breathe{0%,100%{transform:translateY(0) rotate(-.4deg)}50%{transform:translateY(-5px) rotate(.4deg)}}@keyframes ivy-blink{0%,42%,46%,100%{transform:scaleY(1)}44%{transform:scaleY(.1)}}@keyframes heart-float{0%{transform:translateY(0) scale(.6);opacity:0}30%{opacity:1}100%{transform:translateY(-40px) scale(1.2);opacity:0}}@keyframes ivy-wiggle{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}#ivyr-app.reduced-motion *,#ivyr-app.reduced-motion *:before,#ivyr-app.reduced-motion *:after{animation:none!important;transition:none!important}#ivyr-app.paused *{animation-play-state:paused!important}
@media(min-width:1500px){#ivyr-app .room-scene{height:520px}#ivyr-app .ivy-character{width:330px;height:330px;margin-left:-165px}#ivyr-app .window-frame{height:340px}}
@media(max-width:1100px){#ivyr-app .header-inner{gap:15px;padding:0 25px}#ivyr-app .desktop-nav{gap:18px;font-size:12px}#ivyr-app .brand{font-size:24px}#ivyr-app .status-pill{font-size:12px}#ivyr-app .main-wrap{padding:30px 25px 50px}#ivyr-app .home-grid{grid-template-columns:minmax(0,1fr) 285px;gap:18px}#ivyr-app .speech{right:4%;font-size:13px;max-width:170px;padding:12px 15px}#ivyr-app .observation-strip{gap:18px;padding:20px}#ivyr-app .observation-cell{padding-left:18px}#ivyr-app .site-footer{margin:0 25px}#ivyr-app .room-actions{gap:6px;left:10px;right:10px}#ivyr-app .room-actions button{padding:10px;font-size:12px}}
@media(max-width:800px){#ivyr-app .header-inner{height:73px;padding:0 20px}#ivyr-app .desktop-nav{display:none}#ivyr-app .brand{font-size:23px}#ivyr-app .status-pill{padding:5px 8px}#ivyr-app .main-wrap{padding:27px 20px 35px}#ivyr-app .room-heading{margin-bottom:20px}#ivyr-app .room-heading .date-label{display:none}#ivyr-app h1{font-size:28px}#ivyr-app .page-intro{font-size:12px}#ivyr-app .home-grid{grid-template-columns:1fr}#ivyr-app .room-scene{height:430px}#ivyr-app .ivy-character{width:275px;height:275px;margin-left:-137px;bottom:80px}#ivyr-app .window-frame{height:280px}#ivyr-app .speech{right:6%;top:63px;font-size:13px}#ivyr-app .room-actions{bottom:19px}#ivyr-app .room-actions button{padding:9px 14px}#ivyr-app .discovery-panel{padding:23px;gap:14px}#ivyr-app .discovery-panel h2 br{display:none}#ivyr-app .discovery-panel h2{font-size:21px}#ivyr-app .discovery-illustration{display:none}#ivyr-app .discovery-panel .button{width:auto}#ivyr-app .room-foot{flex-wrap:wrap;gap:5px 12px;padding-top:9px}#ivyr-app .room-foot>span:last-child{margin-left:0;font-size:12px;width:100%}#ivyr-app .observation-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:18px;margin-top:12px}#ivyr-app .observation-strip>div:first-child{grid-column:1/-1;display:flex;align-items:center;gap:12px}#ivyr-app .observation-cell{border-left:0;padding-left:0;gap:6px;padding-top:8px}#ivyr-app .observation-cell strong{font-size:15px}#ivyr-app .observation-strip>.text-link{grid-column:1/-1;margin-top:8px;justify-content:flex-end}#ivyr-app .section-head{align-items:start}#ivyr-app .section-head h2{font-size:22px}#ivyr-app .section-head>.text-link{font-size:12px;white-space:nowrap;margin-top:29px}#ivyr-app .entry-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}#ivyr-app .learning-grid{grid-template-columns:1fr}#ivyr-app .learning-grid .entry-card{display:grid;grid-template-columns:90px 1fr}#ivyr-app .learning-grid .entry-cover{height:100%;min-height:170px}#ivyr-app .learning-grid .entry-copy{padding:18px}#ivyr-app .entry-copy h3{font-size:16px}#ivyr-app .entry-cover{height:155px}#ivyr-app .entry-copy{padding:16px}#ivyr-app .entry-copy p{font-size:12px}#ivyr-app .site-footer{margin:0 20px;padding:25px 0 110px;display:block}#ivyr-app .site-footer p{margin:10px 0}#ivyr-app .mobile-nav{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;bottom:0;left:0;right:0;background:#fffdf8f5;border-top:1px solid var(--line);z-index:20;padding:8px 10px max(8px,env(safe-area-inset-bottom));backdrop-filter:blur(12px)}#ivyr-app .mobile-nav a{display:flex;align-items:center;flex-direction:column;gap:3px;font-size:12px;color:#85907d;min-height:50px;padding:5px}#ivyr-app .mobile-nav a[aria-current=page]{color:#2e613f;background:#eaf0e2;border-radius:12px;font-weight:700}#ivyr-app .mobile-nav svg{width:22px;height:22px}#ivyr-app .graph-panel{padding:17px}#ivyr-app .graph-head{align-items:start;gap:10px}#ivyr-app .graph-head .button{font-size:12px;padding:8px 12px;white-space:nowrap}#ivyr-app .graph-head h2{font-size:20px}#ivyr-app .segmented{gap:5px}#ivyr-app .segmented button{padding:8px 12px;font-size:12px}#ivyr-app .chart-container{height:300px}#ivyr-app .compare-row{gap:10px}#ivyr-app .compare-row .quiet-button{margin-left:0}#ivyr-app .learning-note{display:block;padding:22px}#ivyr-app .learning-note>span{display:none}#ivyr-app .learning-note>.text-link{margin-top:14px}#ivyr-app .article-card{padding:20px}#ivyr-app .article-prose{font-size:16px}#ivyr-app .article-prose h2{font-size:22px}#ivyr-app .photo-gallery{grid-template-columns:1fr}#ivyr-app .observation-blocks{grid-template-columns:1fr}#ivyr-app .empty-card h2{font-size:22px}}
@media(max-width:380px){#ivyr-app .main-wrap{padding-left:14px;padding-right:14px}#ivyr-app .header-inner{padding:0 14px}#ivyr-app .brand{font-size:21px}#ivyr-app .status-pill{font-size:12px}#ivyr-app .room-scene{height:400px}#ivyr-app .ivy-character{width:250px;height:250px;margin-left:-125px;bottom:85px}#ivyr-app .room-actions button{font-size:12px;padding:8px 10px}#ivyr-app .speech{font-size:12px;right:10px}#ivyr-app .entry-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){#ivyr-app *,#ivyr-app *:before,#ivyr-app *:after{animation:none!important;transition:none!important}}

#ivyr-app .gallery-pagination{display:flex;gap:16px;align-items:center;justify-content:space-between;margin-top:12px;font-size:12px}

/* Official PlantsIO GIFs. Canvas freezes the current frame when motion is reduced. */
#ivyr-app .ivy-character{animation:none}
#ivyr-app .official-face{background:#000;overflow:hidden;left:29.5%;top:49%;width:42%;height:24%;border-radius:17% 17% 24% 24% / 25% 25% 32% 32%;display:grid;place-items:center}
#ivyr-app .official-face img,#ivyr-app .official-face canvas{width:84%;height:88%;object-fit:contain;display:block}
#ivyr-app .official-face [hidden]{display:none!important}
#ivyr-app .room-foot a{text-decoration:underline}

/* Slimmer silhouette; expression keeps its own intrinsic aspect ratio. */
#ivyr-app .ivy-character>img{width:88%;height:100%;margin-inline:6%;object-fit:fill}

/* Photographic green windowsill; character and controls remain interactive layers. */
#ivyr-app .room-scene{background:#9eac7a url('../ivy-room-assets/assets/images/window-garden-v1.jpg') center center/cover no-repeat;box-shadow:inset 0 0 0 1px #64704d20}
#ivyr-app .room-scene .scene-grain,#ivyr-app .room-scene .window-frame,#ivyr-app .room-scene .sunbeam,#ivyr-app .room-scene .room-book,#ivyr-app .room-scene .shelf,#ivyr-app .room-scene .small-pot{display:none}
#ivyr-app .room-scene::before{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#4536192b,transparent 25%);pointer-events:none}
#ivyr-app .room-scene.night::before{background:#10293888}
#ivyr-app .room-actions button{background:#fffdf4ed;border-color:#fffdf4;box-shadow:0 3px 12px #34291926}
#ivyr-app .scene-label{background:#fffdf4ed}
#ivyr-app .speech{box-shadow:0 5px 20px #2338191f}

/* Time and weather affect only the background, never the controls or official face. */
#ivyr-app .room-scene{background-image:none;isolation:isolate}
#ivyr-app .room-scene::before{inset:0;z-index:-1;background:#9eac7a url('../ivy-room-assets/assets/images/window-garden-v1.jpg') center/cover no-repeat;filter:none}
#ivyr-app .room-scene[data-background=cloud]::before{background-image:url('../ivy-room-assets/assets/images/window-cloud-v1.jpg')}
#ivyr-app .room-scene[data-background=rain]::before{background-image:url('../ivy-room-assets/assets/images/window-rain-v1.jpg')}
#ivyr-app .room-scene[data-background=night]::before{background-image:url('../ivy-room-assets/assets/images/window-night-v1.jpg')}
#ivyr-app .room-scene[data-period=morning]::before{filter:brightness(1.05) saturate(.94)}
#ivyr-app .room-scene[data-period=evening]::before{filter:sepia(.25) saturate(1.12) brightness(.8)}
#ivyr-app .room-scene[data-period=night][data-weather=cloud]::before,#ivyr-app .room-scene[data-weather=storm]::before{filter:brightness(.78) saturate(.8)}
#ivyr-app .room-scene[data-period=night][data-weather=rain]::after,#ivyr-app .room-scene[data-period=night][data-weather=storm]::after{content:'';position:absolute;inset:0 18% 27%;z-index:0;pointer-events:none;opacity:.3;background:repeating-linear-gradient(108deg,transparent 0 38px,#cfdfec80 39px,transparent 40px 75px);mask-image:linear-gradient(transparent,#000 20%,#000 85%,transparent)}
#ivyr-app .room-scene[data-weather=snow]::after{content:'';position:absolute;inset:0 18% 27%;pointer-events:none;opacity:.55;background:radial-gradient(circle,#fff 0 1.5px,transparent 2px) 0 0/42px 51px;mask-image:linear-gradient(transparent,#000 20%,#000 85%,transparent)}
#ivyr-app .scene-weather-note{font-size:12px;color:#52634f;margin:0 0 12px;display:flex;gap:5px 12px;flex-wrap:wrap}
#ivyr-app .scene-weather-note a{text-decoration:underline}
#ivyr-app .scene-weather-note [hidden]{display:none}
#ivyr-app .date-label #room-date{font-size:13px;margin-top:0}

/* Ground the pot at its actual SVG base (94.5% of the character box). */
#ivyr-app .ivy-character{filter:none;isolation:isolate}
#ivyr-app .ivy-character::before,#ivyr-app .ivy-character::after{content:'';position:absolute;pointer-events:none;z-index:-1;border-radius:50%}
#ivyr-app .ivy-character::before{left:21%;top:91%;width:63%;height:9%;background:radial-gradient(ellipse,#342b2070 0%,#342b2030 40%,transparent 72%);transform:skewX(-18deg)}
#ivyr-app .ivy-character::after{left:29%;top:93%;width:42%;height:3%;background:radial-gradient(ellipse,#251e16a6 0%,#251e1670 35%,transparent 73%)}

/* Keep the center of each diary photo as its display focal point. */
#ivyr-app .entry-cover img,#ivyr-app .discovery-photo img,#ivyr-app .gallery-open img,#ivyr-app #photo-full{object-position:50% 50%}

/* Diary index: photo-only, centered square tiles at every screen size. */
#ivyr-app .diary-photo-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
#ivyr-app .diary-photo{display:block;aspect-ratio:1;overflow:hidden;background:var(--sage);min-width:0;width:100%;padding:0;border:0}
#ivyr-app .diary-photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 50%}
#ivyr-app .diary-photo:focus-visible{outline-offset:-4px}
@media(max-width:800px){#ivyr-app .diary-photo-grid{gap:3px}}
#ivyr-app #photo-dialog{margin:auto}
#ivyr-app #photo-close{float:none;display:block;margin-left:auto}
#ivyr-app #photo-full{margin:10px auto 0;max-height:calc(95dvh - 150px)}

/* Rooted body motion and individually moving planter leaves. */
#ivyr-app .room-stage{min-width:0}
#ivyr-app .room-stage .room-actions{position:static;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}
#ivyr-app .room-stage .room-actions button{justify-content:center;min-height:44px;padding:10px 8px}
/* The SVG does not preserve its aspect ratio, so a narrower box squeezed the pot.
   Full width makes the horizontal and vertical scales equal: the body then renders
   256x219 units, matching the real 114x96mm body. */
#ivyr-app .ivy-body{display:block;width:100%;height:100%;pointer-events:none}
#ivyr-app .ivy-body>svg{display:block;width:100%;height:100%}
#ivyr-app .ivy-character{transform-origin:50% 94%;animation:ivy-settle 6s ease-in-out infinite}
#ivyr-app .ivy-plant{transform-origin:192px 145px;animation:ivy-leaves 4.8s ease-in-out infinite}
#ivyr-app .ivy-leaf{transform-box:fill-box;transform-origin:90% 90%;animation:ivy-flutter 3.2s ease-in-out infinite}
#ivyr-app .leaf-right{transform-origin:0% 90%;animation-delay:-1.4s}
#ivyr-app .leaf-top{animation-delay:-2.2s}
#ivyr-app .ivy-sparkles{position:absolute;top:35%;left:14%;width:72%;font-size:27px;color:#c18532;opacity:0;pointer-events:none}
#ivyr-app .ivy-character[data-action="winking"]{animation:ivy-nod .8s ease-in-out 2}
#ivyr-app .ivy-character[data-action="loving"]{animation:ivy-settle 1.5s ease-in-out 2}
#ivyr-app .ivy-character[data-action="tickled"]{animation:ivy-wiggle .35s ease-in-out 5}
#ivyr-app .ivy-character[data-action="breeze"] .ivy-plant{animation:ivy-wind .9s ease-in-out 4}
#ivyr-app .ivy-character[data-action="dance"]{animation:ivy-dance .8s ease-in-out 5}
#ivyr-app .ivy-character[data-action="dance"] .ivy-plant{animation:ivy-wind .8s ease-in-out 5}
#ivyr-app .ivy-character[data-action="cheer"] .ivy-sparkles,#ivyr-app .ivy-character[data-action="hearts"] .ivy-sparkles{animation:heart-float 1.3s ease-out 3}
#ivyr-app .ivy-character[data-action="cheer"]{animation:ivy-nod 1s ease-in-out 3}
@keyframes ivy-settle{0%,100%{transform:rotate(-.5deg)}50%{transform:rotate(.5deg)}}
@keyframes ivy-leaves{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2.5deg)}}
@keyframes ivy-flutter{0%,100%{transform:rotate(-1deg)}50%{transform:rotate(3deg)}}
@keyframes ivy-wind{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(8deg)}}
@keyframes ivy-nod{0%,100%{transform:scaleY(1) rotate(0)}50%{transform:scaleY(.97) rotate(2deg)}}
@keyframes ivy-dance{0%,100%{transform:rotate(0)}25%{transform:rotate(-4deg)}75%{transform:rotate(4deg)}}

#ivyr-app .expression-library{margin:0 0 18px;padding:14px 18px;border:1px solid var(--line,#ddd);border-radius:16px;background:#fffdf7;font-size:13px}#ivyr-app .expression-library summary{cursor:pointer;font-weight:700;min-height:28px}#ivyr-app .expression-library p{line-height:1.7;margin:10px 0}#ivyr-app .expression-controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center}#ivyr-app .expression-controls select{max-width:100%;min-height:44px;font:inherit;padding:8px;border:1px solid #d6dacb;border-radius:8px;background:white}#ivyr-app .expression-controls .button{min-height:44px}
/* With the extension pot fitted the whole assembly is drawn smaller, so the ground shadow follows. */
#ivyr-app .ivy-character[data-plant-stage="extended"]::before{left:28.1%;width:43.8%}
#ivyr-app .ivy-character[data-plant-stage="extended"]::after{left:35.4%;width:29.2%}
/* The face sits on the body's screen, so it follows the same scale about the same base. */
/* transform-origin is relative to this element, so the body's base sits at 190.8% of its height. */
#ivyr-app .ivy-character[data-plant-stage="extended"] .ivy-face{transform:scale(.695);transform-origin:50% 190.8%}
#ivyr-app .ivy-character[data-plant-stage="extended"].looking .ivy-face{transform:scale(.695) translateX(3px)}
#ivyr-app .ivy-character[data-plant-stage="extended"] .ivy-sparkles{top:12%}
