/* ============================================================
   KanAU Planet · typography / surface tokens（C10 visual refinement）
   font family は既存の2つだけを使う：
     display = Georgia 系 serif（見出し・event title）
     ui      = var(--kanau-font-body)（body / button / metadata / nav）
   component ごとに font を書かず、必ずここの token を参照する。
   ============================================================ */
/* dialog（detail / profile / cabin / form）は body 直下に開くので、token は :root に置く。
   .planet-view に置くと dialog 内で var() が解決できず font 指定ごと落ちる。 */
:root {
 --planet-serif:Georgia,'Times New Roman','Hiragino Mincho ProN',serif;
 --planet-sans:var(--kanau-font-body);

 /* display / heading（serif のみ） */
 --planet-t-display:400 clamp(30px,2.5vw,36px)/1.18 var(--planet-serif);
 --planet-t-section:400 22px/1.3 var(--planet-serif);
 --planet-t-card:400 18px/1.32 var(--planet-serif);
 --planet-t-card-sm:400 15px/1.35 var(--planet-serif);

 /* UI / body / metadata（sans のみ） */
 --planet-t-lead:400 13px/1.7 var(--planet-sans);
 --planet-t-body:400 12.5px/1.65 var(--planet-sans);
 --planet-t-meta:500 11.5px/1.5 var(--planet-sans);
 --planet-t-micro:500 10.5px/1.5 var(--planet-sans);
 --planet-t-button:600 12px/1.2 var(--planet-sans);
 --planet-t-eyebrow:600 10px/1.4 var(--planet-sans);
 --planet-eyebrow-spacing:.15em;

 /* surface / colour */
 --planet-ink:#33503c;
 --planet-ink-soft:#5f7358;
 --planet-ink-muted:#84907a;
 --planet-line:#dde3d0;
 --planet-line-strong:#c6d3b8;
 --planet-surface:#fffdf5;
 --planet-surface-raised:#fffefa;
 --planet-surface-sunken:#f6f3e6;
 --planet-sage:#6f8666;
 --planet-sage-deep:#3d5b41;
 --planet-ember:#d8a94a;
 --planet-ember-deep:#a9762c;
 --planet-ember-soft:#fdf4e2;
 --planet-shadow-card:0 1px 2px #5f6d4a12,0 8px 22px #5f6d4a0f;
 --planet-shadow-lift:0 2px 4px #5f6d4a14,0 14px 32px #5f6d4a1f;
 --planet-ease:cubic-bezier(.2,.7,.3,1);
 --planet-speed:180ms;
}
.planet-view { color:#486045; }
.planet-back { border:0;background:transparent;padding:12px 0;color:#5d7553;min-height:44px;font:var(--planet-t-button);letter-spacing:.01em; }
.planet-back:hover { color:var(--planet-sage-deep); }
/* §3: 左 map 43-46% / 右 情報 54-57%。map は縮んでも消さない。 */
.planet-layout { display:grid;grid-template-columns:minmax(360px,44fr) minmax(0,56fr);gap:40px;align-items:start; }
.planet-landscape { position:sticky;top:110px;align-self:start; }
.planet-welcome { padding:24px 24px 0; }
.planet-welcome h2 { white-space:pre-line;font:var(--planet-t-display);margin:12px 0;color:#38583f;letter-spacing:-.015em; }
.planet-welcome p:last-child { font:var(--planet-t-body);color:#7a876d; }
.planet-welcome .eyebrow { font:var(--planet-t-eyebrow);letter-spacing:var(--planet-eyebrow-spacing);text-transform:uppercase;color:var(--planet-ink-muted);margin:0; }
.forest-art { position:relative;width:100%; }
.forest-art>svg { display:block;width:100%;height:auto; }
.campfire-node { position:absolute;transform:translate(-50%,-50%);width:44px;height:44px;border-radius:50%;border:1px solid #d5ba80;background:#fff2cb;color:#a47f44;box-shadow:0 0 24px #ecd19799;font-size:24px; }
.campfire-label { position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);padding:8px 12px;background:#fffdf6;border:1px solid #dce1ce;border-radius:10px;color:#526649;font-size:11px;white-space:nowrap;opacity:0;pointer-events:none; }
.campfire-node:hover .campfire-label,.campfire-node:focus-visible .campfire-label { opacity:1; }
.planet-panel { padding:20px 0; }
.planet-panel h1 { font:var(--planet-t-display);margin:0 0 10px;letter-spacing:-.015em;color:var(--planet-ink); }
.planet-panel h2 { font:var(--planet-t-section);margin:30px 0 14px;color:var(--planet-ink); }
.planet-online { font:var(--planet-t-meta);color:#71855e; }
.planet-demo { font:var(--planet-t-micro);color:var(--planet-ink-muted); }
.planet-actions { display:flex;flex-wrap:wrap;gap:8px;margin:20px 0; }
.planet-actions button,.planet-primary { border:1px solid #c9d5bc;border-radius:99px;padding:9px 12px;min-height:44px;background:#fdfbf1;color:#617852;font-size:11px; }
.planet-primary { background:#72866a;color:#fffef7;white-space:nowrap; }
.planet-primary:disabled { background:#e3ead9;color:#6d7f62; }
.planet-fire-card,.planet-chat-card { display:grid;grid-template-columns:62px minmax(0,1fr) auto;align-items:center;gap:12px;padding:16px 12px;margin:0 0 12px;background:#fffdf5;border:1px solid #dde3d0;border-radius:18px; }
.planet-panel h3 { font:var(--planet-t-card);margin:6px 0;color:var(--planet-ink); }
.planet-panel article p { font:var(--planet-t-body);margin:8px 0;color:#7b876d; }
.planet-panel small { font:var(--planet-t-micro);color:#7d896e; }
.campfire-image { display:grid;place-items:center;min-height:76px;border-radius:40px 40px 14px 14px;background:radial-gradient(ellipse at 50% 70%,#ffe5a9,#e7edd7 60%,#b2c6a2);font-size:30px;color:#b28b50; }
.student-avatar { width:48px;height:48px;display:grid;place-items:center;border-radius:50%;background:#e7e0ec;color:#806a86;font:var(--planet-t-card);flex:none; }
.planet-upcoming { padding:0 16px 16px;border:1px solid #d4dfc6;border-radius:16px; }
.planet-upcoming p,.planet-feedback { font:var(--planet-t-body);color:#748766; }
@media(max-width:900px) { .planet-layout { grid-template-columns:1fr;gap:8px; } .planet-landscape { position:relative;top:auto; } .forest-art { max-width:650px;margin:auto; } .planet-welcome h2 { font-size:30px; } }
@media(max-width:400px) { .planet-fire-card,.planet-chat-card { grid-template-columns:42px minmax(0,1fr);gap:10px; } .planet-primary { grid-column:2;justify-self:start; } .campfire-image { min-height:60px; } .planet-welcome { padding:12px 0 0; } .student-avatar { width:40px;height:40px; } }

.campfire-node svg { width:30px;height:30px;display:block;margin:auto; }
.campfire-image svg { width:58px;height:68px; }
.planet-fire-card,.planet-upcoming { scroll-margin-top:140px; }
#planetIgnite { background:#687f5e;color:#fffdf6;border-color:#687f5e; }
.planet-form-dialog { width:min(460px,calc(100vw - 24px));max-height:calc(100dvh - 32px);overflow:auto;border:1px solid #cfdac2;border-radius:22px;padding:24px;background:#fffdf5;color:#47613e;box-shadow:0 20px 70px #465a3b30; }
.planet-form-dialog::backdrop { background:#39483255; }
.planet-form-dialog h2 { font:400 26px/1.25 var(--planet-serif);margin:0 0 10px; }
.planet-form-dialog p { font-size:12px;line-height:1.6; }
.planet-form-dialog label { display:flex;flex-direction:column;gap:6px;margin:14px 0;font-size:12px; }
.planet-form-dialog input,.planet-form-dialog select,.planet-form-dialog textarea { width:100%;min-width:0;min-height:44px;border:1px solid #cdd8bf;border-radius:10px;background:#fffef9;padding:10px;font:inherit;font-size:14px;color:#48633f; }
.planet-form-dialog textarea { min-height:76px;resize:vertical; }
.planet-form-dialog [aria-invalid=true] { border-color:#a8695d; }
#planetFormError { color:#985c50; }
.planet-form-actions { display:flex;justify-content:flex-end;gap:12px;padding-top:8px; }
.planet-form-actions button { min-height:44px;padding:10px 20px;border:1px solid #c8d5bd;border-radius:99px; }
.planet-form-actions button[type=button] { background:transparent;color:#657951; }

.planet-fire-card small { display:block; }

/* C6: 学生同士の1:1 chat。cardからprofileを開き、そこから予約へ進む。 */
.planet-chat-card { grid-template-columns:minmax(0,1fr) auto;align-items:stretch;padding:0;overflow:hidden; }
.planet-chat-open { display:grid;grid-template-columns:48px minmax(0,1fr);gap:12px;align-items:center;width:100%;border:0;background:transparent;text-align:left;padding:16px 4px 16px 12px;color:inherit;border-radius:18px; }
.planet-chat-open:hover { background:#f6f2e3; }
.planet-chat-body { display:block;min-width:0; }
.planet-chat-body strong { display:block;font:var(--planet-t-card);color:var(--planet-sage-deep);margin-bottom:3px; }
.planet-chat-topic { display:block;font-size:12px;line-height:1.6;color:#7b876d;margin:6px 0; }
.planet-chat-interests { color:#8b9480; }
.planet-chat-more { color:#68805c;margin-top:6px; }
.planet-chat-card>.planet-primary { align-self:center;margin-right:12px; }
.planet-ignite { margin-top:26px;padding:18px 16px 20px;border:1px solid #d9e0cd;border-radius:18px;background:#fdfbf1; }
.planet-ignite h2 { margin:0 0 8px; }
.planet-ignite p { font-size:12px;line-height:1.7;color:#7b876d;margin:0 0 14px; }
.planet-upcoming h2 { margin-top:18px; }

.planet-profile-dialog { width:min(460px,calc(100vw - 24px));max-height:calc(100dvh - 32px);overflow:auto;border:1px solid #cfdac2;border-radius:22px;padding:24px;background:#fffdf5;color:#47613e;box-shadow:0 20px 70px #465a3b30;font-family:var(--kanau-font-body); }
.planet-profile-dialog::backdrop { background:#39483255; }
.planet-profile-head { display:grid;grid-template-columns:56px minmax(0,1fr);gap:14px;align-items:center; }
.planet-profile-head .student-avatar { width:56px;height:56px;font-size:23px; }
.planet-profile-identity h2 { font:400 25px/1.25 var(--planet-serif);margin:0; }
.planet-profile-university { font-size:12px;color:#6f8460;margin:5px 0 0; }
.planet-profile-org { font-size:11px;color:#88937b;margin:3px 0 0; }
.planet-profile-bio { font-size:13px;line-height:1.75;color:#5e7154;margin:16px 0 4px; }
.planet-profile-block { margin-top:16px; }
.planet-profile-block h3 { font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#8c9680;margin:0 0 8px;font-weight:600; }
.planet-chip-row { display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:0; }
.planet-chip-row li { font-size:11px;padding:5px 10px;border-radius:99px;background:#eff2e5;color:#5e7154; }
.planet-topic-list { list-style:none;margin:0;padding:0; }
.planet-topic-list li { font-size:12px;line-height:1.7;color:#5e7154;padding-left:14px;position:relative; }
.planet-topic-list li::before { content:'·';position:absolute;left:3px;color:#9aa78c; }
.planet-external-links { display:flex;flex-direction:column;gap:7px; }
/* 外部SNSはfeed化せず、控えめなoutline buttonに留める。 */
.planet-external-link { display:flex;align-items:center;gap:9px;min-height:42px;padding:9px 13px;border:1px solid #d6dfc9;border-radius:12px;background:transparent;color:#5e7154;font-size:12px;text-decoration:none; }
.planet-external-link:hover { border-color:#b6c6a4;background:#f6f4e8; }
.planet-external-mark { color:#96a487;font-size:13px; }
.planet-external-arrow { margin-left:auto;color:#9aa78c; }
.planet-profile-note { font-size:11px;color:#8b9480;margin:18px 0 0;line-height:1.6; }
.planet-profile-actions { display:flex;justify-content:flex-end;gap:10px;padding-top:14px;flex-wrap:wrap; }
.planet-profile-actions button { min-height:44px;padding:10px 18px;border:1px solid #c8d5bd;border-radius:99px;font:inherit;font-size:12px;cursor:pointer; }
.planet-profile-actions button[type=button]:not(.planet-primary) { background:transparent;color:#657951; }
@media(max-width:400px) {
 .planet-chat-card { grid-template-columns:minmax(0,1fr); }
 .planet-chat-card>.planet-primary { margin:0 12px 14px;justify-self:start; }
 .planet-chat-open { grid-template-columns:40px minmax(0,1fr);gap:10px; }
 .planet-profile-head { grid-template-columns:44px minmax(0,1fr); }
 .planet-profile-head .student-avatar { width:44px;height:44px;font-size:19px; }
}

/* ============================================================
   C7-2: campfire detail / My cabin / calendar booking / 火のゆらぎ
   ============================================================ */

/* 火はやさしく揺れるだけ。動かすのは opacity / transform に限る。 */
@media(prefers-reduced-motion:no-preference) {
 .campfire-node svg path:nth-of-type(2),.campfire-image svg path:nth-of-type(2) { transform-origin:50% 72%;animation:kanau-flame 3.4s ease-in-out infinite; }
 .campfire-node svg path:nth-of-type(3),.campfire-image svg path:nth-of-type(3) { transform-origin:50% 76%;animation:kanau-flame 2.6s ease-in-out infinite .4s; }
 .campfire-node { animation:kanau-ember 4.8s ease-in-out infinite; }
 .campfire-node:nth-of-type(2n) { animation-delay:1.1s; }
 .campfire-node:nth-of-type(3n) { animation-delay:2.3s; }
 @keyframes kanau-flame { 0%,100% { transform:scaleY(1) scaleX(1); } 40% { transform:scaleY(1.07) scaleX(.96); } 70% { transform:scaleY(.97) scaleX(1.03); } }
 @keyframes kanau-ember { 0%,100% { opacity:.88; } 50% { opacity:1; } }
}
.campfire-node { transition:transform 180ms ease; }
.campfire-node:hover,.campfire-node:focus-visible { transform:translate(-50%,-50%) scale(1.12); }

/* campfire card：本体がdetailを開くbutton、右のボタンがJoin / Cancel。 */
.planet-fire-card { grid-template-columns:minmax(0,1fr) auto;align-items:stretch;padding:0;overflow:hidden; }
.planet-fire-card[data-joined=true] { border-color:#c3ae72;background:#fdf8ea; }
.planet-fire-open { display:grid;grid-template-columns:62px minmax(0,1fr);gap:12px;align-items:center;width:100%;border:0;background:transparent;text-align:left;padding:16px 4px 16px 12px;color:inherit;border-radius:18px;cursor:pointer; }
.planet-fire-open:hover { background:#f6f2e3; }
.planet-fire-body { display:block;min-width:0; }
.planet-fire-body strong { display:block;font:var(--planet-t-card);color:var(--planet-sage-deep);margin:5px 0; }
.planet-fire-body p { font-size:12px;line-height:1.6;margin:6px 0;color:#7b876d; }
.planet-fire-more { color:#68805c;margin-top:6px; }
.planet-fire-card>button:last-child { align-self:center;margin-right:12px; }
.planet-cancel { border:1px solid #d8c6a4;border-radius:99px;padding:9px 14px;min-height:44px;background:#fdf4e2;color:#8a6f3c;font-size:11px;white-space:nowrap;cursor:pointer; }
.planet-cancel:hover { background:#f8ecd6;border-color:#c9b184; }

/* detail drawer：ページ遷移せず、その場で開く。 */
.planet-detail-dialog { width:min(520px,calc(100vw - 24px));max-height:calc(100dvh - 32px);overflow:auto;border:1px solid #cfdac2;border-radius:22px;padding:24px;background:#fffdf5;color:#47613e;box-shadow:0 20px 70px #465a3b30;font-family:var(--kanau-font-body); }
.planet-detail-dialog::backdrop { background:#39483255; }
.planet-detail-head { display:grid;grid-template-columns:76px minmax(0,1fr);gap:14px;align-items:center; }
.planet-letter-head { display:grid;grid-template-columns:56px minmax(0,1fr);gap:14px;align-items:center; }
.planet-letter-head .student-avatar { width:56px;height:56px;font-size:22px; }
.planet-detail-art { min-height:76px;border-radius:18px 18px 12px 12px; }
.planet-detail-identity h2 { font:400 25px/1.25 var(--planet-serif);margin:0;color:#38583f; }
.planet-detail-time { font-size:12px;color:#6f8460;margin:6px 0 0; }
.planet-detail-copy,.planet-letter-body { font-size:13px;line-height:1.8;color:#5e7154;margin:16px 0 4px; }
.planet-detail-facts { display:flex;flex-wrap:wrap;gap:6px;margin-top:14px; }
.planet-detail-facts span { font-size:11px;padding:5px 10px;border-radius:99px;background:#eff2e5;color:#5e7154; }
.planet-detail-block { margin-top:18px; }
.planet-detail-block h3 { font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#8c9680;margin:0 0 9px;font-weight:600; }
.planet-guest-list { list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px; }
.planet-guest { display:grid;grid-template-columns:40px minmax(0,1fr);gap:11px;align-items:center; }
.planet-guest .student-avatar { width:40px;height:40px;font-size:16px; }
.planet-guest strong { display:block;font:var(--planet-t-card-sm);color:var(--planet-sage-deep); }
.planet-guest small { display:block;font-size:10px;color:#87927a;margin-top:2px; }
.planet-guest p { font-size:11.5px;line-height:1.6;color:#71805f;margin:4px 0 0; }
.planet-detail-note { font-size:11px;color:#8b9480;margin:18px 0 0;line-height:1.6; }
.planet-detail-actions { display:flex;justify-content:flex-end;gap:10px;padding-top:14px;flex-wrap:wrap; }
.planet-detail-actions button { min-height:44px;padding:10px 18px;border:1px solid #c8d5bd;border-radius:99px;font:inherit;font-size:12px;cursor:pointer; }
.planet-detail-actions button:not(.planet-primary):not(.planet-cancel) { background:transparent;color:#657951; }

/* My cabin */
.planet-cabin { margin-top:26px;padding:18px 16px 20px;border:1px solid #d9e0cd;border-radius:18px;background:#fdfbf1; }
.planet-cabin h2 { margin:0 0 8px; }
.planet-cabin-summary { font-size:11px;color:#88937b;margin:0 0 14px; }
.planet-cabin-title { font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#8c9680;margin:16px 0 8px;font-weight:600; }
.planet-cabin p { font-size:12px;line-height:1.7;color:#7b876d;margin:6px 0; }
.planet-letter { display:grid;grid-template-columns:40px minmax(0,1fr);gap:11px;align-items:center;width:100%;text-align:left;border:1px solid #e2e7d6;border-radius:14px;background:#fffdf7;padding:11px;margin:0 0 8px;color:inherit;cursor:pointer; }
.planet-letter:hover { border-color:#bccbab;background:#f8f5e8; }
.planet-letter[data-unread=true] { border-color:#d9c79a;background:#fdf7e8; }
.planet-letter[data-unread=true] strong::after { content:'';display:inline-block;width:6px;height:6px;margin-left:7px;border-radius:50%;background:#c2a75f;vertical-align:middle; }
.planet-letter .student-avatar { width:40px;height:40px;font-size:16px; }
.planet-letter-preview { display:block;min-width:0; }
.planet-letter-preview strong { display:block;font:var(--planet-t-card-sm);color:var(--planet-sage-deep); }
.planet-letter-preview small { display:block;font-size:10px;color:#8b9480;margin:3px 0 5px; }
.planet-letter-preview span { display:block;font-size:11.5px;line-height:1.55;color:#7b876d;overflow:hidden; }

/* 1:1 booking：calendar + time slots + duration */
.planet-scheduler { margin:14px 0 6px; }
.planet-scheduler-title { font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:#8c9680;margin:14px 0 8px;font-weight:600; }
.planet-day-row { display:flex;gap:7px;overflow-x:auto;padding-bottom:6px;scrollbar-width:thin; }
.planet-day { flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:1px;min-width:52px;min-height:62px;padding:8px 6px;border:1px solid #d6dfc9;border-radius:13px;background:#fffdf7;color:#5e7154;cursor:pointer; }
.planet-day span { font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:#93a084; }
.planet-day strong { font:600 18px/1.2 var(--planet-sans);font-variant-numeric:tabular-nums; }
.planet-day small { font-size:9px;color:#93a084; }
.planet-day[aria-pressed=true] { background:#6f8666;border-color:#6f8666;color:#fffdf6; }
.planet-day[aria-pressed=true] span,.planet-day[aria-pressed=true] small { color:#e6eddd; }
.planet-slot-grid { display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:7px; }
.planet-slot { min-height:42px;padding:9px 6px;border:1px solid #d6dfc9;border-radius:11px;background:#fffdf7;color:#5e7154;font-size:11.5px;cursor:pointer; }
.planet-slot:hover { border-color:#b6c6a4;background:#f6f4e8; }
.planet-slot[aria-pressed=true] { background:#6f8666;border-color:#6f8666;color:#fffdf6; }
.planet-duration-row { display:flex;flex-wrap:wrap;gap:7px; }
.planet-duration { min-height:40px;padding:8px 14px;border:1px solid #d6dfc9;border-radius:99px;background:#fffdf7;color:#5e7154;font-size:11.5px;cursor:pointer; }
.planet-duration[aria-pressed=true] { background:#6f8666;border-color:#6f8666;color:#fffdf6; }
.planet-scheduler-summary { font-size:12px;color:#5e7154;margin:14px 0 0;padding:10px 12px;border-radius:12px;background:#eff2e5; }
/* 生の入力は検証と自動化のために残し、視覚上は畳む。 */
.planet-form-dialog .planet-raw-field { position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;margin:-1px; }

@media(max-width:480px) {
 .planet-detail-head { grid-template-columns:60px minmax(0,1fr); }
 .planet-detail-art { min-height:60px; }
 .planet-fire-card { grid-template-columns:minmax(0,1fr); }
 .planet-fire-card>button:last-child { margin:0 12px 14px;justify-self:start; }
 .planet-fire-open { grid-template-columns:48px minmax(0,1fr);gap:10px; }
 .planet-slot-grid { grid-template-columns:repeat(auto-fill,minmax(92px,1fr)); }
}

/* card内のmetaは1行ずつ読ませる。 */
.planet-chat-card small,.planet-fire-card small,.planet-letter small { display:block; }
.planet-cabin,.planet-ignite { scroll-margin-top:140px; }

/* ============================================================
   C8-A: 森のmap上の小木屋 / 1:1の待ち合わせ場所 / いま居る人のあかり
   ============================================================ */

/* 小木屋はfire nodeと同じ世界観で、少しだけwarmに灯る。 */
.planet-cabin-node { position:absolute;transform:translate(-50%,-50%);width:66px;height:60px;padding:0;border:0;background:transparent;cursor:pointer;filter:drop-shadow(0 6px 14px #6b5c3d1f); }
.planet-cabin-node svg { width:100%;height:100%;display:block; }
.planet-cabin-node::before { content:'';position:absolute;left:50%;top:62%;width:86px;height:56px;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(ellipse,#ffe7ac7a,#ffe7ac00 70%);pointer-events:none; }
.planet-cabin-node .campfire-label { bottom:calc(100% + 2px); }
.planet-cabin-node:hover .campfire-label,.planet-cabin-node:focus-visible .campfire-label { opacity:1; }
.planet-cabin-node .cabin-mail path:first-child { fill:#9db08d; }
/* 未読があるときだけ、窓とmailboxに小さなあかりを足す。 */
.planet-cabin-node[data-unread=true] .cabin-window { fill:#ffd782; }
.planet-cabin-node[data-unread=true]::after { content:'';position:absolute;right:-1px;top:34%;width:11px;height:11px;border-radius:50%;background:#d8a94a;box-shadow:0 0 0 3px #fffdf5,0 0 14px #e6be6c; }

.planet-meeting-spot { position:absolute;transform:translate(-50%,-50%);width:54px;height:40px;display:grid;place-items:center;pointer-events:none; }
.planet-meeting-spot svg { width:44px;height:32px; }
.planet-spot-label { position:absolute;top:calc(100% - 2px);left:50%;transform:translateX(-50%);font-size:9px;letter-spacing:.06em;color:#93a084;white-space:nowrap; }
.planet-light { position:absolute;transform:translate(-50%,-50%);width:22px;height:22px;display:grid;place-items:center;border-radius:50%;background:#fff6dd;border:1px solid #ead9ae;color:#98854f;font:600 10px/1 var(--planet-sans);box-shadow:0 0 12px #f0dcae99;pointer-events:none; }

@media(prefers-reduced-motion:no-preference) {
 .planet-cabin-node[data-unread=true]::after { animation:kanau-ember 3.2s ease-in-out infinite; }
 .planet-light { animation:kanau-ember 5.6s ease-in-out infinite; }
 .planet-light:nth-of-type(2n) { animation-delay:1.4s; }
 .planet-light:nth-of-type(3n) { animation-delay:2.7s; }
}
.planet-cabin-node { transition:transform 180ms ease; }
.planet-cabin-node:hover,.planet-cabin-node:focus-visible { transform:translate(-50%,-50%) scale(1.07); }

/* ── 小木屋のdrawer。inbox・letter全文・返信まで1枚の中で完結する。 ── */
.planet-cabin-dialog { width:min(560px,calc(100vw - 24px));max-height:calc(100dvh - 32px);overflow:auto;border:1px solid #cfdac2;border-radius:22px;padding:24px;background:#fffdf5;color:#47613e;box-shadow:0 20px 70px #465a3b30;font-family:var(--kanau-font-body); }
.planet-cabin-dialog::backdrop { background:#39483255; }
.planet-cabin-head { display:grid;grid-template-columns:72px minmax(0,1fr);gap:14px;align-items:center; }
.planet-cabin-art { display:grid;place-items:center;min-height:68px;border-radius:16px;background:radial-gradient(ellipse at 50% 76%,#ffeec4,#e9efdb 62%,#cfdcc4); }
.planet-cabin-art svg { width:58px;height:54px; }
.planet-cabin-block { margin-top:20px; }
.planet-cabin-block h3 { font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#8c9680;margin:0 0 9px;font-weight:600; }
.planet-cabin-empty { font-size:12px;line-height:1.7;color:#8b9480;margin:6px 0; }
.planet-cabin-list { list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px; }
.planet-cabin-row { display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid #e2e7d6;border-radius:13px;background:#fffdf7; }
.planet-cabin-row strong { font:var(--planet-t-card-sm);color:var(--planet-sage-deep); }
.planet-cabin-row small { font-size:10.5px;color:#8b9480; }
.planet-cabin-row span { font-size:11.5px;line-height:1.6;color:#7b876d; }
.planet-cabin-row[data-unread=true] { border-color:#d9c79a;background:#fdf7e8; }
.planet-cabin-inline { display:flex;flex-direction:column;gap:2px;align-items:flex-start;width:100%;border:0;background:transparent;padding:0;text-align:left;color:inherit;font:inherit;cursor:pointer; }
.planet-cabin-thread { padding:0; }
.planet-cabin-thread .planet-cabin-inline { padding:10px 12px; }

/* envelope card：未読はsealで示す。 */
.planet-envelope { display:grid;grid-template-columns:40px minmax(0,1fr) 14px;gap:11px;align-items:center;width:100%;text-align:left;border:1px solid #e2e7d6;border-radius:14px;background:#fffdf7;padding:11px;margin:0 0 8px;color:inherit;cursor:pointer;font:inherit; }
.planet-envelope:hover { border-color:#bccbab;background:#f8f5e8; }
.planet-envelope[data-unread=true] { border-color:#d9c79a;background:#fdf7e8; }
.planet-envelope-body { display:block;min-width:0; }
.planet-envelope-body strong { display:block;font:var(--planet-t-card-sm);color:var(--planet-sage-deep); }
.planet-envelope-body small { display:block;font-size:10px;color:#8b9480;margin:3px 0 5px; }
.planet-envelope-preview { display:block;font-size:11.5px;line-height:1.55;color:#7b876d;overflow:hidden; }
.planet-envelope-seal { width:10px;height:10px;border-radius:50%;background:transparent; }
.planet-envelope[data-unread=true] .planet-envelope-seal { background:#c2a75f;box-shadow:0 0 0 3px #f3e6c4; }
.planet-cabin-write { width:100%;min-height:44px;margin-top:4px;border:1px dashed #cfd9c0;border-radius:14px;background:transparent;color:#68805c;font:inherit;font-size:12px;cursor:pointer; }
.planet-cabin-write:hover { border-color:#b0c29d;background:#f8f5e8; }

.planet-cabin-back { min-height:40px;padding:0;border:0;background:transparent;color:#68805c;font:inherit;font-size:12px;cursor:pointer; }
.planet-cabin-letter .planet-letter-head { margin-top:4px; }
.planet-thread { list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px; }
.planet-thread-row { padding:10px 12px;border-radius:13px;background:#f3f2e6; }
.planet-thread-row[data-direction=out] { background:#eaf0e2; }
.planet-thread-row small { font-size:10px;color:#8b9480; }
.planet-thread-row p { font-size:12px;line-height:1.65;color:#67785c;margin:5px 0 0; }
.planet-cabin-actions { display:flex;flex-wrap:wrap;gap:9px;margin-top:18px; }
.planet-cabin-actions button { min-height:44px;padding:10px 16px;border:1px solid #c8d5bd;border-radius:99px;background:transparent;color:#657951;font:inherit;font-size:12px;cursor:pointer; }
.planet-cabin-actions .planet-primary { background:#72866a;color:#fffef7;border-color:#72866a; }

.planet-composer { margin-top:16px;padding:14px;border:1px solid #dfe5d2;border-radius:16px;background:#fdfbf1; }
.planet-composer label { display:flex;flex-direction:column;gap:6px;margin:0 0 10px;font-size:11px;color:#7e8b71; }
.planet-composer textarea,.planet-composer input,.planet-composer select { width:100%;min-width:0;min-height:44px;border:1px solid #cdd8bf;border-radius:10px;background:#fffef9;padding:10px;font:inherit;font-size:13px;color:#48633f; }
.planet-composer textarea { min-height:84px;resize:vertical; }
.planet-composer-actions { display:flex;justify-content:flex-end; }
.planet-composer-error { font-size:11.5px;color:#985c50;margin:0 0 8px; }
.planet-cabin-me { display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px;border:1px solid #e2e7d6;border-radius:14px;background:#fffdf7; }
.planet-cabin-me strong { display:block;font:var(--planet-t-card-sm);color:var(--planet-sage-deep); }
.planet-cabin-me small { display:block;font-size:10.5px;color:#8b9480;margin-top:2px; }
.planet-cabin-profile-link { font-size:11.5px;color:#68805c;text-decoration:none;white-space:nowrap; }
.planet-cabin-profile-link:hover { text-decoration:underline; }
.planet-cabin-close { width:100%;min-height:44px;margin-top:20px;border:1px solid #c8d5bd;border-radius:99px;background:transparent;color:#657951;font:inherit;font-size:12px;cursor:pointer; }

@media(max-width:480px) {
 .planet-cabin-head { grid-template-columns:56px minmax(0,1fr); }
 .planet-cabin-art { min-height:54px; }
 .planet-cabin-art svg { width:46px;height:42px; }
 .planet-cabin-node { width:54px;height:50px; }
 .planet-cabin-me { grid-template-columns:40px minmax(0,1fr);row-gap:8px; }
 .planet-cabin-profile-link { grid-column:1/-1; }
 .planet-light { width:18px;height:18px;font-size:9px; }
}

/* ---- C9-A: data source mode と Community profile / reservation の表示 ---- */
.planet-source-badge {
    align-self: flex-start;
    border: 1px solid rgba(120, 138, 110, .45);
    border-radius: 999px;
    color: #5f6f57;
    font-size: 11px;
    letter-spacing: .08em;
    margin: 0 0 6px;
    padding: 3px 10px;
    text-transform: uppercase;
}
.planet-source-badge[data-mode="real"] { border-color: rgba(95, 164, 119, .6); color: #3f7a55; }
.planet-demo-tag {
    color: #8a7f63;
    font-size: 12px;
    margin: 0 0 8px;
}
.planet-gate,
.planet-section-error,
.planet-my-profile {
    background: rgba(255, 253, 247, .72);
    border: 1px solid rgba(184, 202, 178, .6);
    border-radius: 16px;
    display: grid;
    gap: 10px;
    margin-bottom: 16px;
    padding: 16px;
}
.planet-gate h2,
.planet-my-profile h2 { font-size: 16px; margin: 0; }
.planet-gate p,
.planet-section-error p,
.planet-my-profile p { font-size: 13px; margin: 0; }
.planet-toggle-field {
    align-items: center;
    display: flex;
    flex-wrap: wrap;
    font-size: 13px;
    gap: 8px;
}
.planet-toggle-field .planet-field-hint { flex-basis: 100%; }
.planet-field-hint { color: #7d8a74; display: block; font-size: 11px; margin-top: 4px; }
.planet-reservation {
    border-top: 1px solid rgba(184, 202, 178, .5);
    display: grid;
    gap: 3px;
    padding: 12px 0;
}
.planet-reservation strong { font-size: 15px; }
.planet-reservation small { color: #6f7f70; font-size: 12px; }
.planet-reservation-status { text-transform: capitalize; }
.planet-reservation-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.planet-reservation-actions button { flex: 1 1 auto; min-width: 0; }
.planet-slot-state { color: #6f7f70; font-size: 13px; margin: 4px 0 0; }
.planet-slot-state[hidden] { display: none; }
.planet-slot-retry { justify-self: start; margin-top: 6px; }
.planet-slot-retry[hidden] { display: none; }
.planet-scheduler[data-loading="true"] .planet-slot-grid { opacity: .5; }
.planet-avatar-image { object-fit: cover; }
.planet-onboarding-dialog { max-width: min(520px, calc(100vw - 32px)); }
.planet-onboarding-more { margin: 4px 0; }
.planet-onboarding-more-body { display: grid; gap: 12px; padding-top: 10px; }
.planet-onboarding-error { color: #a65035; font-size: 13px; margin: 0; }
.planet-onboarding-error:empty { display: none; }
.planet-onboarding-status { color: #3f7a55; font-size: 13px; margin: 0; }
.planet-onboarding-status:empty { display: none; }
.planet-onboarding-note { color: #6f7f70; font-size: 13px; margin: 0 0 6px; }

@media (max-width: 420px) {
    .planet-day-row { gap: 6px; }
    .planet-reservation-actions button { flex: 1 1 100%; }
}

/* ---- C9-B: availability / real campfire / ambient lights ---- */
.planet-availability-entry {
    background: rgba(255, 253, 247, .72);
    border: 1px solid rgba(184, 202, 178, .6);
    border-radius: 16px;
    display: grid;
    gap: 8px;
    margin: 0 0 14px;
    padding: 14px;
}
.planet-availability-entry p { font-size: 13px; margin: 0; }
.planet-availability-open { justify-self: start; }
.planet-availability-dialog { max-width: min(560px, calc(100vw - 32px)); }
.planet-availability-group { display: grid; gap: 8px; margin-bottom: 14px; }
.planet-availability-group h3 { font-size: 14px; margin: 0; }
.planet-availability-rule {
    align-items: baseline;
    border: 1px solid rgba(184, 202, 178, .55);
    border-radius: 12px;
    display: flex;
    flex-wrap: wrap;
    gap: 6px 12px;
    padding: 10px 12px;
}
.planet-availability-rule[data-kind="blackout"] { background: rgba(247, 199, 181, .22); }
.planet-availability-rule small { color: #6f7f70; font-size: 12px; }
.planet-availability-actions { display: flex; gap: 8px; margin-left: auto; }
.planet-availability-form { display: grid; gap: 12px; }
.planet-availability-form[data-kind="recurring"] .planet-weekday-row { display: flex; }
.planet-weekday-row { flex-wrap: wrap; gap: 6px; }
.planet-weekday-row .planet-day { min-width: 0; padding: 8px 10px; }
.planet-weekday-row[hidden] { display: none; }
.planet-availability-form label[hidden] { display: none; }
.planet-forest-empty {
    color: #6f7f70;
    font-size: 13px;
    left: 50%;
    position: absolute;
    text-align: center;
    top: 46%;
    transform: translate(-50%, -50%);
}
/* presence が無いので、real mode の灯りは装飾に留める（誰かが online だと名乗らない）。 */
.planet-light[data-ambient="true"] {
    opacity: .45;
    pointer-events: none;
}
.planet-fire-card[data-status="full"] .planet-primary { opacity: .6; }

@media (max-width: 420px) {
    .planet-availability-rule { flex-direction: column; }
    .planet-availability-actions { margin-left: 0; width: 100%; }
    .planet-availability-actions button { flex: 1 1 auto; }
}

/* ---- C9-C: Realtime の軽量通知 ---- */
.planet-toast {
    background: rgba(45, 58, 42, .94);
    border-radius: 999px;
    bottom: 24px;
    color: #fdfbf7;
    font-size: 13px;
    font-weight: 600;
    left: 50%;
    margin: 0;
    max-width: min(420px, calc(100vw - 32px));
    padding: 10px 18px;
    position: fixed;
    text-align: center;
    transform: translateX(-50%);
    z-index: 120;
}
.planet-toast[hidden] { display: none; }
.planet-live-state {
    color: #8a7f63;
    font-size: 12px;
    margin: 0 0 6px;
}
.planet-live-state[hidden] { display: none; }
.planet-pending-badge {
    background: #5fa477;
    border-radius: 999px;
    color: #fff;
    display: inline-block;
    font-size: 11px;
    font-weight: 700;
    line-height: 1.6;
    margin-left: 8px;
    min-width: 20px;
    padding: 0 6px;
    text-align: center;
    vertical-align: middle;
}
.planet-fire-list { display: contents; }

@media (max-width: 420px) {
    .planet-toast { bottom: 16px; font-size: 12px; padding: 9px 14px; }
}

/* ============================================================
   C10 · KanAU Planet visual refinement
   backend / data contract は触らない。見た目と操作の手触りだけ。
   font は必ず .planet-view の token を参照する（§2）。
   ============================================================ */

/* ---- shared pieces ---------------------------------------------------- */
.planet-eyebrow { display:block;font:var(--planet-t-eyebrow);letter-spacing:var(--planet-eyebrow-spacing);text-transform:uppercase;color:var(--planet-ink-muted);margin:0 0 6px; }
.planet-chip { display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:var(--kanau-radius-pill);background:var(--planet-surface-sunken);color:var(--planet-ink-soft);font:var(--planet-t-micro);white-space:nowrap; }
.planet-chip[data-tone="category"] { background:#e8efdf;color:#4e6a4b; }
.planet-chip[data-tone="ember"] { background:var(--planet-ember-soft);color:var(--planet-ember-deep); }
.planet-chip[data-tone="sage"] { background:#e2ebda;color:#3f5d44; }
.planet-chip[data-tone="full"] { background:#efe9de;color:#87795f; }
.planet-chip[data-tone="mode"] { background:#eaf0ea;color:#55705a; }

/* ---- §6 Live tonight strip -------------------------------------------- */
/* 見出しは h2 にしない（右 panel の heading 構成は既存契約）。region label で読み上げる。 */
.planet-live-strip { display:grid;gap:10px;margin:16px 0 4px;padding:14px 16px;border:1px solid var(--planet-line);border-radius:var(--kanau-radius-card);background:linear-gradient(180deg,#fffefa,#fbf8ec);box-shadow:var(--planet-shadow-card); }
.planet-live-title { display:flex;align-items:baseline;gap:10px;margin:0;font:var(--planet-t-section);font-size:19px;color:var(--planet-ink); }
.planet-live-title::before { content:'';width:7px;height:7px;border-radius:50%;background:var(--planet-ember);box-shadow:0 0 0 3px #e8a5583d;flex:none;align-self:center; }
.planet-live-metrics { display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none; }
.planet-metric { display:flex;flex-direction:column;gap:1px;min-width:86px;padding:8px 12px;border:1px solid var(--planet-line);border-radius:14px;background:var(--planet-surface-raised); }
.planet-metric b { font:600 19px/1.1 var(--planet-sans);font-variant-numeric:tabular-nums;color:var(--planet-sage-deep); }
.planet-metric span { font:var(--planet-t-micro);color:var(--planet-ink-muted); }
.planet-live-strip .planet-online,.planet-live-strip .planet-demo { margin:0; }

/* ---- §7 primary navigation ------------------------------------------- */
.planet-actions { display:flex;flex-wrap:wrap;gap:9px;margin:20px 0 6px; }
.planet-actions .planet-nav-button {
 display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:10px 16px;
 border:1px solid var(--planet-line-strong);border-radius:16px;
 background:linear-gradient(180deg,#fffefa,#f8f5e8);color:var(--planet-ink-soft);
 font:var(--planet-t-button);letter-spacing:.01em;cursor:pointer;
 box-shadow:var(--planet-shadow-card);
}
.planet-nav-icon { display:grid;place-items:center;width:17px;height:17px;flex:none;color:currentColor; }
.planet-nav-icon svg { width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round; }
.planet-actions .planet-nav-button:hover { border-color:#adc09c;color:var(--planet-sage-deep);box-shadow:var(--planet-shadow-lift); }
.planet-actions .planet-nav-button[data-active="true"] { background:linear-gradient(180deg,#7b9070,#61785a);border-color:#5b7154;color:#fdfdf2;box-shadow:0 2px 4px #43563a2e,0 10px 24px #43563a26; }
.planet-actions .planet-nav-button[data-active="true"]:hover { color:#fff; }
.planet-actions .planet-nav-button[data-accent="ember"][data-active="true"] { background:linear-gradient(180deg,#dcae5f,#c4913f);border-color:#b58436;color:#fffaf0; }
.planet-actions .planet-nav-button:focus-visible { outline:2px solid #7f9a82;outline-offset:2px; }

/* ---- §11 Ignite entry point ------------------------------------------- */
.planet-ignite { position:relative;margin-top:26px;padding:20px 18px 22px;border:1px solid #dbe1cd;border-radius:22px 22px 22px 8px;background:radial-gradient(120% 120% at 88% 4%,#fdf3dd 0%,#fdfbf1 46%);overflow:hidden; }
.planet-ignite::after { content:'';position:absolute;right:-26px;top:-26px;width:110px;height:110px;border-radius:50%;background:radial-gradient(circle,#f6d79c66,#f6d79c00 70%);pointer-events:none; }
.planet-ignite h2 { margin:0 0 8px; }
.planet-ignite p { font:var(--planet-t-body);color:#7b876d;margin:0 0 14px;max-width:46ch; }
#planetIgnite { display:inline-flex;align-items:center;gap:8px;border-radius:16px;padding:11px 20px;background:linear-gradient(180deg,#7b9070,#5f7658);border-color:#586f52;font:var(--planet-t-button);box-shadow:0 2px 4px #43563a2e,0 10px 22px #43563a24; }
#planetIgnite::before { content:'';width:8px;height:8px;border-radius:50%;background:var(--planet-ember);box-shadow:0 0 10px #e8a558cc; }

/* ---- §4 map markers ---------------------------------------------------- */
.campfire-node { cursor:pointer;z-index:2; }
.campfire-node[data-hover="true"] { transform:translate(-50%,-50%) scale(1.14);border-color:#e0c186;box-shadow:0 0 30px #f0cf8fcc; }
.campfire-node[data-hover="true"] .campfire-label { opacity:1; }
.campfire-node[data-selected="true"] {
 z-index:4;border-color:var(--planet-ember-deep);background:#ffe9bc;
 box-shadow:0 0 0 3px #fffdf5,0 0 0 6px #dda84eb3,0 0 34px #efc47ecc;
}
.campfire-node[data-selected="true"] .campfire-label { opacity:1;border-color:#e0c186;background:#fffaee;color:var(--planet-ember-deep);font-weight:600; }
.campfire-node:focus-visible { outline:2px solid #b58436;outline-offset:3px; }

/* ---- §5 map legend ----------------------------------------------------- */
.planet-map-legend { display:flex;flex-wrap:wrap;gap:6px 10px;margin:10px 24px 0;padding:10px 12px;border:1px solid var(--planet-line);border-radius:14px;background:#fffdf699;list-style:none; }
.planet-legend-item { display:flex;align-items:center;gap:7px;min-width:0;font:var(--planet-t-micro);color:var(--planet-ink-muted); }
.planet-legend-item b { font:600 10.5px/1.5 var(--planet-sans);color:var(--planet-ink-soft); }
.planet-legend-mark { width:11px;height:11px;border-radius:50%;flex:none;border:1px solid #d5ba80;background:#fff2cb;box-shadow:0 0 7px #ecd19799; }
.planet-legend-mark[data-kind="spot"] { border-color:#b9c6ac;background:#e9efe2;box-shadow:none; }
.planet-legend-mark[data-kind="cabin"] { border-radius:3px;border-color:#c6ab80;background:#e4cfa9;box-shadow:none; }
.planet-legend-mark[data-kind="lake"] { border-color:#a9c7bb;background:#c1d9cc;box-shadow:none; }

/* ---- §8 campfire card -------------------------------------------------- */
.planet-fire-card { border-color:var(--planet-line);border-radius:20px;box-shadow:var(--planet-shadow-card);background:var(--planet-surface); }
.planet-fire-open { padding:16px 6px 16px 14px;align-items:start; }
.planet-fire-open .campfire-image { align-self:start; }
.planet-fire-chiprow { display:flex;flex-wrap:wrap;gap:6px;margin-bottom:2px; }
.planet-panel small.planet-fire-when { font:var(--planet-t-meta);color:var(--planet-ink-soft);font-variant-numeric:tabular-nums; }
.planet-fire-body strong { margin:4px 0 2px; }
.planet-fire-facts { display:flex;flex-wrap:wrap;gap:5px;margin:8px 0 2px; }
.planet-fire-facts>span { padding:3px 9px;border-radius:var(--kanau-radius-pill);background:var(--planet-surface-sunken);color:var(--planet-ink-soft);font:var(--planet-t-micro);white-space:nowrap;font-variant-numeric:tabular-nums; }
.planet-fire-facts>span[data-fact="open"] { background:#e6efe1;color:#3f6146; }
.planet-fire-facts>span[data-fact="full"] { background:#efe6da;color:#8a6f3c; }
.planet-fire-host { display:flex;align-items:center;gap:8px;margin:8px 0 0;min-width:0; }
.planet-fire-host .student-avatar { width:26px;height:26px;font:600 11px/1 var(--planet-sans); }
.planet-fire-host-name { display:block;min-width:0;font:var(--planet-t-meta);color:var(--planet-ink-soft);overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.planet-fire-host-name em { font-style:normal;color:var(--planet-ink-muted); }
.planet-fire-tags { display:flex;flex-wrap:wrap;gap:5px;margin-top:8px; }
.planet-fire-avatars { display:flex;align-items:center;gap:0;margin-top:9px; }
.planet-fire-avatars .student-avatar { width:26px;height:26px;font:600 11px/1 var(--planet-sans);border:2px solid var(--planet-surface);margin-right:-7px; }
.planet-fire-avatars small { margin-left:14px;font:var(--planet-t-micro);color:var(--planet-ink-muted); }
.planet-panel small.planet-fire-more,.planet-panel small.planet-chat-more { display:inline-flex;align-items:center;gap:5px;margin-top:10px;font:var(--planet-t-button);color:#5f7d56; }
.planet-fire-card[data-state="hosting"] { border-color:#c9d8bd;background:linear-gradient(180deg,#fbfdf6,#fffdf5); }
.planet-fire-card[data-state="full"] { background:#fbfaf4; }
.planet-fire-card[data-selected="true"],.planet-chat-card[data-selected="true"] { border-color:#ddb972;box-shadow:0 0 0 2px #e8c88a66,var(--planet-shadow-lift); }
.planet-fire-card[data-hover="true"] { border-color:#c2cfb2;box-shadow:var(--planet-shadow-lift); }

/* ---- §9 selected campfire card ---------------------------------------- */
.planet-selected-fire {
 display:grid;gap:12px;margin:0 0 16px;padding:18px;border:1px solid #e0cb9f;border-radius:22px;
 background:linear-gradient(180deg,#fffdf4,#fdf8ea);box-shadow:0 2px 4px #7a6a3d14,0 14px 34px #7a6a3d1a;
}
.planet-selected-fire[hidden] { display:none; }
.planet-selected-head { display:grid;grid-template-columns:64px minmax(0,1fr);gap:14px;align-items:start; }
.planet-selected-art { display:grid;place-items:center;min-height:64px;border-radius:20px 20px 10px 10px;background:radial-gradient(ellipse at 50% 72%,#ffe5a9,#e7edd7 60%,#b2c6a2); }
.planet-selected-art svg { width:40px;height:46px; }
.planet-selected-fire h3 { margin:2px 0 0;font:var(--planet-t-card);font-size:20px;color:var(--planet-sage-deep); }
.planet-selected-spot { display:inline-flex;align-items:center;gap:6px;font:var(--planet-t-micro);color:var(--planet-ember-deep);margin:5px 0 0; }
.planet-selected-spot::before { content:'';width:7px;height:7px;border-radius:50%;background:var(--planet-ember);flex:none; }
.planet-selected-chips { display:flex;flex-wrap:wrap;gap:6px; }
.planet-selected-facts { display:flex;flex-wrap:wrap;gap:6px; }
.planet-selected-facts>span { padding:5px 11px;border-radius:var(--kanau-radius-pill);background:#fffdf7;border:1px solid #e7dcc2;color:var(--planet-ink-soft);font:var(--planet-t-micro);font-variant-numeric:tabular-nums;white-space:nowrap; }
.planet-selected-facts>span[data-fact="open"] { background:#f2f7ee;border-color:#d6e3cd;color:#3f6146; }
.planet-selected-facts>span[data-fact="full"] { background:#f8f0e2;border-color:#e8d9bb;color:#8a6f3c; }
.planet-selected-copy { margin:0;font:var(--planet-t-body);color:var(--planet-ink-soft); }
.planet-selected-people { display:flex;align-items:center;gap:0;flex-wrap:wrap; }
.planet-selected-people .student-avatar { width:30px;height:30px;font:600 12px/1 var(--planet-sans);border:2px solid #fffdf4;margin-right:-8px; }
.planet-selected-people small { margin-left:16px;font:var(--planet-t-micro);color:var(--planet-ink-muted); }
.planet-selected-actions { display:flex;flex-wrap:wrap;gap:9px;align-items:center; }
.planet-selected-actions button { min-height:44px;padding:10px 18px;border-radius:16px;font:var(--planet-t-button);cursor:pointer; }
.planet-selected-actions .planet-selected-details { border:1px solid var(--planet-line-strong);background:#fffdf7;color:var(--planet-ink-soft); }
.planet-selected-actions .planet-selected-details:hover { border-color:#adc09c;color:var(--planet-sage-deep); }
.planet-selected-actions .planet-selected-clear { margin-left:auto;border:0;background:transparent;color:var(--planet-ink-muted);min-height:36px;padding:6px 4px; }
.planet-selected-actions .planet-selected-clear:hover { color:var(--planet-ink-soft);text-decoration:underline; }

/* ---- §13 my community profile ----------------------------------------- */
.planet-my-profile { border-radius:var(--kanau-radius-card);box-shadow:var(--planet-shadow-card); }
.planet-profile-identity-row { display:flex;align-items:center;gap:11px;min-width:0; }
.planet-profile-identity-row .student-avatar { width:38px;height:38px;font:600 15px/1 var(--planet-sans); }
.planet-profile-identity-row div { min-width:0; }
.planet-profile-identity-row strong { display:block;font:var(--planet-t-card-sm);color:var(--planet-sage-deep); }
.planet-profile-identity-row small { display:block;font:var(--planet-t-micro);color:var(--planet-ink-muted);margin-top:1px; }

/* ---- §12 microinteractions --------------------------------------------- */
@media (prefers-reduced-motion:no-preference) {
 .planet-actions .planet-nav-button,.planet-fire-card,.planet-chat-card,.planet-selected-fire,
 #planetIgnite,.planet-metric,.planet-fire-open,.planet-chat-open { transition:transform var(--planet-speed) var(--planet-ease),box-shadow var(--planet-speed) var(--planet-ease),border-color var(--planet-speed) var(--planet-ease),background-color var(--planet-speed) var(--planet-ease),color var(--planet-speed) var(--planet-ease); }
 .planet-actions .planet-nav-button:hover,#planetIgnite:hover:not(:disabled) { transform:translateY(-1px); }
 .planet-fire-card:hover,.planet-chat-card:hover { transform:translateY(-1px); }
 .campfire-node { transition:transform 200ms var(--planet-ease),box-shadow 200ms var(--planet-ease),border-color 200ms var(--planet-ease),background-color 200ms var(--planet-ease); }
 .planet-fire-more,.planet-chat-more { transition:color var(--planet-speed) var(--planet-ease); }
 .planet-fire-open:hover .planet-fire-more span,.planet-fire-open:focus-visible .planet-fire-more span { transform:translateX(3px); }
 .planet-fire-more span { display:inline-block;transition:transform var(--planet-speed) var(--planet-ease); }
 .campfire-node[data-selected="true"]::after {
  content:'';position:absolute;inset:-8px;border-radius:50%;border:1px solid #dda84e;
  animation:planet-marker-pulse 2.6s var(--planet-ease) infinite;pointer-events:none;
 }
 @keyframes planet-marker-pulse { 0%{transform:scale(.86);opacity:.55} 70%{transform:scale(1.18);opacity:0} 100%{transform:scale(1.18);opacity:0} }
}
@media (prefers-reduced-motion:reduce) {
 .planet-actions .planet-nav-button,.planet-fire-card,.planet-chat-card,.campfire-node,#planetIgnite { transition:none; }
}

/* ---- §17 desktop widths（map は縮んでも残す） -------------------------- */
@media (max-width:1400px) { .planet-layout { gap:32px; } }
@media (max-width:1180px) {
 .planet-layout { grid-template-columns:minmax(320px,42fr) minmax(0,58fr);gap:24px; }
 .planet-welcome { padding:16px 12px 0; }
 .planet-map-legend { margin:10px 12px 0; }
}
@media (max-width:900px) {
 .planet-layout { grid-template-columns:1fr; }
 .planet-map-legend { margin:10px auto 0;max-width:650px; }
}
@media (max-width:480px) {
 .planet-live-strip { padding:12px; }
 .planet-metric { min-width:0;flex:1 1 40%; }
 .planet-selected-head { grid-template-columns:48px minmax(0,1fr);gap:10px; }
 .planet-selected-art { min-height:48px; }
 .planet-selected-actions { gap:7px; }
 .planet-selected-clear { margin-left:0; }
}

/* ---- §10 campfire detail drawer ---------------------------------------- */
.planet-detail-dialog { width:min(560px,calc(100vw - 24px)); }
.planet-detail-head { grid-template-columns:84px minmax(0,1fr);align-items:start; }
.planet-detail-identity .planet-chip-row { margin-top:9px; }
.planet-detail-identity .planet-chip-row li { background:#eef2e6;color:#4e6a4b; }
.planet-detail-spot { margin:8px 0 0;font:var(--planet-t-micro);color:var(--planet-ember-deep);display:inline-flex;align-items:center;gap:6px; }
.planet-detail-spot::before { content:'';width:7px;height:7px;border-radius:50%;background:var(--planet-ember);flex:none; }
.planet-detail-facts span[data-fact="open"] { background:#e6efe1;color:#3f6146; }
.planet-detail-facts span[data-fact="full"] { background:#efe6da;color:#8a6f3c; }
.planet-detail-host { display:grid;grid-template-columns:44px minmax(0,1fr);gap:12px;align-items:center;padding:12px;border:1px solid var(--planet-line);border-radius:16px;background:var(--planet-surface-raised); }
.planet-detail-host .student-avatar { width:44px;height:44px;font:var(--planet-t-card-sm); }
.planet-detail-host strong { display:block;font:var(--planet-t-card-sm);color:var(--planet-sage-deep); }
.planet-detail-host small { display:block;font:var(--planet-t-micro);color:var(--planet-ink-muted);margin-top:2px; }
.planet-detail-host p { margin:5px 0 0;font:var(--planet-t-body);color:var(--planet-ink-soft); }
.planet-detail-block h3 { font:var(--planet-t-eyebrow);letter-spacing:var(--planet-eyebrow-spacing);text-transform:uppercase;color:#8c9680; }
.planet-detail-actions .planet-primary,.planet-detail-actions .planet-cancel { border-radius:16px; }
@media (prefers-reduced-motion:no-preference) {
 .planet-detail-dialog[open],.planet-profile-dialog[open],.planet-cabin-dialog[open] { animation:planet-drawer-in 200ms var(--planet-ease) both; }
 @keyframes planet-drawer-in { from { opacity:0;transform:translateY(10px) scale(.985); } to { opacity:1;transform:none; } }
}

/* ---- gate / section error / profile card の共通 button（§13） ---------- */
.planet-panel h1:focus,#planetChatSection:focus,#planetUpcoming:focus,.planet-fire-card:focus { outline:none; }
.planet-source-badge { justify-self:start;font-family:var(--planet-sans);font-weight:600; }
.planet-gate h2,.planet-my-profile h2 { font:var(--planet-t-card);font-size:17px;margin:0;color:var(--planet-ink); }
.planet-gate p,.planet-section-error p,.planet-my-profile p { font:var(--planet-t-body);margin:0; }
.planet-gate button,.planet-section-error button,.planet-my-profile>button {
 justify-self:start;min-height:44px;padding:10px 18px;border:1px solid var(--planet-line-strong);border-radius:16px;
 background:linear-gradient(180deg,#fffefa,#f8f5e8);color:var(--planet-ink-soft);font:var(--planet-t-button);cursor:pointer;
}
.planet-gate button:hover,.planet-section-error button:hover,.planet-my-profile>button:hover { border-color:#adc09c;color:var(--planet-sage-deep); }
.planet-gate .planet-primary,.planet-section-error .planet-primary { background:linear-gradient(180deg,#7b9070,#5f7658);border-color:#586f52;color:#fdfdf2; }
.planet-toggle-field { font:var(--planet-t-meta);color:var(--planet-ink-soft); }
.planet-availability-entry { border-radius:var(--kanau-radius-card);box-shadow:var(--planet-shadow-card); }
.planet-availability-entry p { font:var(--planet-t-body);margin:0; }
.planet-availability-open { min-height:44px;padding:10px 18px;border:1px solid var(--planet-line-strong);border-radius:16px;background:linear-gradient(180deg,#fffefa,#f8f5e8);color:var(--planet-ink-soft);font:var(--planet-t-button);cursor:pointer; }
.planet-availability-open:hover { border-color:#adc09c;color:var(--planet-sage-deep); }
.planet-upcoming { border-radius:var(--kanau-radius-card);box-shadow:var(--planet-shadow-card);background:var(--planet-surface); }
.planet-reservation { border-radius:16px; }
.planet-reservation strong { font:var(--planet-t-card-sm);color:var(--planet-sage-deep); }
.planet-reservation small { font:var(--planet-t-micro);color:var(--planet-ink-muted); }
.planet-reservation-status { display:inline-block;margin-top:6px;padding:3px 9px;border-radius:var(--kanau-radius-pill);background:var(--planet-surface-sunken);color:var(--planet-ink-soft);font:var(--planet-t-micro);text-transform:capitalize; }
.planet-reservation-actions button { min-height:44px;border-radius:14px;font:var(--planet-t-button); }
.planet-pending-badge { font-family:var(--planet-sans); }
/* 移動先を示すための programmatic focus では枠を出さない（keyboard の :focus-visible は残す）。 */
.planet-fire-card:focus:not(:focus-visible),.planet-upcoming:focus:not(:focus-visible),
.planet-selected-fire:focus:not(:focus-visible) { outline:none; }

/* ============================================================
   C11 · 週ビュー（右の week strip）と森の公告板（左の notice board）
   どちらも既存の campfire data を日付で束ねて描くだけ。配色・角丸・影は
   既存 token をそのまま使い、KanAU の手触りから離れない。
   ============================================================ */

/* ---- 週バー（右） ------------------------------------------------------ */
.planet-week { display:grid;gap:11px;margin:0 0 16px;padding:14px 14px 15px;border:1px solid var(--planet-line);border-radius:var(--kanau-radius-card);background:linear-gradient(180deg,#fffefa,#fbf8ec);box-shadow:var(--planet-shadow-card); }
.planet-week-head { display:flex;align-items:center;gap:8px; }
.planet-week-label { margin:0;font:var(--planet-t-card-sm);color:var(--planet-ink);font-variant-numeric:tabular-nums;min-width:0;flex:1 1 auto;text-align:center; }
.planet-week-nav { display:grid;place-items:center;width:34px;height:34px;flex:none;padding:0;border:1px solid var(--planet-line-strong);border-radius:11px;background:var(--planet-surface-raised);color:var(--planet-ink-soft);cursor:pointer; }
.planet-week-nav svg { width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round; }
.planet-week-nav:hover { border-color:#adc09c;color:var(--planet-sage-deep);background:#f8f5e8; }
.planet-week-today { flex:none;min-height:34px;padding:7px 12px;border:1px solid var(--planet-line-strong);border-radius:11px;background:var(--planet-surface-raised);color:var(--planet-ink-soft);font:var(--planet-t-button);cursor:pointer; }
.planet-week-today:hover { border-color:#adc09c;color:var(--planet-sage-deep); }
.planet-week-row { display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px; }
.planet-week-day {
 position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;
 min-height:80px;padding:20px 4px 10px;border:1px solid var(--planet-line);border-radius:14px;
 background:var(--planet-surface-raised);color:var(--planet-ink-soft);cursor:pointer;
}
.planet-week-weekday { font:var(--planet-t-micro);letter-spacing:.06em;text-transform:uppercase;color:var(--planet-ink-muted); }
.planet-week-day strong { font:600 17px/1.1 var(--planet-sans);font-variant-numeric:tabular-nums;color:var(--planet-ink); }
.planet-week-count { display:grid;place-items:center;min-width:18px;height:18px;margin-top:2px;padding:0 5px;border-radius:var(--kanau-radius-pill);font:600 10px/1 var(--planet-sans);color:transparent; }
.planet-week-count[data-has="true"] { background:var(--planet-ember-soft);color:var(--planet-ember-deep);box-shadow:inset 0 0 0 1px #e8c88a7a; }
.planet-week-today-dot { position:absolute;top:6px;left:0;right:0;text-align:center;font:600 8px/1 var(--planet-sans);letter-spacing:.08em;text-transform:uppercase;color:var(--planet-ink-muted); }
.planet-week-day:hover { border-color:#adc09c;background:#f8f5e8; }
.planet-week-day[data-today="true"] { border-color:#c6d3b8; }
.planet-week-day[data-selected="true"] { background:linear-gradient(180deg,#7b9070,#61785a);border-color:#5b7154;color:#fdfdf2;box-shadow:0 2px 4px #43563a2e,0 8px 20px #43563a24; }
.planet-week-day[data-selected="true"] strong,.planet-week-day[data-selected="true"] .planet-week-weekday,
.planet-week-day[data-selected="true"] .planet-week-today-dot { color:#f2f6ea; }
.planet-week-day[data-selected="true"] .planet-week-count[data-has="true"] { background:#fdf0d4;color:#95661f;box-shadow:none; }
.planet-week-day:focus-visible,.planet-week-nav:focus-visible,.planet-week-today:focus-visible { outline:2px solid #7f9a82;outline-offset:2px; }

/* ---- 空状態 ------------------------------------------------------------ */
.planet-day-empty { display:grid;gap:6px;margin:0 0 12px;padding:22px 18px;border:1px dashed var(--planet-line-strong);border-radius:var(--kanau-radius-card);background:#fffdf699;text-align:center; }
.planet-day-empty-title { margin:0;font:var(--planet-t-card-sm);color:var(--planet-ink); }
.planet-day-empty-copy { margin:0;font:var(--planet-t-body);color:var(--planet-ink-muted); }

/* ---- featured card の日付表示 ------------------------------------------ */
.planet-selected-actions .planet-selected-day { margin-left:auto;font:var(--planet-t-micro);color:var(--planet-ink-muted);font-variant-numeric:tabular-nums;white-space:nowrap; }

@media (prefers-reduced-motion:no-preference) {
 .planet-week-day,.planet-cal-day,.planet-week-nav,.planet-week-today { transition:transform var(--planet-speed) var(--planet-ease),box-shadow var(--planet-speed) var(--planet-ease),border-color var(--planet-speed) var(--planet-ease),background-color var(--planet-speed) var(--planet-ease),color var(--planet-speed) var(--planet-ease); }
 .planet-week-day:hover,.planet-cal-day:hover { transform:translateY(-1px); }
}

@media (max-width:1180px) {
 .planet-week { padding:12px 11px 13px; }
 .planet-week-row { gap:4px; }
 .planet-week-day { min-height:72px;padding:18px 2px 9px; }
}
@media (max-width:480px) {
 .planet-week-day { min-height:64px;padding-top:16px; }
 .planet-week-day strong { font-size:15px; }
 .planet-selected-actions .planet-selected-day { margin-left:0;flex-basis:100%; }
}

/* ============================================================
   C12 · 森の掲示板（地図の中の object）と月次カレンダー、
   および featured / small card の視覚統一
   ============================================================ */

/* ---- 地図の中の掲示板 -------------------------------------------------- */
.planet-bulletin-node {
 position:absolute;transform:translate(-50%,-50%);width:66px;height:60px;padding:0;
 border:0;background:transparent;cursor:pointer;z-index:3;
 filter:drop-shadow(0 6px 14px #6b5c3d24);
}
.planet-bulletin-node svg { width:100%;height:100%;display:block; }
.planet-bulletin-node::before {
 content:'';position:absolute;left:50%;top:44%;width:74px;height:48px;transform:translate(-50%,-50%);
 border-radius:50%;background:radial-gradient(ellipse,#f2dfb03d,#f2dfb000 70%);pointer-events:none;
}
.planet-bulletin-node .campfire-label { bottom:calc(100% + 2px); }
.planet-bulletin-node:hover .campfire-label,.planet-bulletin-node:focus-visible .campfire-label { opacity:1; }
.planet-bulletin-node:focus-visible { outline:2px solid #b58436;outline-offset:3px;border-radius:10px; }

/* ---- 水辺の 1:1 は押せる入口 ------------------------------------------- */
.planet-meeting-spot { border:0;padding:0;background:transparent;cursor:pointer;pointer-events:auto;z-index:3; }
.planet-meeting-spot:hover svg,.planet-meeting-spot:focus-visible svg { stroke:#7f9a82; }
.planet-meeting-spot:hover .planet-spot-label,.planet-meeting-spot:focus-visible .planet-spot-label { color:var(--planet-sage-deep);font-weight:600; }
.planet-meeting-spot:focus-visible { outline:2px solid #7f9a82;outline-offset:3px;border-radius:10px; }

/* ---- marker の人数 badge（hover / selected のときだけ） ----------------- */
.campfire-count {
 position:absolute;right:-4px;bottom:-3px;min-width:17px;height:17px;padding:0 4px;
 display:grid;place-items:center;border-radius:var(--kanau-radius-pill);
 background:#fffdf5;border:1px solid #e0c186;color:var(--planet-ember-deep);
 font:600 9.5px/1 var(--planet-sans);font-variant-numeric:tabular-nums;
 opacity:0;pointer-events:none;
}
.campfire-node[data-hover="true"] .campfire-count,.campfire-node[data-selected="true"] .campfire-count,
.campfire-node:focus-visible .campfire-count { opacity:1; }

/* ---- 月次カレンダー ---------------------------------------------------- */
.planet-calendar-dialog {
 width:min(760px,calc(100vw - 32px));max-height:calc(100dvh - 40px);overflow:auto;
 border:1px solid #ddcfae;border-radius:24px;padding:22px 22px 20px;
 background:linear-gradient(180deg,#fffdf5,#fbf6e8);color:var(--planet-ink-soft);
 box-shadow:0 24px 70px #5c513333;font-family:var(--planet-sans);
}
.planet-calendar-dialog::backdrop { background:#3948324d; }
.planet-cal-head { display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:14px; }
.planet-cal-identity .planet-eyebrow { color:#a2926c;margin-bottom:4px; }
.planet-cal-head h2 { margin:0;font:400 26px/1.2 var(--planet-serif);color:#5f5030; }
.planet-cal-nav { display:flex;align-items:center;gap:7px; }
.planet-cal-nav-button { display:grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid #ddcfae;border-radius:11px;background:#fffdf6;color:#7b6a45;cursor:pointer; }
.planet-cal-nav-button svg { width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round; }
.planet-cal-nav-button:hover { border-color:#cbb488;background:#fdf6e6; }
.planet-cal-today { min-height:34px;padding:7px 13px;border:1px solid #ddcfae;border-radius:11px;background:#fffdf6;color:#7b6a45;font:var(--planet-t-button);cursor:pointer; }
.planet-cal-today:hover { border-color:#cbb488;background:#fdf6e6; }
.planet-cal-weekdays { display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-bottom:6px; }
.planet-cal-weekdays span { text-align:center;font:600 9.5px/1.4 var(--planet-sans);letter-spacing:.1em;text-transform:uppercase;color:#a2926c; }
.planet-cal-grid { display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px; }
.planet-cal-day {
 display:flex;flex-direction:column;align-items:stretch;gap:3px;min-height:84px;padding:7px 7px 8px;
 border:1px solid #e7dbbf;border-radius:12px;background:#fffdf6;color:#7b6a45;cursor:pointer;text-align:left;overflow:hidden;
}
.planet-cal-day-head { display:flex;align-items:center;justify-content:space-between;gap:4px; }
.planet-cal-day-num { font:600 13px/1.2 var(--planet-sans);font-variant-numeric:tabular-nums;color:#5f5030; }
.planet-cal-today-tag { font:600 8px/1 var(--planet-sans);letter-spacing:.08em;text-transform:uppercase;color:var(--planet-ember-deep); }
.planet-cal-notes { display:flex;flex-direction:column;gap:2px;min-width:0; }
.planet-cal-note { display:flex;align-items:center;gap:4px;min-width:0; }
.planet-cal-note-dot { width:5px;height:5px;border-radius:50%;flex:none;background:var(--planet-ember);box-shadow:0 0 5px #e8a5587a; }
.planet-cal-note-text { min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:500 10px/1.4 var(--planet-sans);color:#6b5a33; }
.planet-cal-more { font:600 9px/1.3 var(--planet-sans);color:#a2926c; }
.planet-cal-day[data-outside="true"] { background:#faf6ea;border-color:#eee5d1;opacity:.62; }
.planet-cal-day[data-today="true"] { border-color:#e0c186; }
.planet-cal-day:hover { border-color:#cbb488;background:#fdf6e6; }
.planet-cal-day[data-selected="true"] { background:#6b5a33;border-color:#5b4c2b;color:#fdf6e6;opacity:1; }
.planet-cal-day[data-selected="true"] .planet-cal-day-num,.planet-cal-day[data-selected="true"] .planet-cal-note-text,
.planet-cal-day[data-selected="true"] .planet-cal-more,.planet-cal-day[data-selected="true"] .planet-cal-today-tag { color:#fdf6e6; }
.planet-cal-day:focus-visible { outline:2px solid #b58436;outline-offset:2px; }
.planet-cal-month-empty { margin:12px 0 0;text-align:center;font:var(--planet-t-body);color:#a2926c; }
.planet-cal-panel { margin-top:16px;padding-top:14px;border-top:1px solid #e7dbbf; }
.planet-cal-panel-title { margin:0 0 9px;font:var(--planet-t-card-sm);color:#5f5030; }
.planet-cal-empty { margin:0;font:var(--planet-t-body);color:#a2926c; }
.planet-cal-list { list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px; }
.planet-cal-item { display:grid;grid-template-columns:8px minmax(0,1fr) 14px;gap:10px;align-items:center;width:100%;
 padding:10px 12px;border:1px solid #e7dbbf;border-radius:13px;background:#fffdf6;color:#7b6a45;text-align:left;cursor:pointer;font:inherit; }
.planet-cal-item:hover { border-color:#cbb488;background:#fdf6e6; }
.planet-cal-item-mark { width:8px;height:8px;border-radius:50%;background:var(--planet-ember);box-shadow:0 0 6px #e8a5587a; }
.planet-cal-item-body { min-width:0; }
.planet-cal-item-body strong { display:block;font:var(--planet-t-card-sm);color:#5f5030; }
.planet-cal-item-body small { display:block;font:var(--planet-t-micro);color:#a2926c;margin-top:2px; }
.planet-cal-item-host { color:#8a7a56; }
.planet-cal-item-go { color:#a2926c; }
.planet-cal-actions { display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:18px;flex-wrap:wrap; }
.planet-cal-hint { margin:0;font:var(--planet-t-micro);color:#a2926c; }
.planet-cal-actions .planet-primary { min-height:44px;padding:10px 20px;border-radius:16px;font:var(--planet-t-button);cursor:pointer; }
@media (prefers-reduced-motion:no-preference) {
 .planet-calendar-dialog[open] { animation:planet-drawer-in 200ms var(--planet-ease) both; }
}
@media (max-width:720px) {
 .planet-calendar-dialog { padding:16px; }
 .planet-cal-day { min-height:64px;padding:6px 5px; }
 .planet-cal-note-text,.planet-cal-more { display:none; }
 .planet-cal-notes { flex-direction:row;gap:3px; }
}

/* ---- 右 panel の統一（title 行 / section 見出し / featured card） ------- */
.planet-title-row { display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px; }
.planet-title-row h1 { margin:0; }
.planet-title-row .planet-source-badge { margin:0;align-self:center; }
.planet-section-head { display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:30px 0 14px; }
.planet-section-head h2 { margin:0; }
.planet-section-link { display:inline-flex;align-items:center;gap:5px;padding:4px 2px;border:0;background:transparent;color:#5f7d56;font:var(--planet-t-button);cursor:pointer;white-space:nowrap; }
.planet-section-link:hover { color:var(--planet-sage-deep); }
.planet-section-link:focus-visible { outline:2px solid #7f9a82;outline-offset:2px;border-radius:8px; }
.planet-meta-icon { display:inline-grid;place-items:center;width:13px;height:13px;flex:none; }
.planet-meta-icon svg { width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;opacity:.75; }
.planet-fire-facts>span,.planet-selected-facts>span { display:inline-flex;align-items:center;gap:6px; }
.planet-selected-head { grid-template-columns:96px minmax(0,1fr);gap:16px; }
.planet-selected-art { min-height:96px;border-radius:18px; }
.planet-selected-art svg { width:52px;height:60px; }
.planet-selected-identity { display:grid;gap:7px;min-width:0; }
.planet-selected-topline { display:flex;align-items:center;justify-content:space-between;gap:10px; }
.planet-selected-topline .planet-eyebrow { margin:0; }
.planet-selected-when { margin:0;font:var(--planet-t-meta);color:var(--planet-ink-soft);font-variant-numeric:tabular-nums; }
.planet-selected-fire h3 { margin:0; }
.planet-selected-chips,.planet-selected-facts { margin:0; }
.planet-selected-people { margin-top:2px; }
.planet-selected-copy { margin:2px 0 0; }
.planet-selected-actions { margin-top:2px; }

/* small card: 説明は 2行までにして、カード間のリズムを揃える */
.planet-fire-body p { display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden; }
.planet-fire-card,.planet-chat-card,.planet-upcoming,.planet-my-profile,.planet-ignite,.planet-week,.planet-live-strip,.planet-availability-entry {
 border-color:var(--planet-line);
}
.planet-reservation-empty { display:grid;gap:5px;padding:16px 2px 4px; }

/* ---- legend を 2行ラベルへ（地図と同じ質感の小カード） ----------------- */
.planet-map-legend { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;padding:13px 15px; }
.planet-legend-item { align-items:flex-start;gap:8px;min-width:0; }
.planet-legend-text { display:grid;gap:1px;min-width:0; }
.planet-legend-text b { font:600 11px/1.35 var(--planet-sans);color:var(--planet-ink-soft); }
.planet-legend-text span { font:var(--planet-t-micro);color:var(--planet-ink-muted); }
.planet-legend-mark { margin-top:3px;width:12px;height:12px; }

/* ---- panel の締め ------------------------------------------------------ */
.planet-signoff { display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:26px 0 0;padding-top:14px;border-top:1px solid var(--planet-line); }
.planet-signoff span:first-child { font:400 13px/1.5 var(--planet-serif);color:var(--planet-ink-soft); }
.planet-signoff-mark { font:var(--planet-t-micro);color:var(--planet-ink-muted);white-space:nowrap; }

/* ---- 狭い幅での折り返し（320px でも横に溢れさせない） ------------------ */
.planet-section-head,.planet-signoff { flex-wrap:wrap; }
.planet-section-head h2 { min-width:0; }
.planet-week-day,.planet-cal-day { min-width:0;overflow:hidden; }
.planet-week-weekday,.planet-week-day strong { max-width:100%;overflow:hidden;text-overflow:ellipsis; }
@media (max-width:420px) {
 .planet-week { padding:10px 8px 11px; }
 .planet-week-row { gap:3px; }
 .planet-week-day { min-height:56px;padding:15px 1px 7px; }
 .planet-week-day strong { font-size:13px; }
 .planet-week-weekday { font-size:8.5px;letter-spacing:.02em; }
 .planet-week-count { min-width:14px;height:14px;padding:0 3px;font-size:9px; }
 .planet-week-today-dot { font-size:7px;top:4px; }
 .planet-week-label { font-size:13px; }
 .planet-map-legend { grid-template-columns:minmax(0,1fr); }
 .planet-selected-head { grid-template-columns:56px minmax(0,1fr);gap:11px; }
 .planet-selected-art { min-height:56px; }
 .planet-selected-topline { flex-wrap:wrap;gap:5px; }
 .planet-signoff { gap:4px; }
}

/* ============================================================
   C13 · approved mockup へ寄せる visual alignment
   - featured は 1枚だけ。情報は 1回ずつ
   - その日の残りは 2列の compact card
   - 箱と枠を減らし、余白で階層を作る
   ============================================================ */

/* ---- 右 panel 全体の呼吸 ---------------------------------------------- */
.planet-panel { padding:20px 0 8px; }
.planet-panel h2 { margin:34px 0 4px; }
.planet-section-head { margin:34px 0 4px; }
.planet-section-head h2 { margin:0; }
.planet-subhead { margin:26px 0 12px;font:var(--planet-t-card-sm);color:var(--planet-ink-muted);letter-spacing:.01em; }
.planet-only-one { margin:18px 0 0;font:var(--planet-t-body);color:var(--planet-ink-muted); }

/* At a glance / 週バー は枠を外して軽くする（§5/§7） */
.planet-live-strip { border:0;background:transparent;box-shadow:none;padding:2px 0 0;gap:8px;margin:10px 0 0; }
.planet-live-title { font-size:17px; }
.planet-metric { border:0;background:transparent;padding:0 18px 0 0;min-width:0; }
.planet-metric b { font-size:20px; }
.planet-live-metrics { gap:0 4px; }

/* ---- 週バー: 軽い絞り込みに徹する（§5） ------------------------------- */
.planet-week { border:0;background:transparent;box-shadow:none;padding:0;gap:8px;margin:14px 0 22px; }
.planet-week-head { gap:6px; }
.planet-week-label { font:var(--planet-t-meta);color:var(--planet-ink-muted);text-align:left;flex:1 1 auto; }
.planet-week-nav { width:28px;height:28px;border-radius:9px; }
.planet-week-nav svg { width:14px;height:14px; }
.planet-week-today { min-height:28px;padding:5px 11px;border-radius:9px;font-size:11px; }
.planet-week-row { gap:5px; }
.planet-week-day { min-height:58px;padding:15px 3px 7px;border-radius:12px;gap:1px; }
.planet-week-day strong { font-size:14px; }
.planet-week-weekday { font-size:9px; }
.planet-week-count { min-width:0;height:auto;margin-top:3px;padding:0;background:transparent!important;box-shadow:none!important;color:transparent; }
.planet-week-count[data-has="true"] { color:transparent;position:relative;width:5px;height:5px;border-radius:50%;background:var(--planet-ember)!important; }
.planet-week-day[data-selected="true"] .planet-week-count[data-has="true"] { background:#fdf0d4!important; }
.planet-week-today-dot { font-size:7px;top:4px;color:var(--planet-ink-muted); }

/* ---- featured card（§2） ---------------------------------------------- */
.planet-fire-card[data-featured="true"] {
 display:block;padding:18px 20px 18px;border:1px solid #e2d4b4;border-radius:22px;
 background:linear-gradient(180deg,#fffdf4,#fdf9ee);box-shadow:0 2px 4px #7a6a3d12,0 16px 36px #7a6a3d16;
 margin:0;
}
.planet-featured-top { display:flex;align-items:center;gap:10px;margin-bottom:14px; }
.planet-featured-top .planet-eyebrow { margin:0; }
.planet-featured-spot { font:var(--planet-t-micro);color:var(--planet-ember-deep);display:inline-flex;align-items:center;gap:6px; }
.planet-featured-spot::before { content:'';width:5px;height:5px;border-radius:50%;background:var(--planet-ember);flex:none; }
.planet-featured-top .planet-chip { margin-left:auto; }
.planet-featured-body { display:grid;grid-template-columns:92px minmax(0,1fr) auto;gap:18px;align-items:start; }
.planet-fire-card[data-featured="true"] .campfire-image { min-height:92px;border-radius:18px; }
.planet-fire-card[data-featured="true"] .campfire-image svg { width:50px;height:58px; }
.planet-featured-main { display:grid;gap:8px;min-width:0; }
.planet-featured-main>strong { display:block;font:400 22px/1.28 var(--planet-serif);color:var(--planet-sage-deep);margin:0; }
.planet-featured-main .planet-fire-chiprow { margin:0; }
.planet-featured-main .planet-fire-when,.planet-featured-time { display:block;font:var(--planet-t-meta);color:var(--planet-ink-soft);font-variant-numeric:tabular-nums; }
.planet-featured-main .planet-fire-when { margin-top:2px; }
.planet-featured-time { margin-top:-5px; }
.planet-fire-card[data-featured="true"] .planet-fire-facts { display:block;margin:2px 0 0; }
.planet-fire-card[data-featured="true"] .planet-fire-facts>span { display:block;padding:0;border:0;background:transparent;white-space:normal;font:var(--planet-t-meta);color:var(--planet-ink-soft); }
.planet-fire-card[data-featured="true"] .planet-featured-main>p { margin:6px 0 0;font:var(--planet-t-body);color:var(--planet-ink-soft);max-width:52ch; }
.planet-fire-card[data-featured="true"] .planet-fire-host { margin:4px 0 0; }
.planet-fire-card[data-featured="true"] .planet-selected-people { margin:6px 0 0; }
.planet-selected-actions { display:grid;gap:9px;align-content:start;justify-items:stretch;min-width:148px; }
.planet-selected-actions button { width:100%;justify-content:center; }

/* ---- button language（§8） -------------------------------------------- */
.planet-primary,.planet-cancel { border-radius:14px; }
.planet-primary { background:linear-gradient(180deg,#7b9070,#5f7658);border-color:#586f52;color:#fdfdf2;
 font:var(--planet-t-button);min-height:44px;padding:11px 18px;box-shadow:0 2px 4px #43563a2e,0 10px 22px #43563a1f; }
.planet-primary:hover:not(:disabled) { box-shadow:0 3px 6px #43563a33,0 14px 28px #43563a26; }
.planet-primary:disabled { background:#e7ecdf;border-color:#d8e0cd;color:#7a8a72;box-shadow:none; }
.planet-secondary { display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:11px 18px;
 border:1px solid #b9c9ab;border-radius:14px;background:#fffdf6;color:var(--planet-sage-deep);
 font:var(--planet-t-button);cursor:pointer; }
.planet-secondary:hover { border-color:#9fb58f;background:#f6f4e6; }
.planet-secondary:focus-visible,.planet-primary:focus-visible { outline:2px solid #7f9a82;outline-offset:2px; }
.planet-cancel { min-height:44px;padding:11px 18px;font:var(--planet-t-button); }
@media (prefers-reduced-motion:no-preference) {
 .planet-secondary,.planet-primary { transition:transform var(--planet-speed) var(--planet-ease),box-shadow var(--planet-speed) var(--planet-ease),border-color var(--planet-speed) var(--planet-ease),background-color var(--planet-speed) var(--planet-ease); }
 .planet-primary:hover:not(:disabled),.planet-secondary:hover { transform:translateY(-1px); }
 .planet-secondary span { display:inline-block;transition:transform var(--planet-speed) var(--planet-ease); }
 .planet-secondary:hover span { transform:translateX(3px); }
}

/* ---- compact card（§4）: 2列・低め ------------------------------------- */
.planet-fire-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start; }
.planet-fire-card:not([data-featured="true"]) {
 grid-template-columns:minmax(0,1fr);grid-template-rows:1fr auto;margin:0;
 border-radius:18px;box-shadow:none;border-color:var(--planet-line);background:var(--planet-surface);
}
.planet-fire-card:not([data-featured="true"]) .planet-fire-open { grid-template-columns:46px minmax(0,1fr);gap:11px;padding:13px 13px 6px;align-items:start; }
.planet-fire-card:not([data-featured="true"]) .campfire-image { min-height:46px;border-radius:14px 14px 8px 8px; }
.planet-fire-card:not([data-featured="true"]) .campfire-image svg { width:26px;height:30px; }
.planet-fire-card:not([data-featured="true"]) .planet-fire-body strong { font:400 15px/1.3 var(--planet-serif);margin:4px 0 1px; }
.planet-fire-card:not([data-featured="true"]) .planet-fire-facts { margin:7px 0 0;gap:4px; }
.planet-fire-card:not([data-featured="true"]) .planet-fire-facts>span { padding:2px 7px;font-size:10px; }
.planet-fire-card:not([data-featured="true"]) .planet-fire-facts .planet-meta-icon,
.planet-fire-card:not([data-featured="true"]) .planet-fire-facts .planet-meta-icon svg { width:11px;height:11px; }
.planet-fire-spot { display:block;font:var(--planet-t-micro);color:var(--planet-ember-deep); }
.planet-fire-card:not([data-featured="true"])>button:last-child { margin:0 13px 13px;align-self:end;justify-self:start;min-height:36px;padding:8px 16px;font-size:11px; }
.planet-fire-card:not([data-featured="true"]) .planet-fire-more { margin-top:8px; }
.planet-fire-card:not([data-featured="true"]) .planet-fire-chiprow { gap:5px; }
.planet-fire-card:not([data-featured="true"]) .planet-chip { font-size:9.5px;padding:3px 8px; }

/* ---- reservations を compact に（§9） ---------------------------------- */
.planet-upcoming { padding:2px 0 0;border:0;box-shadow:none;background:transparent; }
.planet-reservation { display:grid;gap:3px;padding:13px 15px;border:1px solid var(--planet-line);border-radius:16px;background:var(--planet-surface);margin:0 0 9px; }
.planet-reservation-actions { gap:7px;margin-top:9px; }
.planet-reservation-actions button { flex:0 0 auto;min-height:38px;padding:8px 15px;font-size:11px; }

@media (max-width:1180px) {
 .planet-featured-body { grid-template-columns:76px minmax(0,1fr);gap:14px; }
 .planet-selected-actions { grid-column:1/-1;grid-auto-flow:column;justify-items:start;min-width:0; }
 .planet-selected-actions button { width:auto; }
}
@media (max-width:760px) {
 .planet-fire-grid { grid-template-columns:minmax(0,1fr); }
}
@media (max-width:480px) {
 .planet-fire-card[data-featured="true"] { padding:14px; }
 .planet-featured-body { grid-template-columns:56px minmax(0,1fr);gap:11px; }
 .planet-fire-card[data-featured="true"] .campfire-image { min-height:56px; }
 .planet-featured-main>strong { font-size:19px; }
 .planet-selected-actions { grid-auto-flow:row;justify-items:stretch; }
 .planet-selected-actions button { width:100%; }
}

/* ---- 1:1 card も compact card と同じ骨格に揃える（§1/§7） -------------- */
.planet-chat-card { border-radius:18px;box-shadow:none;border-color:var(--planet-line);margin:0 0 10px; }
.planet-chat-open { grid-template-columns:40px minmax(0,1fr);gap:12px;padding:14px 6px 14px 14px; }
.planet-chat-card .student-avatar { width:40px;height:40px;font-size:16px; }
.planet-chat-body strong { font:400 16px/1.3 var(--planet-serif); }
.planet-chat-topic { margin:5px 0 3px; }
.planet-chat-card>.planet-primary { min-height:38px;padding:9px 16px;font-size:11px;margin-right:14px; }
.planet-panel small.planet-chat-more { margin-top:7px; }
