/* Scoped communication routes: keep room, QSO and bot runtime ownership. */
.communication-page { background:#0a1420; color:#edf5fb; font-family:var(--mtp-font-sans); accent-color:#65deed; caret-color:#65deed; }
.communication-page ::selection { background:#65deed; color:#071a25; }
.communication-page :is(button,input,select,textarea,summary) { font:inherit; }
.communication-page :is(button,select,input:not([type=checkbox]):not([type=radio]),summary) { min-height:44px; }
.communication-page :is(input,select,textarea) { min-width:0; max-width:100%; }
.communication-page :is(button,a,input,select,textarea,summary):focus-visible { outline:3px solid #65deed!important; outline-offset:3px; }
.communication-page :is(button,summary,a) { touch-action:manipulation; }
.communication-page :is(.text-gray-400,.text-gray-500) { color:#b2c4d3; }
.communication-page :is(.bg-gray-800,.cwbot-card) { background:#111f2e; border-color:#304253; box-shadow:none; }
.communication-page .communication-intro { text-align:left; margin:0 0 28px; }
.communication-intro h1 { margin:8px 0 12px; font-size:clamp(1.875rem,3vw,2.5rem); font-weight:600; line-height:1.15; letter-spacing:-.025em; color:#edf5fb; }
.communication-intro p { max-width:70ch; margin:8px 0; color:#b2c4d3; line-height:1.55; }
.communication-back { display:inline-flex; align-items:center; min-height:44px; color:#65deed; text-decoration:underline; text-underline-offset:4px; }
.communication-note { font-size:.9375rem; }
.communication-notice { padding:16px 20px; border:1px solid #304253; background:#111f2e; margin-bottom:24px; line-height:1.55; }
.communication-notice h2 { font-size:1.25rem; font-weight:600; }
.communication-notice p { margin:8px 0; color:#b2c4d3; max-width:70ch; }
.communication-notice a { color:#65deed; text-decoration:underline; }
.communication-notice button { padding:8px 16px; background:#65deed; color:#071a25; border-radius:6px; }
.communication-details { margin-bottom:16px; }
.communication-details > summary { cursor:pointer; font-weight:600; padding:10px 0; color:#edf5fb; }
.communication-details[open] > summary { margin-bottom:16px; }
.communication-page .cwbot-card { border-radius:8px; }
.communication-page :is(.cwbot-btn-primary,#create-room-btn) { background:#65deed; color:#071a25; box-shadow:none; }
.communication-page :is(.cwbot-btn-secondary,.cwbot-btn-ghost,#join-by-code-btn,.filter-btn) { background:#182d3e; color:#edf5fb; border:1px solid #496071; box-shadow:none; }
.communication-page .filter-btn.active { background:#65deed; color:#071a25; }
.communication-page button:disabled { opacity:.6; cursor:not-allowed; }
.communication-page .cwbot-transcript:empty::before { content:"No exchange yet. Start a QSO to receive the first reply."; color:#b2c4d3; font-family:var(--mtp-font-sans); }
.communication-page .cwbot-transcript { min-height:200px; }
.communication-page #cwbot-session-state { white-space:nowrap; }
.communication-room-purpose { color:#b2c4d3; margin-top:20px; margin-bottom:0; line-height:1.5; }
.communication-page #participants-list:empty::before { content:"No participants loaded yet."; color:#b2c4d3; }
.communication-page #disconnected-overlay { padding:16px; }
.communication-page .modal-content { max-height:calc(100dvh - 32px); overflow:auto; }
.communication-page :is(input[type=checkbox],input[type=radio]) { accent-color:#65deed; }
.communication-page label:has(input[type=checkbox]),.communication-page label:has(input[type=radio]) { min-height:44px; align-items:center; }
@media(max-width:700px) {
 .communication-page .container { width:100%; }
 .communication-page .communication-qso { padding:20px 16px; }
 .communication-page :is(.cwbot-card,.communication-qso .p-6) { padding:16px; }
 .communication-page .cwbot-card > .flex { flex-wrap:wrap; gap:12px; }
 .communication-page .cwbot-card .space-x-3:has(input[type=radio]) { flex-wrap:wrap; gap:8px; }
 .communication-page .cwbot-card .space-x-3:has(input[type=radio]) > * { margin-left:0; }
 .communication-page #roomCodeInput { width:100%; }
 .communication-page .communication-qso .flex:has(> #roomCodeInput),.communication-page .communication-qso .flex:has(> #chatInput) { flex-wrap:wrap; gap:8px; }
 .communication-page .communication-qso .flex:has(> #roomCodeInput) > *,.communication-page .communication-qso .flex:has(> #chatInput) > * { margin-left:0; }
 .communication-page .modal .grid-cols-2 { grid-template-columns:1fr; }
 .communication-page #cw-feed { min-height:220px!important; }
 .communication-page main > div:has(> #cw-feed) { min-height:0!important; }
}
@media(prefers-reduced-motion:reduce) { .communication-page *, .communication-page *::before { animation:none!important; transition:none!important; scroll-behavior:auto!important; } }

.communication-page .communication-qso .status-disconnected { background:#243746; color:#edf5fb; }
.communication-page .communication-qso :is(#createRoomBtn,#randomPairBtn) { background:#182d3e; border:1px solid #496071; color:#edf5fb; box-shadow:none; }
.communication-page .communication-qso :is(#connectMorserinoBtn,#sendChatBtn) { background:#65deed; color:#071a25; box-shadow:none; }
.communication-page .communication-qso .chat-message.system { background:transparent; color:#b2c4d3; font-style:normal; }
.communication-page #participants-list:not(:has(*))::before { content:"No participants loaded yet."; color:#b2c4d3; }
.communication-page.learning-page { background:#0a1420; }
.communication-page.learning-page::before { display:none; }
.communication-page.learning-page :is(.learning-hero-copy,.signal-console,.learning-panel,.mistake-panel,.next-panel,.faq-panel,.step) { background:#111f2e; box-shadow:none; border-color:#304253; }
.communication-page.learning-page .button-primary { background:#65deed; color:#071a25; }
.communication-page.learning-page .access-note { text-transform:none; letter-spacing:normal; }
.communication-page #cwbot-status { padding-top:12px; color:#b2c4d3; }
@media(max-width:700px) { .communication-page #roomCodeInput { flex-basis:100%; } }
