/**
 * UI / 基本レイアウト / CSS
 * 目的：サイト全体の基礎レイアウト。最終的な装飾はstorybook.cssで上書きする。
 * 依存：storybook.cssより先に読み込む
 * 管理：Simple Custom CSS and JS。有効／無効はこのプラグイン、画面と順序はCore、二重出力の防止はGuardが管理する。
 * 保守：識別子・読み込み順を維持し、変更後は対象画面とスマホ幅を確認する。
 */
/* フォントは初回描画までに用意できた場合だけ適用する。閲覧中の文字の再配置を避け、同一オリジンのキャッシュを利用する。 */
/* このサイトが実際に使う文字だけを .core に入れ、残りの漢字は .rest に分けた。   .rest は core に無い字が出たときだけ読み込まれる（初回は1068KB→489KB）。 */@font-face{font-family:IvySans;src:url('../ivy-room-assets/assets/fonts/ZenKakuGothicNew-Regular.core.woff2') format('woff2');font-display:swap;font-weight:400}@font-face{font-family:IvySans;src:url('../ivy-room-assets/assets/fonts/ZenKakuGothicNew-Bold.core.woff2') format('woff2');font-display:swap;font-weight:700}@font-face{font-family:IvyRound;src:url('../ivy-room-assets/assets/fonts/ZenMaruGothic-Bold.core.woff2') format('woff2');font-display:swap;font-weight:700}@font-face{font-family:IvySansRest;src:url('../ivy-room-assets/assets/fonts/ZenKakuGothicNew-Regular.rest.woff2') format('woff2');font-display:swap;unicode-range:U+2460-24FF,U+2E80-2FDF,U+3005-3007,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF;font-weight:400}@font-face{font-family:IvySansRest;src:url('../ivy-room-assets/assets/fonts/ZenKakuGothicNew-Bold.rest.woff2') format('woff2');font-display:swap;unicode-range:U+2460-24FF,U+2E80-2FDF,U+3005-3007,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF;font-weight:700}@font-face{font-family:IvyRoundRest;src:url('../ivy-room-assets/assets/fonts/ZenMaruGothic-Bold.rest.woff2') format('woff2');font-display:swap;unicode-range:U+2460-24FF,U+2E80-2FDF,U+3005-3007,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF;font-weight:700}
body.ivyr-site{margin:0;background:#faf8f2}#ivyr-app{--ink:#213c2e;--muted:#5d6b52;--green:#356548;--sage:#e8eee1;--yellow:#f2cd5d;--line:#e1e5d9;--r-xs:6px;--r-s:10px;--r-m:14px;--r-l:20px;--r-full:999px;--sh-1:0 1px 2px rgba(33,60,46,.05),0 2px 6px rgba(33,60,46,.05);--sh-2:0 2px 6px rgba(33,60,46,.07),0 8px 20px rgba(33,60,46,.07);--sh-3:0 6px 16px rgba(33,60,46,.09),0 18px 40px rgba(33,60,46,.09);--ease:cubic-bezier(.22,.68,.28,1);--ease-out:cubic-bezier(.16,1,.3,1);--t-fast:160ms;--t-base:240ms;--t-slow:520ms;/* 余白の刻み。9pxや7pxのような中途半端な値が散らばっていたので、ここへ寄せる。 */--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;/* 文字の段。12を起点に比率1.2。12〜28が1px刻みで10種類あったので、ここへ寄せる。 */--fs-1:12px;--fs-2:14px;--fs-3:17px;--fs-4:20px;--fs-5:24px;--fs-6:29px;--fs-7:38px;color:var(--ink);font:16px/1.75 IvySans,IvySansRest,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,IvyRoundRest,sans-serif;letter-spacing:.03em}#ivyr-app h2{font:700 var(--fs-5)/1.6 IvyRound,IvyRoundRest,sans-serif}#ivyr-app h3{font-size:var(--fs-4)}#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:var(--s-3)}#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 var(--s-7);height:92px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:var(--s-6)}#ivyr-app .brand{display:flex;align-items:center;gap:var(--s-3);font:700 27px/1.3 IvyRound,IvyRoundRest,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:var(--s-6);align-items:center;font-size:var(--fs-2);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:var(--r-xs)}#ivyr-app .header-end{display:flex;align-items:center;gap:var(--s-4)}#ivyr-app .status-pill{font-size:var(--fs-1);white-space:nowrap;padding:var(--s-2) var(--s-3);border:1px solid var(--line);border-radius:var(--r-full);display:flex;align-items:center;gap:var(--s-2);color:#606f61}#ivyr-app .status-pill i{width:7px;height:7px;background:#c09c4d;border-radius:var(--r-full)}#ivyr-app .manage-link{font-size:var(--fs-1);text-decoration:underline}
#ivyr-app .main-wrap{max-width:1376px;margin:0 auto;padding:var(--s-7) var(--s-7) var(--s-8)}#ivyr-app .eyebrow{font-size:var(--fs-1);font-weight:700;letter-spacing:.18em;color:#79866a;display:block;margin-bottom:var(--s-2)}#ivyr-app .room-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--s-6)}#ivyr-app .page-intro{color:var(--muted);font-size:var(--fs-2);margin-top:var(--s-3)}#ivyr-app .date-label{font-size:var(--fs-2);letter-spacing:.08em;color:var(--muted);text-align:right}#ivyr-app .date-label span{display:block;font-size:var(--fs-1);letter-spacing:0;margin-top:var(--s-1)}#ivyr-app .home-grid{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:var(--s-5)}#ivyr-app .room-scene{height:478px;position:relative;overflow:hidden;border-radius:var(--r-l);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:var(--s-3);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:var(--sh-1)}#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:var(--s-2);border-radius:var(--r-full);background:#fffaf0e0;padding:var(--s-2) var(--s-3);font-size:var(--fs-1);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:var(--sh-2)}#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:var(--sh-1);display:grid;place-items:center;text-align:center;font-size:var(--fs-1);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 var(--ease) 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:var(--s-4) var(--s-5);background:#fffef8;border-radius:24px 24px 24px 3px;font-family:IvyRound;font-size:var(--fs-3);line-height:1.7;box-shadow:var(--sh-2);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:var(--r-full);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:var(--r-full);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:var(--fs-7);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 var(--t-base) 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:var(--s-3);z-index:5}#ivyr-app .room-actions button{display:flex;align-items:center;gap:var(--s-2);background:#fffaf0df;border:1px solid #fffc;border-radius:var(--r-l);padding:var(--s-3) var(--s-4);font-size:var(--fs-1);min-height:44px;color:#65553d;box-shadow:var(--sh-1)}#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:var(--s-6);background:#fffdf7;border:1px solid #e5e8da;border-radius:var(--r-l);display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:var(--s-3)}#ivyr-app .discovery-panel h2{font-size:var(--fs-5)}#ivyr-app .discovery-panel h3{font-size:var(--fs-3)}#ivyr-app .discovery-panel p{font-size:var(--fs-2);color:#75806e;line-height:1.95}#ivyr-app .discovery-panel small{font-size:var(--fs-1);color:#7d866f}#ivyr-app .discovery-illustration{height:103px;width:100%;border-radius:var(--r-m);background:#eff2e8;display:flex;align-items:center;justify-content:center;gap:var(--s-4);color:#91a77a}#ivyr-app .discovery-illustration svg{width:49px;height:49px;stroke-width:1}#ivyr-app .discovery-illustration span{font-size:var(--fs-1);letter-spacing:.18em}#ivyr-app .discovery-photo{height:145px;width:100%;overflow:hidden;border-radius:var(--r-m);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:var(--s-3);min-height:44px;padding:var(--s-3) var(--s-4);background:#fffef9;border:1px solid #dce3d2;border-radius:var(--r-s);font-size:var(--fs-2);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:var(--s-1)}#ivyr-app .room-foot{display:flex;gap:var(--s-4);align-items:center;padding:var(--s-3) 0;color:#7b806e;font-size:var(--fs-1)}#ivyr-app .room-foot>span:first-child{display:flex;gap:var(--s-2);align-items:center}#ivyr-app .room-foot>span:last-child{margin-left:auto;font-size:var(--fs-1)}#ivyr-app .room-foot svg{width:14px;height:14px}#ivyr-app .quiet-button{background:none;border:0;color:var(--green);padding:var(--s-2);text-decoration:underline;text-underline-offset:4px;font-size:var(--fs-1);min-height:44px}#ivyr-app .observation-strip{display:flex;align-items:center;gap:var(--s-6);margin:var(--s-4) 0 var(--s-7);padding:var(--s-5) var(--s-6);border:1px solid var(--line);background:#fffefa;border-radius:var(--r-m)}#ivyr-app .observation-strip h2{font-size:var(--fs-3)}#ivyr-app .observation-strip .eyebrow{font-size:var(--fs-1);margin-bottom:var(--s-1)}#ivyr-app .observation-cell{border-left:1px solid var(--line);padding-left:var(--s-6);display:flex;gap:var(--s-3);align-items:center;flex:1}#ivyr-app .observation-cell>span{font-size:var(--fs-1);color:var(--muted)}#ivyr-app .observation-cell strong{display:block;font-size:var(--fs-3);color:#5d6b59;font-weight:400}#ivyr-app .observation-cell svg{color:#7f9e92}#ivyr-app .text-link{font-size:var(--fs-1);color:var(--green);display:inline-flex;align-items:center;gap:var(--s-3);font-weight:700}#ivyr-app .text-link svg{width:16px}#ivyr-app .section-head{display:flex;align-items:end;justify-content:space-between;margin:var(--s-5) 0 var(--s-5);gap:var(--s-5)}#ivyr-app .section-head h2{font-size:var(--fs-5)}#ivyr-app .entry-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-5)}#ivyr-app .entry-card{background:#fffefa;border:1px solid var(--line);border-radius:var(--r-m);overflow:hidden;transition:transform var(--t-base),box-shadow var(--t-base)}#ivyr-app .entry-card:hover{transform:translateY(-3px);box-shadow:var(--sh-3)}#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:var(--s-5)}#ivyr-app .entry-copy h3{margin-bottom:var(--s-3);font-size:var(--fs-3)}#ivyr-app .entry-copy p{font-size:var(--fs-2);color:var(--muted);margin-bottom:var(--s-4)}#ivyr-app .photo-count{position:absolute;bottom:10px;right:10px;padding:var(--s-1) var(--s-2);border-radius:var(--r-l);background:#fffefa;font-size:var(--fs-1)}#ivyr-app .learning-grid .entry-cover{height:116px}#ivyr-app .learning-grid .entry-placeholder svg{width:45px;height:45px}
#ivyr-app .page-heading{margin:var(--s-1) 0 var(--s-6)}#ivyr-app .back-link{font-size:var(--fs-2);display:block;margin-bottom:var(--s-5);color:var(--green)}#ivyr-app .journal-filter{display:flex;gap:var(--s-4);align-items:center;flex-wrap:wrap;padding:var(--s-4) var(--s-5);background:#edf1e7;border-radius:var(--r-m);margin-bottom:var(--s-6);font-size:var(--fs-2)}#ivyr-app input[type=month],#ivyr-app select{background:white;border:1px solid #cdd7c5;padding:var(--s-2);border-radius:var(--r-xs);min-height:44px;color:var(--ink)}#ivyr-app .empty-card{text-align:center;padding:var(--s-8) var(--s-5);background:#f0f2e8;border:1px dashed #cbd7c1;border-radius:var(--r-l);grid-column:1/-1}#ivyr-app .empty-card>svg{width:42px;height:42px;color:#8caa78;margin-bottom:var(--s-5)}#ivyr-app .empty-card p{color:var(--muted);margin:var(--s-4) 0 var(--s-5)}#ivyr-app .pagination{display:flex;justify-content:center;gap:var(--s-3);margin-top:var(--s-6)}#ivyr-app .pagination>*{padding:var(--s-2) var(--s-4);border:1px solid var(--line);border-radius:var(--r-s)}#ivyr-app .pagination .current{background:var(--sage)}#ivyr-app .article-card{max-width:970px;margin:auto;padding:var(--s-6);background:#fffefa;border:1px solid var(--line);border-radius:var(--r-l)}#ivyr-app .article-prose{max-width:720px;margin:auto;font-size:var(--fs-3);line-height:2}#ivyr-app .article-prose p{margin:var(--s-5) 0}#ivyr-app .article-prose h2{margin:var(--s-6) 0 var(--s-3)}#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:var(--s-4);margin-bottom:var(--s-6)}#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:var(--r-s)}#ivyr-app .gallery-open span{position:absolute;bottom:15px;right:15px;background:#fffefaee;border-radius:var(--r-l);padding:var(--s-1) var(--s-3);font-size:var(--fs-1);color:var(--ink)}#ivyr-app figcaption{font-size:var(--fs-1);color:var(--muted)}#ivyr-app .observation-blocks{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-4);margin:var(--s-6) 0}#ivyr-app .observation-blocks section{padding:var(--s-5);background:#f0f3e8;border-radius:var(--r-m)}#ivyr-app .observation-blocks h2{font-size:var(--fs-3);margin-bottom:var(--s-3)}#ivyr-app .observation-blocks p{font-size:var(--fs-2)}#ivyr-app .edit-entry{display:block;margin-top:var(--s-5)}#ivyr-app #photo-dialog{max-width:95vw;max-height:95vh;border:0;border-radius:var(--r-m);padding:var(--s-4);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:var(--s-3)}#ivyr-app #photo-close{float:right}
#ivyr-app .graph-panel{border:1px solid var(--line);background:#fffefa;border-radius:var(--r-l);padding:var(--s-6)}#ivyr-app .graph-head{display:flex;justify-content:space-between;gap:var(--s-5);align-items:center;margin-bottom:var(--s-5)}#ivyr-app .graph-head h2{font-size:var(--fs-5)}#ivyr-app #graph-source{font-size:var(--fs-1);color:#83714b;margin-top:var(--s-1)}#ivyr-app .graph-controls fieldset{border:0;padding:0;margin:0 0 var(--s-4);min-width:0}#ivyr-app .graph-controls legend{font-size:var(--fs-1);margin-bottom:var(--s-2);font-weight:700}#ivyr-app .segmented{display:flex;gap:var(--s-2);flex-wrap:wrap}#ivyr-app .segmented button{min-height:42px;padding:var(--s-2) var(--s-4);border:1px solid #dae2d2;background:transparent;border-radius:var(--r-s);font-size:var(--fs-2);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:var(--s-5);align-items:center;flex-wrap:wrap;font-size:var(--fs-2)}#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:var(--s-4) 0}#ivyr-app .graph-summary{font-size:var(--fs-2);font-weight:700;border-top:1px solid var(--line);padding-top:var(--s-5);margin-top:var(--s-5)}#ivyr-app .graph-note,#ivyr-app #graph-message{font-size:var(--fs-1);color:var(--muted);margin-top:var(--s-3)}#ivyr-app .data-table-panel{margin-top:var(--s-5);border-top:1px solid var(--line);padding-top:var(--s-4);font-size:var(--fs-2)}#ivyr-app summary{cursor:pointer;padding:var(--s-2) 0}#ivyr-app .table-scroll{max-height:350px;overflow:auto}#ivyr-app table{border-collapse:collapse;width:100%;font-size:var(--fs-1);text-align:left}#ivyr-app th,#ivyr-app td{padding:var(--s-2);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:var(--s-4)}#ivyr-app .learning-note{display:flex;gap:var(--s-5);align-items:center;padding:var(--s-6);margin-top:var(--s-5);background:#edf1e4;border-radius:var(--r-m)}#ivyr-app .learning-note h2{font-size:var(--fs-4)}#ivyr-app .learning-note p{font-size:var(--fs-2);color:var(--muted);margin-top:var(--s-1)}#ivyr-app .learning-note>.text-link{white-space:nowrap;margin-left:auto}#ivyr-app .site-footer{max-width:1296px;margin:0 auto;padding:var(--s-6) 0 var(--s-7);border-top:1px solid var(--line);display:flex;align-items:center;gap:var(--s-5)}#ivyr-app .site-footer .brand{font-size:var(--fs-4)}#ivyr-app .site-footer .brand svg{width:23px}#ivyr-app .site-footer p{font-size:var(--fs-1);color:var(--muted)}#ivyr-app .site-footer small{margin-left:auto;font-size:var(--fs-1);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:var(--s-4);padding:0 var(--s-5)}#ivyr-app .desktop-nav{gap:var(--s-4);font-size:var(--fs-1)}#ivyr-app .brand{font-size:var(--fs-5)}#ivyr-app .status-pill{font-size:var(--fs-1)}#ivyr-app .main-wrap{padding:var(--s-6) var(--s-5) var(--s-7)}#ivyr-app .home-grid{grid-template-columns:minmax(0,1fr) 285px;gap:var(--s-4)}#ivyr-app .speech{right:4%;font-size:var(--fs-2);max-width:170px;padding:var(--s-3) var(--s-4)}#ivyr-app .observation-strip{gap:var(--s-4);padding:var(--s-5)}#ivyr-app .observation-cell{padding-left:var(--s-4)}#ivyr-app .site-footer{margin:0 var(--s-5)}#ivyr-app .room-actions{gap:var(--s-2);left:10px;right:10px}#ivyr-app .room-actions button{padding:var(--s-3);font-size:var(--fs-1)}}
@media(max-width:800px){#ivyr-app .header-inner{height:73px;padding:0 var(--s-5)}#ivyr-app .desktop-nav{display:none}#ivyr-app .brand{font-size:var(--fs-5)}#ivyr-app .status-pill{padding:var(--s-1) var(--s-2)}#ivyr-app .main-wrap{padding:var(--s-5) var(--s-5) var(--s-6)}#ivyr-app .room-heading{margin-bottom:var(--s-5)}#ivyr-app .room-heading .date-label{display:none}#ivyr-app h1{font-size:var(--fs-6)}#ivyr-app .page-intro{font-size:var(--fs-1)}#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:var(--fs-2)}#ivyr-app .room-actions{bottom:19px}#ivyr-app .room-actions button{padding:var(--s-2) var(--s-4)}#ivyr-app .discovery-panel{padding:var(--s-5);gap:var(--s-4)}#ivyr-app .discovery-panel h2 br{display:none}#ivyr-app .discovery-panel h2{font-size:var(--fs-4)}#ivyr-app .discovery-illustration{display:none}#ivyr-app .discovery-panel .button{width:auto}#ivyr-app .room-foot{flex-wrap:wrap;gap:var(--s-1) var(--s-3);padding-top:var(--s-2)}#ivyr-app .room-foot>span:last-child{margin-left:0;font-size:var(--fs-1);width:100%}#ivyr-app .observation-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-3);padding:var(--s-4);margin-top:var(--s-3)}#ivyr-app .observation-strip>div:first-child{grid-column:1/-1;display:flex;align-items:center;gap:var(--s-3)}#ivyr-app .observation-cell{border-left:0;padding-left:0;gap:var(--s-2);padding-top:var(--s-2)}#ivyr-app .observation-cell strong{font-size:var(--fs-2)}#ivyr-app .observation-strip>.text-link{grid-column:1/-1;margin-top:var(--s-2);justify-content:flex-end}#ivyr-app .section-head{align-items:start}#ivyr-app .section-head h2{font-size:var(--fs-5)}#ivyr-app .section-head>.text-link{font-size:var(--fs-1);white-space:nowrap;margin-top:var(--s-6)}#ivyr-app .entry-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-4)}#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:var(--s-4)}#ivyr-app .entry-copy h3{font-size:var(--fs-3)}#ivyr-app .entry-cover{height:155px}#ivyr-app .entry-copy{padding:var(--s-4)}#ivyr-app .entry-copy p{font-size:var(--fs-1)}#ivyr-app .site-footer{margin:0 var(--s-5);padding:var(--s-5) 0 110px;display:block}#ivyr-app .site-footer p{margin:var(--s-3) 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:var(--s-2) var(--s-3) 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:var(--s-1);font-size:var(--fs-1);color:#85907d;min-height:50px;padding:var(--s-1)}#ivyr-app .mobile-nav a[aria-current=page]{color:#2e613f;background:#eaf0e2;border-radius:var(--r-m);font-weight:700}#ivyr-app .mobile-nav svg{width:22px;height:22px}#ivyr-app .graph-panel{padding:var(--s-4)}#ivyr-app .graph-head{align-items:start;gap:var(--s-3)}#ivyr-app .graph-head .button{font-size:var(--fs-1);padding:var(--s-2) var(--s-3);white-space:nowrap}#ivyr-app .graph-head h2{font-size:var(--fs-4)}#ivyr-app .segmented{gap:var(--s-1)}#ivyr-app .segmented button{padding:var(--s-2) var(--s-3);font-size:var(--fs-1)}#ivyr-app .chart-container{height:300px}#ivyr-app .compare-row{gap:var(--s-3)}#ivyr-app .compare-row .quiet-button{margin-left:0}#ivyr-app .learning-note{display:block;padding:var(--s-5)}#ivyr-app .learning-note>span{display:none}#ivyr-app .learning-note>.text-link{margin-top:var(--s-4)}#ivyr-app .article-card{padding:var(--s-5)}#ivyr-app .article-prose{font-size:var(--fs-3)}#ivyr-app .article-prose h2{font-size:var(--fs-5)}#ivyr-app .photo-gallery{grid-template-columns:1fr}#ivyr-app .observation-blocks{grid-template-columns:1fr}#ivyr-app .empty-card h2{font-size:var(--fs-5)}}
@media(max-width:380px){#ivyr-app .main-wrap{padding-left:var(--s-4);padding-right:var(--s-4)}#ivyr-app .header-inner{padding:0 var(--s-4)}#ivyr-app .brand{font-size:var(--fs-4)}#ivyr-app .status-pill{font-size:var(--fs-1)}#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:var(--fs-1);padding:var(--s-2) var(--s-3)}#ivyr-app .speech{font-size:var(--fs-1);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:var(--s-4);align-items:center;justify-content:space-between;margin-top:var(--s-3);font-size:var(--fs-1)}

/* PlantsIO公式GIFを使用。動きを抑える設定ではCanvasで現在のフレームを固定する。 */
#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:var(--r-full);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}

/* 本体を細身にし、表情画像自体の縦横比は維持する。 */
#ivyr-app .ivy-character>img{width:88%;height:100%;margin-inline:6%;object-fit:fill}

/* 写真風の窓辺。キャラクターと操作部は別レイヤーに保つ。 */
#ivyr-app .room-scene{background:#9eac7a url('../ivy-room-assets/assets/images/window-garden-v1.webp') 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:var(--sh-2)}
#ivyr-app .scene-label{background:#fffdf4ed}
#ivyr-app .speech{box-shadow:var(--sh-2)}

/* 時間・天気で変えるのは背景のみ。操作部と公式表情には適用しない。 */
#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.webp') 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.webp')}
#ivyr-app .room-scene[data-background=rain]::before{background-image:url('../ivy-room-assets/assets/images/window-rain-v1.webp')}
#ivyr-app .room-scene[data-background=night]::before{background-image:url('../ivy-room-assets/assets/images/window-night-v1.webp')}
#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:var(--fs-1);color:#52634f;margin:0 0 var(--s-3);display:flex;gap:var(--s-1) var(--s-3);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:var(--fs-2);margin-top:0}

/* 鉢のSVG底面（キャラクター領域の94.5%）を接地位置とする。 */
#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:var(--r-full)}
#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%)}

/* 日記写真の中心を表示の基準点とする。 */
#ivyr-app .entry-cover img,#ivyr-app .discovery-photo img,#ivyr-app .gallery-open img,#ivyr-app #photo-full{object-position:50% 50%}

/* 日記一覧は画面幅に応じた正方形の写真タイルで表示する。 */
#ivyr-app .diary-photo-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-2)}
#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:var(--s-1)}}
#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)}

/* 本体の根元を固定し、鉢の葉を個別に動かす。 */
#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:var(--s-2);margin-top:var(--s-3)}
#ivyr-app .room-stage .room-actions button{justify-content:center;min-height:44px;padding:var(--s-3) var(--s-2)}
/* SVGの横幅を確保し、鉢が横につぶれないよう縦横の縮尺を合わせる。本体描画は256×219座標。 */
#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 var(--ease) infinite}
#ivyr-app .ivy-plant{transform-origin:192px 145px;animation:ivy-leaves 4.8s var(--ease) infinite}
#ivyr-app .ivy-leaf{transform-box:fill-box;transform-origin:90% 90%;animation:ivy-flutter 3.2s var(--ease) 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:var(--fs-6);color:#c18532;opacity:0;pointer-events:none}
#ivyr-app .ivy-character[data-action="winking"]{animation:ivy-nod var(--t-slow) var(--ease) 2}
#ivyr-app .ivy-character[data-action="loving"]{animation:ivy-settle 1.5s var(--ease) 2}
#ivyr-app .ivy-character[data-action="tickled"]{animation:ivy-wiggle .35s var(--ease) 5}
#ivyr-app .ivy-character[data-action="breeze"] .ivy-plant{animation:ivy-wind .9s var(--ease) 4}
#ivyr-app .ivy-character[data-action="dance"]{animation:ivy-dance var(--t-slow) var(--ease) 5}
#ivyr-app .ivy-character[data-action="dance"] .ivy-plant{animation:ivy-wind var(--t-slow) var(--ease) 5}
#ivyr-app .ivy-character[data-action="cheer"] .ivy-sparkles,#ivyr-app .ivy-character[data-action="hearts"] .ivy-sparkles{animation:heart-float 1.3s var(--ease-out) 3}
#ivyr-app .ivy-character[data-action="cheer"]{animation:ivy-nod 1s var(--ease) 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 var(--s-4);padding:var(--s-4) var(--s-4);border:1px solid var(--line,#ddd);border-radius:var(--r-m);background:#fffdf7;font-size:var(--fs-2)}#ivyr-app .expression-library summary{cursor:pointer;font-weight:700;min-height:28px}#ivyr-app .expression-library p{line-height:1.7;margin:var(--s-3) 0}#ivyr-app .expression-controls{display:flex;flex-wrap:wrap;gap:var(--s-2);align-items:center}#ivyr-app .expression-controls select{max-width:100%;min-height:44px;font:inherit;padding:var(--s-2);border:1px solid #d6dacb;border-radius:var(--r-s);background:white}#ivyr-app .expression-controls .button{min-height:44px}
/* 増設鉢を付けたモデルは全体を小さく描くため、接地影の位置も合わせる。 */
#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%}
/* 表情は本体画面の一部として、同じ基準点・縮尺で動かす。 */
/* transform-originは要素自身が基準。本体の底はこの要素の高さの190.8%に相当する。 */
#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%}

/* ── いまの合図 ─────────────────────────────────────────────
   目的：ivyの状態から「何をしてほしいか」が、文字を読まなくても分かるようにする。
   約束：何も重なっていないときは、いま何もしなくてよい。
   断定はしない。文言は「〜かも」と、確かめ方をそえる。
   動きを減らす設定では、記号は出したまま動きだけ止める。
   ───────────────────────────────────────────────────────── */
/* シーンの外、すぐ下に置く。中に入れるとivyの顔と操作ボタンを覆ってしまう。 */
#ivyr-app .ivy-signal{margin:var(--s-3) 0 0;padding:var(--s-3) var(--s-4);border-radius:var(--r-m);
 background:#fffdf5;border:2px solid #dfe7d4;text-align:center;line-height:1.7}
#ivyr-app .ivy-signal__ask{margin:0;font-size:var(--fs-3);font-weight:700;color:#33402b}
#ivyr-app .ivy-signal__check{margin:var(--s-1) 0 0;font-size:var(--fs-2);color:#5a6b4e}
#ivyr-app .ivy-signal__more{margin:var(--s-1) 0 0;font-size:var(--fs-1);color:#5d6b52}
#ivyr-app .ivy-signal__more:empty,#ivyr-app .ivy-signal__ask:empty{display:none}

/* 合図の記号。白いチップに載せて、写真の背景でも読めるようにする。
   位置はivyの左上に固定。状態が変わっても同じ場所に出る。
   図はインラインSVG（グラデーションと陰影つき）。CSSの図形では質感が出ないため。 */
#ivyr-app .ivy-signal-badge{position:absolute;left:11%;top:34%;z-index:6;
 width:62px;height:62px;border-radius:var(--r-full);background:#fffdf5;
 border:3px solid #dfe7d4;box-shadow:var(--sh-2);
 display:none;place-items:center}
#ivyr-app .room-scene[data-signal="thirsty"] .ivy-signal-badge,
#ivyr-app .room-scene[data-signal="drowning"] .ivy-signal-badge,
#ivyr-app .room-scene[data-signal="hot"] .ivy-signal-badge,
#ivyr-app .room-scene[data-signal="cold"] .ivy-signal-badge,
#ivyr-app .room-scene[data-signal="dazzled"] .ivy-signal-badge,
#ivyr-app .room-scene[data-signal="lowBattery"] .ivy-signal-badge,
#ivyr-app .room-scene[data-signal="charging"] .ivy-signal-badge,
#ivyr-app .room-scene[data-signal="sipping"] .ivy-signal-badge{display:grid}
#ivyr-app .ivy-signal-icon{grid-area:1/1;display:none;width:46px;height:46px}
#ivyr-app [data-signal="thirsty"]   .ivy-signal-icon[data-for="thirsty"],
#ivyr-app [data-signal="drowning"]  .ivy-signal-icon[data-for="drowning"],
#ivyr-app [data-signal="hot"]       .ivy-signal-icon[data-for="hot"],
#ivyr-app [data-signal="cold"]      .ivy-signal-icon[data-for="cold"],
#ivyr-app [data-signal="dazzled"]   .ivy-signal-icon[data-for="dazzled"],
#ivyr-app [data-signal="lowBattery"].ivy-signal-icon[data-for="lowBattery"],
#ivyr-app [data-signal="lowBattery"] .ivy-signal-icon[data-for="lowBattery"],
#ivyr-app [data-signal="charging"]  .ivy-signal-icon[data-for="charging"],
#ivyr-app [data-signal="sipping"]   .ivy-signal-icon[data-for="sipping"]{display:block}

/* 記号ごとの、ささやかな動き。何が起きているかを示す分だけ。 */
#ivyr-app [data-signal="thirsty"] .ivy-signal-icon path:last-of-type{transform-origin:24px 8px}
#ivyr-app .ivy-signal-badge{animation:ivy-sig-pulse 2.8s var(--ease) infinite}
@keyframes ivy-sig-pulse{0%,100%{box-shadow:var(--sh-2)}50%{box-shadow:var(--sh-2)}}

/* 動きを減らす設定では、記号は残して動きだけ止める。 */
#ivyr-app.reduced-motion .ivy-signal-badge{animation:none!important}
@media (prefers-reduced-motion:reduce){#ivyr-app .ivy-signal-badge{animation:none!important}}

/* ── 快適度とセンサーの一覧 ───────────────────────────────
   左に快適度（円グラフとひとこと）、右に見立て（観測状態とタスク提案）。
   その下にセンサーの各項目。断定はしない。快適度は「目安の範囲に入っている
   項目の数」で、判定できない項目は「—」のまま残す。

   文字サイズは 12 / 14 / 16 / 22 の4段だけを使う。
   （最初は 10〜22px を7種類も使ってしまい、12px未満が15件あった。
     ほかのサイトで同じ指摘をしたのに、自分の実装で繰り返していた。）
   ───────────────────────────────────────────────────── */
#ivyr-app .ivy-panel{margin:var(--s-3) 0 0;padding:var(--s-4) var(--s-4);border-radius:var(--r-m);
 background:#fffdf5;border:2px solid #dfe7d4}
/* 左右は等分。最初は左を132px固定にしていたが、指定図では左右がほぼ同じ幅だった。
   minmax(0,…) にしておかないと、中身が長いときに列がはみ出す。 */
#ivyr-app .ivy-panel__top{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);
 gap:var(--s-6);align-items:stretch}
/* 2つの列は別の話をしている。間に細い線を引き、左右の始まりを同じ高さに揃える。 */
#ivyr-app .ivy-panel__top>.ivy-insight{padding-left:var(--s-6);border-left:1px solid #e3eada}

/* 左：快適度。円が主役なので、数字を最大にして見出しは案内役に留める。 */
/* 見出しは上端、円は中央、ひとことと件数は下端。
   autoマージンで寄せると見出しの余白が25pxという端数になり、
   ほかの見出し（8px）と書式が割れる。行で位置を決める。 */
#ivyr-app .ivy-comfort{text-align:center;min-width:0;display:grid;
 grid-template-rows:auto minmax(0,1fr) auto auto;justify-items:center;align-items:center}
#ivyr-app .ivy-comfort__title,#ivyr-app .ivy-insight__title{margin:0;font-weight:700;color:#2f3b28}
#ivyr-app .ivy-comfort__chart{position:relative;display:grid;place-items:center;margin:var(--s-4) auto 0;width:128px}
#ivyr-app .ivy-comfort__chart svg{width:128px;height:128px;display:block}
#ivyr-app .ivy-comfort__chart circle{transition:stroke-dasharray var(--t-slow) var(--ease)}
/* 数字と単位は別の大きさにする。「20」と「%」が同じ大きさだと数字が読み取りにくい。 */
#ivyr-app .ivy-comfort__score{position:absolute;display:flex;align-items:baseline;gap:1px;
 font-weight:700;color:#2f3b28;line-height:1;font-variant-numeric:tabular-nums}
#ivyr-app .ivy-comfort__num{font-size:var(--fs-7);letter-spacing:-.02em}
#ivyr-app .ivy-comfort__pct{font-size:var(--fs-4);font-weight:700;color:#5d6b52}
#ivyr-app .ivy-comfort__word{margin:var(--s-4) 0 0;font-size:var(--fs-2);font-weight:700;line-height:1.7;color:#2f3b28}
#ivyr-app .ivy-comfort__count{margin:var(--s-2) 0 0;font-size:var(--fs-1);line-height:1.7;color:#55634a}

/* 右：見立て。順番は「いまの状態 → いまできること → ほかの気づき」。
   以前は「タスク提案：暑いかも」と、言い換えを提案として太字で出していた。
   実際にしてほしいことは下の小さな行にあり、強さが逆になっていた。 */
#ivyr-app .ivy-insight{min-width:0}
#ivyr-app .ivy-insight__basis{margin:var(--s-1) 0 0;font-size:var(--fs-1);line-height:1.7;color:#55634a}
#ivyr-app .ivy-insight__state{display:flex;align-items:center;flex-wrap:wrap;
 gap:var(--s-2) var(--s-3);margin:var(--s-4) 0 0}
/* 状態は文字と色の両方で示す。色だけに頼らない。 */
#ivyr-app .ivy-insight__chip{display:inline-flex;align-items:center;border-radius:var(--r-full);
 padding:5px var(--s-3);font-size:var(--fs-2);font-weight:700;line-height:1.5;
 background:#e8f0df;color:#2c5720;box-shadow:inset 0 0 0 1px #c3d7b4}
#ivyr-app .ivy-insight__chip[data-tone="warn"]{background:#fbe9db;color:#8a4414;box-shadow:inset 0 0 0 1px #e8c4a4}
#ivyr-app .ivy-insight__evidence{font-size:var(--fs-2);line-height:1.7;color:#55634a;
 font-variant-numeric:tabular-nums}
#ivyr-app .ivy-insight__evidence:empty{display:none}
/* ここが読んでほしい見出し。続く一文は、その中身なので細く小さく置く。 */
#ivyr-app .ivy-insight__label{margin:var(--s-4) 0 0!important;font-size:var(--fs-4);
 font-weight:700;color:#2f3b28;line-height:1.5}
#ivyr-app .ivy-insight__check{margin:var(--s-1) 0 0;font-size:var(--fs-2);font-weight:400;
 line-height:1.8;color:#3f4f36}
#ivyr-app .ivy-insight__check:empty::before{content:'—';color:#55634a;font-weight:400}
#ivyr-app .ivy-insight__others{margin:var(--s-4) 0 0;padding:var(--s-3) 0 0;border-top:1px dashed #dde5d3}
/* 補足の見出し。主役の「いまできること」より一段下げる。 */
#ivyr-app .ivy-insight__others-label{display:block;font-size:var(--fs-2);font-weight:700;
 color:#45543c}
#ivyr-app .ivy-insight__more{display:flex;flex-wrap:wrap;gap:var(--s-2);margin:var(--s-2) 0 0}
#ivyr-app .ivy-insight__tag{display:inline-flex;border-radius:var(--r-full);padding:3px var(--s-3);
 font-size:var(--fs-1);line-height:1.6;color:#45543c;background:#eef3e7}
#ivyr-app .ivy-insight__hidden{display:none}

#ivyr-app .ivy-gauges{display:grid;gap:var(--s-4);margin:var(--s-4) 0 0;
 padding:var(--s-4) 0 0;border-top:1px solid #e6ece0}
#ivyr-app .ivy-gauge-group{min-width:0}
#ivyr-app .ivy-gauge-group__heading{display:flex;align-items:baseline;justify-content:space-between;
 flex-wrap:wrap;gap:var(--s-1) var(--s-3);margin:0 0 var(--s-2)}
#ivyr-app .ivy-gauge-group__title{margin:0;font-size:var(--fs-2);font-weight:700;color:#3f4f36}
#ivyr-app .ivy-watering-time{font-size:var(--fs-1);color:#5d6b52}
/* 同じ読み順で、広い画面は提案・水位・土の3列。スマホは提案を全幅にする。 */
#ivyr-app .ivy-watering-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-2)}
#ivyr-app .ivy-water-gauges,#ivyr-app .ivy-environment-gauges{display:grid;gap:var(--s-2);margin:0;padding:0;list-style:none}
#ivyr-app .ivy-water-gauges{grid-column:span 2;grid-template-columns:repeat(2,minmax(0,1fr))}
#ivyr-app .ivy-environment-gauges{grid-template-columns:repeat(3,minmax(0,1fr))}
#ivyr-app .ivy-gauge{display:grid;align-content:center;gap:var(--s-1);min-width:0;
 padding:var(--s-3) var(--s-2);border-radius:var(--r-m);background:#f4f7ef;text-align:center}
#ivyr-app .ivy-watering-advice{min-width:0;padding:var(--s-3);border:1px solid #c9d9b8;
 border-left:4px solid #66824d;border-radius:var(--r-m);background:#f2f6eb;text-align:left}
#ivyr-app .ivy-watering-advice__label{display:block;font-size:var(--fs-1);color:#526344}
#ivyr-app .ivy-watering-advice__title{display:block;margin:var(--s-1) 0 0;font-size:var(--fs-4);
 line-height:1.5;color:#2f3b28;overflow-wrap:anywhere}
#ivyr-app .ivy-watering-advice__reason{margin:var(--s-2) 0 0;font-size:var(--fs-2);line-height:1.7;color:#45543c}
#ivyr-app .ivy-watering-advice[data-tone="caution"]{background:#fff5e7;border-color:#e7cba2;border-left-color:#a86b24}
#ivyr-app .ivy-watering-advice[data-tone="unknown"]{background:#f2f3ef;border-color:#d9ddd2;border-left-color:#858e78}
#ivyr-app .ivy-gauge__label{font-size:var(--fs-1);color:#5d6b52}
#ivyr-app .ivy-gauge__value{font-size:var(--fs-4);font-weight:700;color:#2f3b28;line-height:1.3;font-variant-numeric:tabular-nums}
#ivyr-app .ivy-gauge__value small{font-size:var(--fs-1);font-weight:400;margin-left:var(--s-1);color:#5d6b52}
#ivyr-app .ivy-gauge__mark{font-size:var(--fs-1);line-height:1.5}
/* 状態は色だけに頼らず、文字（ちょうどよい／高め／低め）も添える。 */
#ivyr-app .ivy-gauge[data-status="in"]{background:#eaf4df}
#ivyr-app .ivy-gauge[data-status="in"] .ivy-gauge__mark{color:#3d6a2b}
#ivyr-app .ivy-gauge[data-status="high"]{background:#fceadd}
#ivyr-app .ivy-gauge[data-status="high"] .ivy-gauge__mark{color:#8f4a1a}
#ivyr-app .ivy-gauge[data-status="low"]{background:#e3eef6}
#ivyr-app .ivy-gauge[data-status="low"] .ivy-gauge__mark{color:#255a74}
#ivyr-app .ivy-gauge[data-status="unknown"]{background:#eeeeea}
#ivyr-app .ivy-gauge[data-status="unknown"] .ivy-gauge__mark{color:#6b6b63}
/* 注記は行長を抑えたうえで、箱ごと中央に置く。
   max-width だけだと箱が左に寄り、text-align:center でも中央に見えない
   （実測：幅504pxの箱が左端から18px、右に350px余っていた）。 */
#ivyr-app .ivy-panel__note{max-width:34em;margin:10px auto 0;
 font-size:var(--fs-1);line-height:1.7;color:#5d6b52;text-align:center}

/* 狭い画面では上下に積む。 */
@media (max-width:640px){
 #ivyr-app .ivy-watering-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 #ivyr-app .ivy-watering-advice{grid-column:1/-1}
 #ivyr-app .ivy-environment-gauges{grid-template-columns:repeat(2,minmax(0,1fr))}
 #ivyr-app .ivy-environment-gauges>.ivy-gauge:last-child{grid-column:1/-1}
 #ivyr-app .ivy-panel{padding:var(--s-4)}
 #ivyr-app .ivy-panel__top{grid-template-columns:1fr;gap:var(--s-4)}
 #ivyr-app .ivy-panel__top>.ivy-insight{padding-left:0;border-left:0;
  border-top:1px solid #e3eada;padding-top:var(--s-4)}
 #ivyr-app .ivy-comfort__chart,#ivyr-app .ivy-comfort__chart svg{width:112px}
 #ivyr-app .ivy-comfort__chart svg{height:112px}
}
#ivyr-app.reduced-motion .ivy-comfort__chart circle{transition:none}
@media (prefers-reduced-motion:reduce){#ivyr-app .ivy-comfort__chart circle{transition:none}}

/* ── 見出しの余白を役割ごとに固定する（2026-09-30 監査）───────────
   同じサイズ・同じ太さの見出しなのに、上下の余白だけが違う箇所があった
   （例：29px/700 の h2 が mt12/mb16 と mt0/mb0 の2通り）。
   見出しがどこに属するか読み取りにくいので、役割ごとに1つに決める。
   サイズの違いは残す。区画の見出しと部品の見出しは役割が違うため。
   ───────────────────────────────────────────────────────── */
#ivyr-app :is(section,article) > :is(h2,h3){margin:0 0 var(--s-2)}
#ivyr-app :is([class*="card"],[class*="panel"],aside,.section-head) :is(h2,h3){margin:0 0 var(--s-2)}

/* 大きさは3段だけ。区画の見出し24px／囲みの中の見出し20px／
   ダッシュボードの項目名14px。17pxと29pxは使わない。
   個々の部品の指定は storybook.css 側でこの3段に合わせてある。 */
#ivyr-app :is(section,article) > h3{font-size:var(--fs-4)}
#ivyr-app .ivy-panel :is(h2,h3){font-size:var(--fs-4)}
/* Xへの共有。旧ダッシュボードと同じ「文面を渡して開く」方式なので、
   押すと投稿画面が開くだけで、ここからは投稿しない。 */
#ivyr-app .ivy-panel__share{margin-top:var(--s-4);padding-top:var(--s-4);border-top:1px solid var(--line);text-align:center}
#ivyr-app .ivy-share-x{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-3);min-height:44px;padding:var(--s-3) var(--s-5);border:1px solid #2a2d31;border-radius:var(--r-full);background:#16181c;color:#fff;font-size:var(--fs-2);font-weight:700;text-decoration:none}
#ivyr-app .ivy-share-x:hover{filter:brightness(1.25)}
#ivyr-app .ivy-share-x svg{width:18px;height:18px}
#ivyr-app .ivy-panel__share-note{max-width:34em;margin:var(--s-2) auto 0;font-size:var(--fs-1);line-height:1.7;color:var(--muted);text-align:center}
/* 成長日記の投稿フォーム（?ivy=post）。ログインせずに使えるので、
   いま何が起きたかが必ず文章で分かるようにしている。 */
#ivyr-app .ivy-post-form{max-width:34em;margin:0 auto;padding:var(--s-6);background:#fffefa;border:1px solid var(--line);border-radius:var(--r-l)}
#ivyr-app .ivy-post-form p{margin:0 0 var(--s-5)}
#ivyr-app .ivy-post-form label{display:block;font-size:var(--fs-2);font-weight:700;line-height:2}
#ivyr-app .ivy-post-form input[type=password],#ivyr-app .ivy-post-form input[type=date],#ivyr-app .ivy-post-form textarea{width:100%;padding:var(--s-3);border:1px solid #cdd7c5;border-radius:var(--r-xs);background:#fff;color:var(--ink);font:inherit;font-weight:400;min-height:44px}
#ivyr-app .ivy-post-form textarea{min-height:120px;line-height:1.8}
#ivyr-app .ivy-post-form input[type=file]{width:100%;padding:var(--s-3);border:1px dashed #cdd7c5;border-radius:var(--r-s);background:#fbfaf3;font-size:var(--fs-1);font-weight:400}
#ivyr-app .ivy-post-form .button{width:100%}
/* 選んだ写真の一覧（2026-10-07）。順番と説明をこの場で決める。
   スマホから片手で触るので、1枚を1行にして縮小画像と操作を横に並べる。 */
#ivyr-app .ivy-post-photos{margin:0 0 var(--s-5)}
#ivyr-app .ivy-post-form .ivy-post-photos p{margin:0}
#ivyr-app .ivy-post-photos-note{margin:var(--s-2) 0 0;font-size:var(--fs-1);color:var(--muted);font-weight:400;line-height:1.8}
#ivyr-app .ivy-post-photos-note:empty{display:none}
#ivyr-app .ivy-post-preview{list-style:none;margin:var(--s-3) 0 0;padding:0;display:grid;gap:var(--s-3)}
#ivyr-app .ivy-post-shot{display:grid;grid-template-columns:96px minmax(0,1fr);gap:var(--s-3);align-items:start;padding:var(--s-3);background:#fbfaf3;border:1px solid #dce3d2;border-radius:var(--r-s)}
#ivyr-app .ivy-post-shot-image{position:relative;aspect-ratio:1;border-radius:var(--r-s);overflow:hidden;background:#eceadd}
#ivyr-app .ivy-post-shot-image img{width:100%;height:100%;object-fit:cover;display:block}
/* 先頭が表紙になることは、並べ替えた結果として一目で分かる必要がある。 */
#ivyr-app .ivy-post-cover{position:absolute;left:0;bottom:0;padding:2px var(--s-2);background:var(--green);color:#fff;font-size:var(--fs-1);font-weight:700;border-radius:0 var(--r-s) 0 0}
#ivyr-app .ivy-post-shot-body{display:grid;gap:var(--s-2);min-width:0}
#ivyr-app .ivy-post-form .ivy-post-shot-name{margin:0;font-size:var(--fs-1);font-weight:400;color:var(--muted);overflow-wrap:anywhere}
#ivyr-app .ivy-post-form .ivy-post-shot-text{font-size:var(--fs-1);line-height:1.6}
#ivyr-app .ivy-post-form .ivy-post-shot-text input[type=text]{width:100%;margin-top:4px;padding:var(--s-2) var(--s-3);border:1px solid #cdd7c5;border-radius:var(--r-xs);background:#fff;color:var(--ink);font:inherit;font-weight:400;min-height:44px}
#ivyr-app .ivy-post-form .ivy-post-shot-tools{display:flex;flex-wrap:wrap;gap:var(--s-2);margin:0}
/* このフォームのボタンは既定で横幅いっぱい。操作の3つだけは1行に収める。
   指で押す対象なので、幅は詰めても高さ44pxは削らない。 */
#ivyr-app .ivy-post-form .ivy-post-shot-tools .button{width:auto;flex:1 1 auto;min-width:5.5em;min-height:44px;padding:var(--s-2) var(--s-3);font-size:var(--fs-1)}
#ivyr-app .ivy-post-form .ivy-post-shot-tools .button[disabled]{opacity:.4;cursor:default}
/* 入口のボタンに添える注記。ボタンと同じ行に置くので縦位置をそろえる。 */
#ivyr-app .diary-post-hint{align-self:center;font-size:var(--fs-1);color:var(--muted)}
#ivyr-app .ivy-post-hint,#ivyr-app .ivy-post-unlocked{font-size:var(--fs-1);color:var(--muted);line-height:1.8;font-weight:400}
#ivyr-app .ivy-post-note{max-width:34em;margin:0 auto var(--s-5);padding:var(--s-4);border-radius:var(--r-m);font-size:var(--fs-2);line-height:1.8}
#ivyr-app .ivy-post-note.is-good{background:#eaf2e3;border:1px solid #a9c293;color:#2f4a28}
#ivyr-app .ivy-post-note.is-bad{background:#fbeee4;border:1px solid #d6a97f;color:#7a4414}
/* 制作・運用元。読むじゃまにならないよう、フッターの最後に小さく置く。
   下線はつけたまま（色だけに頼らない）。 */
#ivyr-app .site-studio{margin:var(--s-3) 0 0;font-size:var(--fs-1);line-height:1.8;color:var(--muted)}
#ivyr-app .site-studio__link{color:var(--green);text-decoration:underline;text-underline-offset:3px}


/* ── プレイヤー登録と共有ページ（2026-10-01）─────────────────
   管理画面を遊び手に見せない方針なので、登録・名前の変更はここで行う。
   ───────────────────────────────────────────────────── */
#ivyr-app .ivy-join-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--s-5)}
#ivyr-app .ivy-join-card{padding:var(--s-5);background:#fffdf5;border:2px solid #dfe7d4;border-radius:var(--r-m)}
#ivyr-app .ivy-join-card h2{font-size:var(--fs-4);margin:0 0 var(--s-3)}
#ivyr-app .ivy-join-name{margin:0 0 var(--s-4);font-size:var(--fs-5);font-weight:700;color:#2f3b28}
#ivyr-app .ivy-join-form p{margin:0 0 var(--s-3)}
#ivyr-app .ivy-join-form label{font-size:var(--fs-2);font-weight:700;color:#2f3b28}
#ivyr-app .ivy-join-form label small{font-size:var(--fs-1);font-weight:400;color:#55634a;margin-left:var(--s-2)}
#ivyr-app .ivy-join-form input[type=text],#ivyr-app .ivy-join-form input[type=email],
#ivyr-app .ivy-join-form input[type=password],#ivyr-app .ivy-join-card input[type=text],
#ivyr-app .ivy-join-card input[type=password]{width:100%;min-height:44px;padding:var(--s-2) var(--s-3);
 border:1px solid #cdd7c5;border-radius:var(--r-xs);background:#fff;font-size:var(--fs-2);color:var(--ink)}
#ivyr-app .ivy-join-hint{font-size:var(--fs-1);color:#55634a;line-height:1.7}
#ivyr-app .ivy-join-links{margin-top:var(--s-4);font-size:var(--fs-2)}
#ivyr-app .ivy-join-links a{color:var(--green);text-decoration:underline;text-underline-offset:3px}
/* 機械よけの入力欄。画面にも読み上げにも出さない。 */
#ivyr-app .ivy-join-trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
#ivyr-app .ivy-flight-card img{width:100%;height:auto;border-radius:var(--r-m);display:block}
#ivyr-app .ivy-flight-facts{display:grid;grid-template-columns:max-content minmax(0,1fr);
 gap:var(--s-2) var(--s-5);margin:var(--s-5) 0;font-size:var(--fs-2)}
#ivyr-app .ivy-flight-facts dt{color:#55634a}
#ivyr-app .ivy-flight-facts dd{margin:0;font-weight:700;color:#2f3b28}

#ivyr-app .ivy-flight-account{margin:var(--s-4) 0 0;font-size:var(--fs-2);color:#3f4f36;line-height:1.8}
#ivyr-app .ivy-flight-account a{color:var(--green);text-decoration:underline;text-underline-offset:3px;font-weight:700}
#ivyr-app .ivy-flight-account small{display:block;font-size:var(--fs-1);color:#55634a;font-weight:400}

/* ── わたしの記録（?ivy=join）───────────────────────────────
   スクリーンショットは共有のために公開の場所へ置かれる。
   どこで見られるかと、どう取り下げるかを同じ画面に並べる。 */
#ivyr-app .ivy-mine{margin-top:var(--s-6)}
#ivyr-app .ivy-mine h2{font-size:var(--fs-4);margin:0 0 var(--s-2)}
#ivyr-app .ivy-mine-note,#ivyr-app .ivy-mine-empty{font-size:var(--fs-2);color:#55634a;line-height:1.8;margin:0 0 var(--s-4)}
/* パソコン3列・タブレット2列・スマートフォン1列。
   列が細くなるので、画像は上に回して横幅いっぱいに使う。 */
#ivyr-app .ivy-mine-list{list-style:none;margin:0;padding:0;display:grid;gap:var(--s-4);
 grid-template-columns:repeat(3,minmax(0,1fr))}
#ivyr-app .ivy-mine-item{display:flex;flex-direction:column;gap:var(--s-3);
 padding:var(--s-3);background:#fffdf5;border:2px solid #dfe7d4;border-radius:var(--r-m)}
#ivyr-app .ivy-mine-shot{display:block}
#ivyr-app .ivy-mine-shot img{width:100%;height:auto;display:block;border-radius:var(--r-s);
 aspect-ratio:2/1;object-fit:cover}
/* 残りの高さを本文が受け持ち、どのカードでもボタンの位置がそろう。 */
#ivyr-app .ivy-mine-body{display:flex;flex-direction:column;flex:1}
#ivyr-app .ivy-mine-links{margin-top:auto}
#ivyr-app .ivy-mine-shot.is-empty{display:grid;place-items:center;aspect-ratio:2/1;border-radius:var(--r-s);
 background:#eef1e8;font-size:var(--fs-1);color:#55634a}
#ivyr-app .ivy-mine-head{font-size:var(--fs-2);font-weight:700;color:#2f3b28;margin:0}
#ivyr-app .ivy-mine-score{margin:var(--s-1) 0 0;font-size:var(--fs-6);font-weight:700;color:#2f3b28;
 line-height:1.2;font-variant-numeric:tabular-nums}
#ivyr-app .ivy-mine-score small{font-size:var(--fs-2);font-weight:400;color:#55634a}
#ivyr-app .ivy-mine-meta{margin:var(--s-1) 0 0;font-size:var(--fs-1);color:#55634a}
#ivyr-app .ivy-mine-links{margin:var(--s-2) 0 0;font-size:var(--fs-2)}
#ivyr-app .ivy-mine-links a{color:var(--green);text-decoration:underline;text-underline-offset:3px;font-weight:700}
#ivyr-app .ivy-mine-forget{margin-top:var(--s-1)}
#ivyr-app .ivy-mine-forget .quiet-button{padding-left:0}
@media (max-width:1100px){
 #ivyr-app .ivy-mine-list{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:700px){
 #ivyr-app .ivy-mine-list{grid-template-columns:minmax(0,1fr)}
}
#ivyr-app .ivy-mine-post{display:flex;align-items:flex-start;flex-direction:column;gap:var(--s-2);margin:var(--s-3) 0 0}
#ivyr-app .ivy-mine-post .button{width:100%}
#ivyr-app .ivy-mine-post .button{margin:0}
#ivyr-app .ivy-share-note{font-size:var(--fs-1);color:#55634a;line-height:1.7}
#ivyr-app .ivy-share-note:empty{display:none}

#ivyr-app .ivy-flight-facts + .ivy-mine-post .button{width:auto}
/* 記録一覧のXボタンは、お部屋の共有ボタンと同じ形にそろえる。
   button要素なので、font-family が引き継がれるよう明示する。 */
#ivyr-app button.ivy-share-x{font-family:inherit;cursor:pointer;width:100%}
#ivyr-app button.ivy-share-x:disabled{opacity:.6;cursor:default}
#ivyr-app .ivy-share-howto{margin:0 0 var(--s-4);padding:var(--s-3) var(--s-4);
 background:#f4f7ef;border-radius:var(--r-s);font-size:var(--fs-1);line-height:1.8;color:#45543c}
#ivyr-app .ivy-share-howto strong{font-weight:700;color:#2f3b28}
#ivyr-app .ivy-mine-post .ivy-share-x{width:100%}
#ivyr-app .ivy-flight-facts ~ .ivy-mine-post .ivy-share-x{width:auto}

/* 保存データの画面で、区画の見出しが24pxと20pxに割れていた（2026-10-01 監査 第4波）。
   囲みの中の見出しは20pxという既存の決めごとにそろえる。 */
#ivyr-app #observation-evidence-title{font-size:var(--fs-4);margin:0 0 var(--s-2)}
#ivyr-app .learning-note > div > h2{margin:0 0 var(--s-2)}
#ivyr-app .ivy-join-remember label{font-size:var(--fs-1);font-weight:400;color:#45543c;display:flex;align-items:center;gap:var(--s-2)}
#ivyr-app .ivy-join-remember input{width:17px;height:17px;accent-color:var(--green)}
#ivyr-app .ivy-join-reset{margin-top:var(--s-4);border-top:1px solid #e3eada;padding-top:var(--s-3)}
#ivyr-app .ivy-join-reset summary{cursor:pointer;font-size:var(--fs-2);color:var(--green);font-weight:700;min-height:44px;display:flex;align-items:center}
#ivyr-app .ivy-join-reset .ivy-join-form{margin-top:var(--s-3)}
/* 水の吸い上げ（?ivy=data）。土の湿りより信頼できる指標なので、独立した区画で出す。 */
#ivyr-app .ivy-uptake{container:ivy-uptake / inline-size;margin:0 0 var(--s-5);padding:var(--s-5);background:#fffdf5;border:2px solid #dfe7d4;border-radius:var(--r-m)}
#ivyr-app .ivy-uptake h2{font-size:var(--fs-4);margin:0 0 var(--s-2)}
#ivyr-app .ivy-uptake-lead{font-size:var(--fs-2);color:#55634a;line-height:1.8;margin:0 0 var(--s-4)}
#ivyr-app .ivy-uptake-facts{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:var(--s-2) var(--s-5);margin:0}
#ivyr-app .ivy-uptake-facts dt{font-size:var(--fs-2);color:#55634a}
#ivyr-app .ivy-uptake-facts dd{margin:0;font-size:var(--fs-4);font-weight:700;color:#2f3b28;font-variant-numeric:tabular-nums}
#ivyr-app .ivy-uptake-facts dd small{font-size:var(--fs-1);font-weight:400;color:#55634a}
#ivyr-app .ivy-uptake-note{margin:var(--s-4) 0 0;padding:var(--s-3) var(--s-4);background:#f4f7ef;border-radius:var(--r-s);font-size:var(--fs-2);line-height:1.8;color:#45543c}
@media (max-width:640px){#ivyr-app .ivy-uptake-facts{grid-template-columns:1fr;gap:var(--s-1)}}
/* 区画の実幅を基準に、読める幅が確保できる場合だけ2カラムにする。 */
#ivyr-app .ivy-uptake-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-5);gap:clamp(20px,3cqi,36px);align-items:start}
#ivyr-app .ivy-uptake-main{min-width:0;container:ivy-uptake-main / inline-size}
#ivyr-app .ivy-section{box-sizing:border-box;width:100%;max-width:24rem;min-width:0;justify-self:center;margin:0;padding:var(--s-3);background:#fbfaf4;border:1px solid #e3eada;border-radius:var(--r-s)}
#ivyr-app .ivy-section svg{width:100%;height:auto;display:block}
#ivyr-app .ivy-section figcaption{margin-top:var(--s-2);font-size:var(--fs-1);line-height:1.8;color:#55634a}
#ivyr-app .ivy-section figcaption strong{color:#2f3b28}
#ivyr-app .ivy-section-unknown{background:repeating-linear-gradient(45deg,#e8e5dc 0 3px,#b9b2a0 3px 5px);
 padding:0 4px;border-radius:3px;color:#3b3728}
@container ivy-uptake (min-width:48rem){
 #ivyr-app .ivy-uptake-grid{grid-template-columns:minmax(0,1fr) clamp(18rem,34cqi,24rem)}
 #ivyr-app .ivy-section{max-width:none}
}
@container ivy-uptake-main (max-width:30rem){
 #ivyr-app .ivy-uptake-facts{grid-template-columns:minmax(0,1fr);gap:var(--s-1)}
 #ivyr-app .ivy-uptake-facts dd+dt{margin-top:var(--s-3)}
}
