/* Tara on a phone. PWA-owned presentation; Terminal remains independent. */
.pwa-push-dialog { width: min(520px, calc(100vw - 28px)); max-height: calc(100dvh - 90px); box-sizing: border-box; overflow-y: auto; padding: 22px; border: 1px solid #325069; border-radius: 22px; background: #0a1727; color: #eff6ff; touch-action: pan-y; }
.pwa-push-dialog::backdrop { background: #010711bd; backdrop-filter: blur(8px); }
.pwa-push-dialog header { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.pwa-push-dialog small, .pwa-push-hint { color: #93adc7; font-size: 12px; line-height: 1.5; }
.pwa-push-dialog h2 { font-size: 23px; margin: 6px 0 16px; }
.pwa-push-dialog h3 { font-size: 16px; }
.pwa-push-dialog button { min-height: 44px; border: 1px solid #325069; background: #142b41; color: #c4f3ff; border-radius: 12px; padding: 10px 13px; cursor: pointer; }
.pwa-push-dialog button:disabled { opacity: .45; cursor: default; }
.pwa-push-dialog button:focus-visible { outline: 2px solid #5adfff; outline-offset: 2px; }
.pwa-push-preview { display: flex; align-items: flex-start; gap: 10px; font-size: 14px; line-height: 1.5; }
.pwa-push-preview input { width: 20px; height: 20px; flex-shrink: 0; accent-color: #5adfff; }
.pwa-push-actions { display: flex; gap: 8px; flex-wrap: wrap; margin: 16px 0; }
.pwa-push-dialog .pwa-push-inbox-item { display: block; width: 100%; text-align: left; margin-bottom: 8px; overflow-wrap: anywhere; }
.pwa-push-inbox-item small { display: block; margin-top: 6px; }
.pwa-push-detail { border: 1px solid #325069; border-radius: 14px; padding: 14px; margin: 16px 0; }
.pwa-push-detail p { white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.55; }
:root {
  --bg: #03060d;
  --text: #eff6ff;
  --muted: #8398b9;
  --accent: #5adfff;
  --accent-soft: rgba(90, 223, 255, .22);
  --line: rgba(90, 223, 255, .18);
  --glow: rgba(90, 223, 255, .24);
  --navH: 76px;
  --panel: rgba(7, 14, 28, .82);
}
button, input, textarea, select { font: inherit; }
[hidden] { display: none !important; }
.app { position: fixed; inset: 0; height: auto; min-height: 0; background: radial-gradient(ellipse at 40% 0, #101f35, transparent 58%), linear-gradient(#03060d, #050b16 60%, #02050b); }
.app::before { content: ""; position: absolute; inset: 0; pointer-events: none; background-image: linear-gradient(rgba(90,223,255,.025) 1px, transparent 1px), linear-gradient(90deg, rgba(90,223,255,.025) 1px, transparent 1px); background-size: 48px 48px; }
.hud { max-width: 900px; margin: auto; padding: calc(6px + var(--safe-top)) 12px calc(var(--navH) + var(--safe-bottom) + 12px); gap: 2px; min-height: 0; }
.hud::before, .hud-scanline { display: none; }
/* Even scale(1) traps fixed descendants in the HUD's containing block.
   Fade the phone HUD without transforming it; dock stays at the screen edge. */
.hud, .state-unlocked .hud { transform: none; transition: opacity 300ms ease; }
.layer-dim { background: rgba(0, 3, 10, .28); }
.state-unlocked .layer-dim { background: rgba(0, 3, 10, .1); }
.layer-starfield { opacity: .45; pointer-events: none; }
.hud-top { padding: 0 8px; }
.brand { font-size: 15px; font-weight: 550; letter-spacing: .08em; color: var(--text); text-shadow: none; }
.brand::after { content: " / UNIVERSE"; font-size: 9px; color: var(--muted); letter-spacing: .15em; }
.lock-btn, .settings-btn { border-color: var(--line); background: rgba(7,14,28,.55); box-shadow: none; }
.lock-btn::before { display: none; }
.section-viewport { border: 0; border-radius: 0; background: none; min-height: 0; touch-action: auto; }
.section-page { min-width: 0; padding: 10px 4px 4px; }
.section-home { padding: 0; }
.section-home::before, .section-home::after { display: none; }
.pwa-home-scroll { overflow: auto; overscroll-behavior-y: contain; height: 100%; padding: 0 4px 16px; scrollbar-width: none; touch-action: pan-y; }
.pwa-home-scroll::-webkit-scrollbar { display: none; }
.pwa-presence { position: relative; height: 180px; flex-shrink: 0; text-align: center; touch-action: pan-x; }
.pwa-presence canvas { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.pwa-presence-copy { position: absolute; inset: 42% 0 auto; pointer-events: none; }
.pwa-presence-copy p { font-size: 7px; letter-spacing: .23em; color: #a1b9d6; margin: 0 0 6px; }
.pwa-presence-copy h1 { font-size: 27px; font-weight: 420; letter-spacing: -.045em; margin: 0; color: #f4faff; text-shadow: 0 0 25px #729dcd; }
.pwa-lives-link { position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); min-height: 38px; white-space: nowrap; padding: 8px 16px; border: 0; background: none; color: #a8c6df; font-size: 10px; letter-spacing: .07em; }
.pwa-widget-toolbar { display: flex; align-items: center; justify-content: space-between; min-height: 36px; padding: 0 4px; gap: 6px; }
.pwa-widget-toolbar span, .pwa-home-hint { font-size: 8px; letter-spacing: .13em; color: var(--muted); }
.pwa-widget-toolbar button { min-height: 36px; background: transparent; border: 0; color: var(--muted); font-size: 10px; padding: 8px; }
.pwa-home-hint { text-align: center; margin: 20px 0 4px; letter-spacing: .025em; font-size: 10px; }
.pwa-home-widgets { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px; align-items: stretch; }
.pwa-widget-slot { position: relative; min-width: 0; grid-column: 1 / -1; border-radius: 18px; transition: box-shadow 160ms; }
.pwa-widget-slot[data-widget="weather"], .pwa-widget-slot[data-widget="clock"] { grid-column: auto; }
.pwa-widget-slot > :first-child { width: 100%; height: 100%; margin: 0; padding: 15px; min-width: 0; border-radius: 18px; border: 1px solid var(--line); background: linear-gradient(140deg, rgba(17,34,55,.82), rgba(6,14,28,.9)); color: var(--text); box-shadow: inset 0 1px rgba(199,232,255,.035), 0 8px 22px rgba(0,0,0,.1); }
.pwa-widget-slot > :first-child::before { display: none; }
.pwa-widget-slot.is-lifted { z-index: 5; outline: 1px solid var(--accent); box-shadow: 0 0 28px rgba(90,223,255,.18); transform: scale(1.02); }
.pwa-widget-slot .pwa-reorder { display: none; }
.pwa-home-widgets.is-arranging { touch-action: none; }
.is-arranging .pwa-widget-slot { padding-bottom: 34px; outline: 1px dashed rgba(90,223,255,.35); }
.is-arranging .pwa-reorder { display: flex; position: absolute; bottom: 0; width: 100%; height: 34px; justify-content: space-between; }
.pwa-reorder button { width: 48%; border: 0; border-radius: 8px; color: var(--accent); background: rgba(12,31,50,.9); }
.home-weather-head, .home-control-head, .codex-limits-head, .openai-limits-head { gap: 6px; margin-bottom: 12px; }
.home-weather-label, .home-control-label, .codex-limits-label, .openai-limits-label, .home-clock-label { font-size: 8px; letter-spacing: .14em; color: #99b1cd; }
.home-weather-updated, .home-control-meta, .codex-limits-updated, .openai-limits-updated { font-size: 7px; color: #6e89a6; }
.home-weather-head { flex-wrap: wrap; margin-bottom: 7px; }
.home-weather-main { display: block; text-align: left; }
.home-weather-temp { font-size: 31px; line-height: 1.1; color: #eaf8ff; text-shadow: none; }
.home-weather-summary { color: #93acc8; font-size: 10px; line-height: 1.45; }
.home-weather-city { margin-top: 9px; text-align: left; font-size: 9px; max-width: none; color: var(--accent); }
.pwa-widget-slot .home-clock { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; min-height: 134px; gap: 12px; }
.home-clock-value { font-size: clamp(21px,6vw,29px); letter-spacing: -.02em; font-variant-numeric: tabular-nums; text-shadow: none; }
.pwa-clock-date { font-size: 10px; color: #91abc8; }
.codex-limits-grid { grid-template-columns: repeat(4,minmax(0,1fr)); gap: 6px; }
.codex-limit-tile { border: 0; border-radius: 9px; background: rgba(48,82,119,.14); padding: 10px 6px; min-width: 0; gap: 6px; text-align: left; }
.codex-limit-tile span { font-size: 7px; color: var(--muted); letter-spacing: .04em; }
.codex-limit-tile strong { color: #e5f2ff; font-size: 16px; letter-spacing: -.02em; overflow-wrap: anywhere; }
#codexLimitWeeklyReset { font-size: 10px; line-height: 1.5; white-space: normal; text-overflow: clip; }
.codex-limit-ok strong { color: #81ecc2; }
.codex-limit-danger strong { color: #ff8d9c; }
.codex-limit-warning strong { color: #f8d99a; }
.openai-limits-grid { display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: 10px; }
.openai-limit-tile { grid-column: span 2; padding: 0; border: 0; background: transparent; gap: 4px; }
.openai-limit-tile span { font-size: 7px; color: var(--muted); letter-spacing: .08em; }
.openai-limit-tile strong { font-size: 14px; color: #c9def7; }
.openai-limit-tile.pwa-credit, .openai-limit-tile.pwa-month { grid-column: span 3; padding-bottom: 9px; }
.pwa-credit strong { font-size: 29px; color: #a2f0cf; letter-spacing: -.045em; }
.pwa-month { align-items: flex-end; text-align: right; }
.pwa-month strong { font-size: 21px; }
.pwa-cost-bars { display: flex; height: 44px; gap: 6px; align-items: flex-end; margin-top: 12px; padding-bottom: 12px; }
.pwa-cost-bar { position: relative; flex: 1; min-height: 2px; background: linear-gradient(#6edcff, #335b8d); border-radius: 3px 3px 0 0; }
.pwa-cost-bar span { position: absolute; top: calc(100% + 3px); left: 50%; transform: translateX(-50%); font-size: 6px; color: var(--muted); }
.calendar-widget { min-height: 238px; }
.calendar-header { margin-bottom: 13px; }
.calendar-month { color: #d6eaff; font-size: 15px; text-transform: none; letter-spacing: -.025em; }
.calendar-weekdays { color: #6c8aa8; font-size: 8px; margin-bottom: 8px; }
.calendar-days { row-gap: 4px; }
.calendar-day { min-height: 26px; font-size: 11px; }
.home-control-title { font-size: 17px; color: #dfedff; }
.home-control-summary { color: var(--muted); }
.pwa-page-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 4px; flex-shrink: 0; }
.pwa-page-heading p { margin: 0 0 8px; color: var(--accent); font-size: 8px; letter-spacing: .18em; }
.pwa-page-heading h1 { margin: 0; font-size: 26px; line-height: 1.1; font-weight: 450; letter-spacing: -.04em; }
.pwa-room-heading { padding: 4px 4px 0; gap: 6px; flex-wrap: nowrap; }
.pwa-library-shortcuts { display: flex; align-items: center; gap: 6px; flex-wrap: nowrap; min-width: 0; }
.pwa-room-heading .pwa-signal { flex-shrink: 0; white-space: nowrap; margin-left: auto; }
.pwa-room-heading .pwa-share-link { display: inline-flex; align-items: center; gap: 5px; padding: 6px 10px; border: 1px solid color-mix(in srgb, var(--accent) 30%, transparent); border-radius: 999px; background: color-mix(in srgb, var(--accent) 9%, transparent); color: var(--accent); font-size: 10px; line-height: 1.4; font-weight: 650; letter-spacing: .035em; text-decoration: none; white-space: nowrap; }
.pwa-room-heading .pwa-share-link:hover, .pwa-room-heading .pwa-share-link:focus-visible { background: color-mix(in srgb, var(--accent) 18%, transparent); outline: 1px solid var(--accent); outline-offset: 2px; }
@media (max-width: 360px) {
  .pwa-library-shortcuts { gap: 4px; }
  .pwa-room-heading .pwa-share-link { padding-inline: 4px; letter-spacing: 0; }
}
.pwa-signal { font-size: 9px; color: var(--muted); }
.pwa-signal::before { content: ""; display: inline-block; margin-right: 5px; width: 5px; height: 5px; border-radius: 50%; background: currentColor; }
@media (max-width: 480px) {
  /* Keep the live status text for assistive technology and its synced tooltip. */
  .pwa-room-heading .pwa-signal { font-size: 0; }
  .pwa-room-heading .pwa-signal::before { margin-right: 0; }
}
.pwa-conversations { display: flex; flex-shrink: 0; gap: 7px; overflow: auto; padding: 4px 0 12px; scrollbar-width: none; touch-action: pan-x; }
.pwa-room-heading + .pwa-conversations { padding-top: 0; }
.pwa-conversations button { flex-shrink: 0; min-height: 38px; border-radius: 12px; padding: 8px 13px; border: 1px solid var(--line); color: #98b2ce; background: rgba(9,20,35,.8); font-size: 11px; }
.pwa-conversations button[aria-pressed="true"] { color: #c6f5ff; background: rgba(42,99,125,.25); border-color: #447f9b; }
.pwa-conversations .pwa-google-tab { border-color: #3d7066; color: #a3dac7; }
.pwa-conversations .pwa-google-tab[aria-pressed="true"] { background: linear-gradient(120deg,#163c3b,#183144); border-color: #7acbb0; color: #d5ffec; }
.pwa-google-chat { display: flex; flex-direction: column; flex: 1; min-height: 0; min-width: 0; }
.pwa-google-tools { display: flex; align-items: center; gap: 8px; flex-shrink: 0; padding: 2px 0 8px; }
.pwa-google-tools input { min-width: 0; width: 100%; flex: 1; border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px; background: rgba(12,27,40,.7); color: #d7f0eb; font-size: 16px; outline-offset: 2px; }
.pwa-google-tools input::placeholder { font-size: 12px; color: #819dac; }
.pwa-google-icon { width: 40px; height: 42px; flex-shrink: 0; border: 1px solid var(--line); border-radius: 12px; background: #102333; color: #a3e3d0; font-size: 23px; }
.pwa-google-icon:disabled { opacity: .4; }
.pwa-google-spaces { gap: 6px; align-items: center; padding-bottom: 10px; min-height: 56px; }
.pwa-google-spaces .pwa-google-space { display: flex; align-items: center; gap: 8px; min-height: 44px; padding: 6px 10px 6px 6px; max-width: 220px; border-radius: 24px; }
.pwa-google-space > span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pwa-google-space[aria-pressed="true"] { border-color: #69baa5 !important; background: #193b40 !important; }
.pwa-google-avatar { display: inline-grid; place-items: center; flex-shrink: 0; width: 28px; height: 28px; border-radius: 50%; background: radial-gradient(circle at 25% 15%,#316b69,#163146); border: 1px solid #457879; color: #d0f8e9; font-size: 10px; }
.pwa-google-divider { flex-shrink: 0; color: #7996a6; font-size: 9px; padding: 0 5px; text-transform: uppercase; letter-spacing: .09em; }
.pwa-google-heading { display: flex; gap: 8px; align-items: center; flex-shrink: 0; padding: 4px 3px 8px; border-bottom: 1px solid var(--line); }
.pwa-google-heading h2 { margin: 0; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; font-weight: 500; color: #bfdfdf; }
.pwa-google-heading a { display: grid; place-items: center; width: 40px; height: 38px; color: #99d5c6; text-decoration: none; font-size: 20px; }
.pwa-google-author { display: flex; align-items: center; gap: 7px; min-width: 0; overflow-wrap: anywhere; }
.pwa-google-author .pwa-google-avatar { width: 24px; height: 24px; }
.pwa-google-avatar { overflow: hidden; }
.pwa-google-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pwa-google-footer a { color: #a6e6d7; text-decoration: none; white-space: nowrap; }
.pwa-google-footer { flex-wrap: wrap; }
.pwa-google-message header { align-items: center; }
.pwa-google-message time { flex-shrink: 0; }
.pwa-google-message { max-width: 96%; }
.pwa-google-note { display: block; margin-top: 8px; font-size: 10px; color: #95afbd; overflow-wrap: anywhere; }
.pwa-google-thread { display: block; min-height: 38px; padding: 8px 0 0; border: 0; background: none; color: #8fd7c4; font-size: 10px; text-align: left; }
.pwa-google-welcome { margin: 35px auto; max-width: 220px; padding: 38px 15px; border: 1px solid #294c57; border-radius: 24px; background: radial-gradient(ellipse at 30% 0,rgba(60,126,125,.2),transparent 75%); text-align: center; color: #99bcbf; font-size: 15px; line-height: 1.8; }
.pwa-google-footer { display: flex; justify-content: space-between; gap: 8px; padding: 8px 2px 2px; font-size: 9px; color: #7b9d9d; flex-shrink: 0; }
.pwa-google-footer > :last-child { white-space: nowrap; }
.pwa-room-feed { flex: 1; min-height: 0; overflow: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: #24415b transparent; padding: 0 2px 16px; user-select: text; -webkit-user-select: text; touch-action: pan-y; }
.pwa-message { margin: 14px 0; max-width: 94%; padding: 13px 14px; background: rgba(11,23,40,.86); border: 1px solid rgba(113,167,205,.16); border-radius: 16px 16px 16px 4px; }
.pwa-message.is-human { margin-left: auto; background: rgba(30,64,84,.5); border-color: rgba(106,202,223,.22); border-radius: 16px 16px 4px 16px; }
.pwa-message header { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 8px; color: #8bcadd; font-size: 10px; }
.pwa-message time { color: #6f89a6; font-size: 8px; }
.pwa-message p { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; font-size: 14px; line-height: 1.6; color: #dae7f6; }
.pwa-markdown { font-size: 14px; line-height: 1.6; color: #dae7f6; overflow-wrap: anywhere; min-width: 0; }
.pwa-markdown > * { margin: 10px 0; }
.pwa-markdown > :first-child { margin-top: 0; }
.pwa-markdown > :last-child { margin-bottom: 0; }
.pwa-markdown p { margin: 10px 0; white-space: normal; }
.pwa-markdown strong { font-weight: 750; color: #f0f9ff; }
.pwa-markdown em { font-style: italic; color: #b7dce9; }
.pwa-markdown s { color: #93a7bd; }
.pwa-markdown a { color: #7de0f2; text-decoration: underline; text-underline-offset: 3px; }
.pwa-markdown h3 { font-size: 16px; line-height: 1.4; font-weight: 650; color: #e6f8ff; }
.pwa-markdown h3[data-level="1"] { font-size: 19px; }
.pwa-markdown ul, .pwa-markdown ol { padding-left: 22px; }
.pwa-markdown li { margin: 5px 0; }
.pwa-markdown li::marker, .pwa-markdown-task span { color: #79cddf; }
.pwa-markdown-task { list-style: none; }
.pwa-markdown blockquote { border-left: 2px solid #4d9bb6; padding: 5px 0 5px 12px; color: #9fbdd3; }
.pwa-markdown hr { border: 0; border-top: 1px solid var(--line); }
.pwa-markdown code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .88em; color: #9ee9d3; background: rgba(75,146,154,.13); border-radius: 5px; padding: 2px 5px; }
.pwa-markdown pre { max-width: 100%; overflow: auto; overscroll-behavior: contain; padding: 12px; background: #050e1a; border: 1px solid var(--line); border-radius: 10px; white-space: pre; touch-action: pan-x pan-y; }
.pwa-markdown pre[data-language]:not([data-language=""])::before { content: attr(data-language); display: block; font: 9px -apple-system, sans-serif; color: #6f98b2; margin-bottom: 10px; letter-spacing: .1em; }
.pwa-markdown pre code { background: none; padding: 0; font-size: 12px; border-radius: 0; }
.pwa-markdown-table { max-width: 100%; overflow: auto; overscroll-behavior: contain; border: 1px solid var(--line); border-radius: 10px; touch-action: pan-x pan-y; }
.pwa-markdown table { width: 100%; border-collapse: collapse; font-size: 12px; }
.pwa-markdown th, .pwa-markdown td { min-width: 95px; padding: 8px 10px; border-bottom: 1px solid var(--line); vertical-align: top; }
.pwa-markdown th { background: rgba(70,127,153,.14); color: #bee9f3; font-weight: 600; }
.pwa-markdown tbody tr:last-child td { border-bottom: 0; }
.pwa-day { text-align: center; margin: 20px 0 12px; font-size: 9px; letter-spacing: .08em; color: #748da9; }
.pwa-quiet-button { border: 1px solid var(--line); border-radius: 12px; min-height: 40px; background: rgba(15,33,51,.75); color: #acc8df; padding: 8px 13px; font-size: 11px; }
.pwa-empty { color: var(--muted); font-size: 12px; line-height: 1.7; text-align: center; padding: 30px 18px; }
.pwa-lives { display: flex; position: absolute; inset: 0; flex-direction: column; padding: 12px 6px; background: linear-gradient(rgba(3,9,18,.9),rgba(4,10,20,.95)); animation: pwa-arrive 220ms ease-out; }
.pwa-lives-intro { margin: 4px 4px 20px; font-size: 12px; color: var(--muted); }
.pwa-lives-list { flex: 1; min-height: 0; overflow: auto; touch-action: pan-y; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); align-content: start; gap: 12px; padding: 2px; }
.pwa-life { min-width: 0; position: relative; text-align: left; min-height: 157px; padding: 17px 14px; border: 1px solid rgba(106,165,201,.22); border-radius: 19px; background: radial-gradient(ellipse at 60% 0,rgba(69,113,161,.18),transparent 70%), rgba(9,20,34,.95); color: var(--text); }
.pwa-life-mark { display: block; width: 43px; height: 43px; border: 1px solid var(--life-color,#65cce8); border-radius: 50%; box-shadow: inset 0 0 18px rgba(105,173,238,.17),0 0 15px rgba(98,167,215,.07); margin-bottom: 17px; position: relative; }
.pwa-life-mark::before, .pwa-life-mark::after { content: ""; position: absolute; inset: 7px; border: 1px solid var(--life-color,#65cce8); opacity: .5; border-radius: 35% 65% 50% 50%; transform: rotate(36deg); }
.pwa-life-mark::after { inset: 14px; border-radius: 50%; background: var(--life-color,#65cce8); }
.pwa-life strong { display: block; font-size: 14px; font-weight: 500; overflow-wrap: anywhere; }
.pwa-life small { display: block; margin-top: 6px; font-size: 9px; color: var(--muted); }
.pwa-life[data-state="working"] small { color: #8aedd7; }
.pwa-life[data-state="working"] .pwa-life-mark { animation: pwa-breathe 2.8s ease-in-out infinite; }
.swipe-nav { background: linear-gradient(rgba(7,15,27,.97),#040a13); border: 1px solid var(--line); border-bottom: 0; border-radius: 24px 24px 0 0; left: 0; right: 0; bottom: 0; height: calc(var(--navH) + var(--safe-bottom)); padding: 12px 14px calc(14px + var(--safe-bottom)); box-shadow: 0 -5px 30px rgba(0,0,0,.22); }
/* The Voice key belongs to the dock, not the iPhone's bottom-edge gesture.
   Reserve its own lane so no page label or hit target sits underneath it. */
.swipe-nav { --pwa-voice-lane: 62px; padding-right: calc(14px + var(--pwa-voice-lane) + env(safe-area-inset-right,0px)); touch-action: pan-y; }
/* Dots keep the full dock's center; the carousel still clips before Voice. */
.swipe-nav .page-indicators { width: calc(100% + var(--pwa-voice-lane) + env(safe-area-inset-right,0px)); }
.pwa-voice-launch { position: absolute; z-index: 2; top: 14px; right: calc(14px + env(safe-area-inset-right,0px)); width: 48px; height: 48px; padding: 10px; display: grid; place-items: center; border-radius: 50%; border: 1px solid rgba(113,224,245,.5); color: #c5f7ff; background: radial-gradient(circle at 30% 15%,#285970,#102c42 65%,#0a1a2d); box-shadow: inset 0 1px 1px rgba(208,251,255,.16),0 3px 15px rgba(58,174,210,.14); cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; transition: transform 140ms ease,box-shadow 140ms ease; }
.pwa-voice-launch svg { width: 26px; height: 26px; pointer-events: none; filter: drop-shadow(0 0 4px rgba(104,223,250,.35)); }
.pwa-voice-launch:active:not(:disabled) { transform: scale(.94); box-shadow: inset 0 0 12px rgba(114,233,255,.2); }
.pwa-voice-launch:focus-visible { outline: 2px solid #abf2ff; outline-offset: 3px; }
.pwa-voice-launch:disabled { opacity: .4; cursor: default; }
@media (prefers-reduced-motion: reduce) { .pwa-voice-launch { transition: none; } }
/* Home Screen only: explicit full viewport height instead of iOS's shortened
   percentage/fixed containing block. Anchor the dock inside this full-height
   shell; retain the top background/inset and the bottom Home indicator padding.
   Ordinary browser tabs keep their dynamic fixed viewport. See PWA_PHONE.md. */
html.pwa-standalone, .pwa-standalone body { height: 100vh; }
.pwa-standalone .app { position: absolute; bottom: auto; height: 100vh; }
.pwa-standalone .swipe-nav { position: absolute; }
.pwa-composer { flex-shrink: 0; padding: 10px; margin-top: 4px; border: 1px solid var(--line); border-radius: 18px; background: linear-gradient(140deg,rgba(17,34,55,.95),rgba(6,14,28,.96)); }
.pwa-composer label { display: block; color: #9dbbd4; font-size: 10px; margin: 0 4px 6px; }
.pwa-composer textarea { display: block; width: 100%; resize: none; min-height: 56px; max-height: 140px; padding: 8px 5px; border: 0; outline: 0; background: transparent; color: var(--text); font-size: 16px; line-height: 1.4; user-select: text; -webkit-user-select: text; touch-action: pan-y; }
.pwa-composer textarea:focus-visible { box-shadow: inset 0 -1px #72cde0; }
.pwa-compose-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 8px; }
.pwa-compose-actions button { min-height: 42px; }
.pwa-transfer-controls { display: flex; align-items: stretch; gap: 8px; position: relative; flex: 0 0 auto; }
/* Keep the exact two-button footprint; only their face changes while busy. */
.pwa-transfer-controls.is-transferring > button { visibility: hidden; }
.pwa-transfer-indicator { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; gap: 8px; overflow: hidden; border: 1px solid #4a9eb8; border-radius: 12px; background: linear-gradient(115deg,#15384b,#0d2234); color: #d5faff; font-size: 12px; font-weight: 550; white-space: nowrap; }
.pwa-transfer-spinner { width: 14px; height: 14px; flex: 0 0 14px; border: 2px solid #336278; border-top-color: #a2efff; border-right-color: #a2efff; border-radius: 50%; animation: pwa-transfer-spin 1.2s linear infinite; }
.pwa-transfer-indicator::after { content: ""; position: absolute; height: 2px; bottom: 0; left: 0; width: 40%; background: linear-gradient(90deg,transparent,#80e5ff,transparent); animation: pwa-transfer-sweep 1.8s ease-in-out infinite; }
@keyframes pwa-transfer-spin { to { transform: rotate(360deg); } }
@keyframes pwa-transfer-sweep { from { transform: translateX(-110%); } to { transform: translateX(350%); } }
#pwaSend { margin-left: auto; min-width: 76px; border: 1px solid #3d839b; border-radius: 12px; padding: 8px 15px; color: #dcfaff; background: #174055; font-size: 13px; }
.pwa-composer button:disabled { opacity: .45; }
#pwaComposeStatus { margin: 6px 4px 0; font-size: 10px; line-height: 1.4; color: #8ba9c4; overflow-wrap: anywhere; }
#pwaComposeStatus:empty { display: none; }
/* No routine footer space; retain polite status announcements for assistive tech. */
#pwaComposeStatus.pwa-status-quiet { position: absolute; width: 1px; height: 1px; padding: 0; margin: 0; border: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.pwa-compose-files { display: flex; gap: 6px; max-height: 60px; overflow: auto; touch-action: pan-x; }
.pwa-attachment-chip { display: flex; flex-shrink: 0; max-width: 270px; overflow: hidden; background: #142d43; border: 1px solid var(--line); border-radius: 8px; }
.pwa-attachment-chip button { color: #a6d9e6; background: none; border: 0; padding: 8px; font-size: 10px; }
.pwa-attachment-open { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pwa-attachment-remove { flex-shrink: 0; min-width: 32px; border-left: 1px solid var(--line) !important; }
.pwa-history-attachments { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
.pwa-browser-screenshot { display: block; width: 100%; max-height: 220px; object-fit: contain; border-radius: 8px; margin-bottom: 8px; background: #11131a; }
.pwa-history-image { min-width: 0; min-height: 44px; width: 100%; text-align: left; overflow-wrap: anywhere; color: #a6d9e6; background: #102739; border: 1px solid var(--line); border-radius: 10px; padding: 9px 11px; font: inherit; font-size: 12px; cursor: pointer; }
.pwa-history-image:disabled { color: var(--muted); cursor: default; }
.pwa-history-image:focus-visible { outline: 2px solid #72dfff; outline-offset: 2px; }
.pwa-image-preview { color: var(--text); background: #06111e; border: 1px solid #31576d; border-radius: 18px; padding: 0; width: min(960px,calc(100vw - 16px)); max-width: none; height: calc(100dvh - var(--safe-top) - var(--safe-bottom) - 20px); max-height: calc(100dvh - 20px); overflow: hidden; }
.pwa-image-preview[open] { display: flex; flex-direction: column; }
.pwa-image-preview::backdrop { background: rgba(0,4,10,.9); }
.pwa-image-preview-head { display: flex; gap: 12px; align-items: center; padding: 8px 10px; border-bottom: 1px solid var(--line); }
.pwa-image-preview-head > span { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; }
.pwa-image-preview button { min-width: 44px; min-height: 44px; border: 1px solid var(--line); border-radius: 12px; background: #12293b; color: #c5f4ff; font-size: 20px; }
.pwa-image-preview-stage { display: flex; align-items: center; justify-content: center; flex: 1; min-height: 0; min-width: 0; padding: 8px; overflow: hidden; touch-action: none; overscroll-behavior: contain; user-select: none; -webkit-user-select: none; }
.pwa-image-preview-stage img { width: 100%; height: 100%; object-fit: contain; transform-origin: center; -webkit-user-drag: none; }
.pwa-image-preview-stage.is-zoomed { cursor: grab; }
.pwa-image-preview-stage.is-zoomed:active { cursor: grabbing; }
#pwaImagePreviewFit { flex-shrink: 0; font-size: 12px; }
.pwa-image-preview-stage p { color: var(--muted); font-size: 13px; text-align: center; }
.pwa-image-preview-stage p:empty { display: none; }
.pwa-image-preview-nav { display: flex; justify-content: center; gap: 18px; align-items: center; padding: 8px; border-top: 1px solid var(--line); font-size: 12px; }
.pwa-keyboard .app { position: absolute; top: var(--pwa-visible-top,0px); bottom: auto; height: var(--pwa-visible-height,100dvh); }
.pwa-keyboard .hud { padding-bottom: 8px; }
.pwa-keyboard .swipe-nav { display: none; }
.pwa-keyboard .pwa-page-heading { padding: 4px; }
.pwa-keyboard .pwa-page-heading p { display: none; }
.nav-item { color: #617f9d; font-size: 9px; letter-spacing: .12em; }
.nav-item.is-active { color: #c5f4ff; text-shadow: 0 0 18px rgba(90,223,255,.25); }
.dot { width: 4px; height: 4px; background: #294459; border: none; }
.dot.is-active { background: #79dff7; box-shadow: 0 0 9px rgba(90,223,255,.4); }
.swipe-nav .page-indicators { gap: 7px; }
.section-title { color: #cce5f5; font-size: 10px; font-weight: 500; letter-spacing: .15em; }
.task-item, .project-card, .news-card { border-color: var(--line); }
.home-calendar-panel, .home-weather-panel, .home-control-panel, .openai-limits-panel, .task-modal-panel, .settings-panel { border-color: rgba(90,223,255,.24); background: linear-gradient(150deg,#0c1b2d,#050c17); }
.calendar-days-wrap { min-height: 175px; }
.pwa-error { color: #f1a1af; }
.pwa-storage { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 14px; }
.pwa-storage-target { min-width: 0; }
.pwa-storage-target > div:first-child { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: baseline; justify-content: space-between; }
.pwa-storage-target strong { font-size: 11px; font-weight: 500; }
.pwa-storage-target span { font-size: 8px; color: var(--muted); }
.pwa-storage-track { height: 3px; background: rgba(90,223,255,.12); border-radius: 2px; margin-top: 9px; overflow: hidden; }
.pwa-storage-track i { display: block; height: 100%; background: #6bbeda; }
.pwa-error .pwa-storage-track { background: rgba(241,161,175,.3); }
@keyframes pwa-arrive { from { opacity: 0; transform: translateY(-18px); } to { opacity: 1; transform: none; } }
@keyframes pwa-breathe { 50% { box-shadow: 0 0 24px rgba(96,221,225,.23); } }
@media (min-width: 600px) {
  .pwa-home-widgets { grid-template-columns: repeat(4,minmax(0,1fr)); }
  .pwa-widget-slot { grid-column: span 2; }
  .pwa-lives-list { grid-template-columns: repeat(4,minmax(0,1fr)); }
  .pwa-presence { height: 240px; }
}
@media (max-height: 650px) { .pwa-presence { height: 142px; } }
/* Phone voice: one recipient, a reviewable transcript and a clear Send. */
.pwa-voice-open .swipe-nav { visibility: hidden; pointer-events: none; }
.pwa-voice-open { overflow: clip; }
#voiceDrawerBackdrop { z-index: 70; background: rgba(1,6,14,.65); }
#voiceDrawer { z-index: 71; left: 0; right: 0; bottom: 0; width: min(100%,660px); margin: 0 auto; height: min(76dvh,650px); max-height: calc(100% - var(--safe-top) - 18px); padding: 12px 16px calc(18px + var(--safe-bottom)); border: 1px solid rgba(90,223,255,.26); border-bottom: 0; border-radius: 28px 28px 0 0; background: radial-gradient(ellipse at 85% 0,rgba(34,87,108,.16),transparent 55%),linear-gradient(145deg,#102235,#050e1b 80%); box-shadow: 0 -18px 65px rgba(0,0,0,.35); }
#voiceDrawer::before { display: none; }
#voiceDrawer .voice-drawer-handle { width: 42px; height: 4px; margin: 0; background: #517f94; }
#voiceDrawer .voice-drawer-body { height: auto; margin-top: 10px; }
#voiceDrawer .voice-panel { padding: 0; border: 0; background: none; display: flex; flex-direction: column; gap: 12px; overflow: hidden; border-radius: 0; }
#voiceDrawer .pwa-voice-heading { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-shrink: 0; }
#voiceDrawer .voice-title { font-size: 8px; color: #83b2c8; letter-spacing: .19em; }
#voiceDrawer .pwa-voice-recipient { margin-top: 6px; color: #e4f4ff; font-size: 23px; font-weight: 450; letter-spacing: -.035em; overflow-wrap: anywhere; }
#voiceDrawer .pwa-voice-close { flex-shrink: 0; width: 40px; height: 40px; border: 1px solid rgba(90,223,255,.2); border-radius: 50%; background: #102a3d; color: #b9e7f5; font-size: 23px; }
#voiceDrawer .voice-viz-wrap { flex: 0 0 70px; min-height: 0; border: 0; border-radius: 16px; background: radial-gradient(ellipse,rgba(90,223,255,.08),transparent 75%); }
#voiceDrawer .voice-overlay-core { width: auto; height: auto; flex-direction: row; gap: 12px; }
#voiceDrawer .voice-ring { width: 30px; height: 30px; }
#voiceDrawer .voice-thinking-dots { display: none; }
#voiceDrawer .voice-overlay-label { font-size: 9px; letter-spacing: .14em; }
#voiceDrawer .pwa-voice-state { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 0 3px; }
#voiceDrawer .voice-status { font-size: 12px; letter-spacing: .02em; color: #9ce1ee; }
#pwaVoiceTimer { color: #9bb4cd; font-size: 12px; font-variant-numeric: tabular-nums; }
#voiceDrawer .voice-output { flex: 1; min-height: 70px; overflow: auto; overscroll-behavior: contain; touch-action: pan-y; }
#voiceDrawer .voice-output-card { height: 100%; padding: 13px; border: 1px solid rgba(112,172,202,.18); border-radius: 16px; background: rgba(4,13,25,.52); display: flex; flex-direction: column; gap: 9px; }
#voiceDrawer .voice-output-head { font-size: 8px; letter-spacing: .16em; color: #84aec5; }
#voiceDrawer[data-mode="conversation"] #voiceTranscriptText, #voiceDrawer[data-mode="conversation"] .pwa-voice-legacy-response, #voiceDrawer[data-mode="conversation"] .pwa-voice-legacy-routing { display: none; }
#pwaVoiceTranscript { flex: 1; min-height: 45px; width: 100%; resize: none; border: 0; border-radius: 0; padding: 0 2px; background: transparent; color: #e0effa; font-size: 16px; line-height: 1.55; outline: none; touch-action: pan-y; user-select: text; -webkit-user-select: text; }
#pwaVoiceTranscript::placeholder { color: #708ba5; }
#voiceDrawer .pwa-voice-hint { margin: 0 3px; color: #88a4bb; font-size: 11px; line-height: 1.45; flex-shrink: 0; }
#voiceDrawer .voice-actions { display: grid; grid-template-columns: minmax(0,.8fr) minmax(0,1.4fr); gap: 10px; margin: 0; padding: 5px 0 0; flex-shrink: 0; }
#voiceDrawer .voice-btn { min-height: 49px; padding: 11px 12px; border: 1px solid rgba(90,223,255,.22); background: #102438; color: #c4e4f4; border-radius: 15px; font-size: 12px; letter-spacing: .01em; box-shadow: none; }
#voiceDrawer #voiceSendBtn { background: linear-gradient(135deg,#174357,#143146); border-color: rgba(105,224,248,.4); color: #d2f6ff; }
#voiceDrawer .voice-btn-primary.is-listening { color: #b3edfb; border-color: #59bdd4; background: #143748; }
#voiceDrawer .voice-btn:disabled { opacity: .4; }
#voiceDrawer .voice-error { font-size: 11px; line-height: 1.4; color: #edb4c2; flex-shrink: 0; max-height: 60px; overflow: auto; }
#voiceDrawer .voice-retry-btn { align-self: flex-start; color: #a0e5f4; border-color: #315d74; background: #102b40; border-radius: 9px; padding: 8px 12px; font-size: 11px; }
#voiceDrawer[data-mode="task"] .voice-output { flex: 1 1 auto; }
#voiceDrawer[data-mode="task"] .voice-output-card { height: auto; min-height: 70px; }
#voiceDrawer[data-mode="task"] #pwaVoiceHint { display: none; }
.pwa-standalone #voiceDrawer { position: absolute; }
.pwa-keyboard #voiceDrawer { position: absolute; height: calc(100% - 12px); max-height: calc(100% - 12px); padding-bottom: 16px; }
.pwa-keyboard #voiceDrawer .voice-viz-wrap { display: none; }
.pwa-keyboard #voiceDrawer .pwa-voice-hint { display: none; }
@media (max-height:600px) {
  #voiceDrawer { height: calc(100dvh - var(--safe-top) - 12px); }
  #voiceDrawer .voice-panel { gap: 8px; }
  #voiceDrawer .voice-viz-wrap { flex-basis: 38px; }
}
/* News is its own phone surface: no shared Home/Terminal styling changes. */
/* Focus/scrollIntoView inside the long reader must not horizontally scroll
   the transformed outer page carousel. Only News uses this clip boundary. */
.app[data-section="news"] { overflow: clip; }
.app[data-section="news"] .section-viewport { min-width: 0; overflow: clip; }
.section-news { gap: 10px; }
.section-news .pwa-news-heading { display: flex; align-items: center; justify-content: space-between; padding: 3px 4px 0; flex: 0 0 auto; }
.section-news .pwa-news-eyebrow { font-size: 8px; letter-spacing: .2em; color: #83abc5; }
.section-news .pwa-news-toolbar { display: flex; align-items: stretch; gap: 8px; flex: 0 0 auto; min-width: 0; }
.section-news .pwa-news-refresh { flex: 0 0 46px; display: grid; place-items: center; min-height: 48px; padding: 0; border: 1px solid rgba(90,223,255,.22); border-radius: 16px; background: linear-gradient(145deg,#17374a,#0c2033); color: #9fe7f6; }
.section-news .pwa-news-refresh svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.section-news .pwa-news-refresh.is-loading svg { animation: spin 1.1s linear infinite; }
.section-news .pwa-news-refresh:disabled, .section-news .pwa-news-refresh[inert] { opacity: .5; }
.section-news .pwa-news-categories { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)) minmax(0,1.2fr) minmax(44px,.7fr); min-width: 0; padding: 4px; gap: 4px; flex: 1; border: 1px solid rgba(90,223,255,.12); border-radius: 16px; background: rgba(5,13,25,.6); }
.section-news .pwa-news-categories button { min-width: 0; min-height: 39px; padding: 0 2px; border: 1px solid transparent; border-radius: 12px; background: none; color: #8ca7c0; font-size: 12px; letter-spacing: .03em; transition: background 180ms, color 180ms; }
.section-news .pwa-news-categories button[aria-pressed="true"] { color: #c5f4ff; border-color: rgba(90,223,255,.24); background: linear-gradient(135deg, rgba(46,104,129,.3), rgba(21,47,70,.65)); box-shadow: inset 0 1px rgba(203,246,255,.06); }
.section-news .pwa-news-status { min-height: 14px; padding: 0 5px; color: #859fb9; font-size: 10px; letter-spacing: .025em; }
.section-news .pwa-news-status[data-state="loading"] { color: #9ceaff; }
.section-news .pwa-news-status[data-state="offline"] { color: #e8b0b9; }
.section-news .news-workspace { display: flex; flex-direction: column; gap: 8px; isolation: isolate; }
.section-news .news-subpage-viewport { flex: 1; height: auto !important; border: 0; background: none; border-radius: 18px; overflow: clip; }
.section-news .news-subpage { padding: 0 0 5px; gap: 11px; overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; scrollbar-width: none; touch-action: pan-y; }
.section-news .news-subpage::-webkit-scrollbar { display: none; }
.section-news .news-price-strip { gap: 6px; flex-shrink: 0; margin: 0; }
.section-news .price-tile { text-align: left; padding: 12px 8px 10px; border: 1px solid rgba(90,223,255,.13); border-radius: 15px; background: linear-gradient(145deg, rgba(23,43,64,.78), rgba(6,15,29,.75)); gap: 6px; min-height: 80px; min-width: 0; box-shadow: inset 0 1px rgba(190,234,255,.035); }
.section-news .price-head { font-size: 9px; color: #b7d2e6; letter-spacing: .1em; }
.section-news .price-value { font-size: clamp(11px,3.3vw,15px); font-weight: 550; letter-spacing: -.035em; white-space: nowrap; font-variant-numeric: tabular-nums; }
.section-news .price-change { font-size: 9px; font-variant-numeric: tabular-nums; }
.section-news .price-change.is-down, .section-news .news-market-delta.is-down { color: #eda6b6; }
.section-news .news-list { display: flex; flex-direction: column; flex: 0 0 auto; gap: 10px; transition: opacity 180ms; }
.section-news .news-item { display: block; padding: 0; border: 0; background: none; border-radius: 18px; }
.section-news .pwa-news-card { display: grid; position: relative; grid-template-columns: clamp(70px,22vw,96px) minmax(0,1fr); align-items: center; gap: 12px; width: 100%; min-width: 0; text-align: left; padding: 12px; border: 1px solid rgba(117,165,197,.16); border-radius: 18px; background: linear-gradient(145deg, rgba(19,35,54,.88), rgba(6,15,28,.88)); color: #edf6ff; box-shadow: inset 0 1px rgba(221,243,255,.035); cursor: pointer; }
.section-news .pwa-news-card-content { display: flex; flex-direction: column; gap: 7px; min-width: 0; }
.section-news .pwa-news-thumbnail { --photo-tint: 193; display: grid; place-items: center; align-self: start; position: relative; width: 100%; aspect-ratio: 1; overflow: hidden; isolation: isolate; border: 1px solid hsla(var(--photo-tint),70%,70%,.18); border-radius: 13px; background: radial-gradient(circle at 30% 20%,hsla(var(--photo-tint),80%,65%,.2),transparent 65%),linear-gradient(140deg,#13283b,#071321); }
.section-news .pwa-news-thumbnail[data-category="world"] { --photo-tint: 247; }
.section-news .pwa-news-thumbnail[data-category="bulgaria"] { --photo-tint: 160; }
.section-news .pwa-news-thumbnail[data-category="ai"] { --photo-tint: 280; }
.section-news .pwa-news-thumbnail::before { content: ""; position: absolute; inset: 23% -12%; border: 1px solid hsla(var(--photo-tint),70%,80%,.2); border-radius: 50%; transform: rotate(-38deg); }
.section-news .pwa-news-thumbnail::after { content: ""; position: absolute; inset: -20% 25%; border: 1px solid hsla(var(--photo-tint),70%,80%,.1); border-radius: 50%; transform: rotate(-38deg); }
.section-news .pwa-news-monogram { font-size: 19px; letter-spacing: .06em; font-weight: 450; color: hsla(var(--photo-tint),80%,85%,.8); }
.section-news .pwa-news-thumbnail img { position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 180ms; }
.section-news .pwa-news-thumbnail.has-image img { opacity: 1; }
.section-news .news-item:first-child .pwa-news-card { border-color: rgba(90,223,255,.28); background: radial-gradient(ellipse at 100% 0, rgba(32,122,148,.18), transparent 70%), linear-gradient(145deg, rgba(24,48,70,.93), rgba(8,20,36,.94)); }
.section-news .news-item-meta { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin: 0; color: #879eb7; font-size: 10px; }
.section-news .news-source-pill { padding: 0; background: none; border: 0; border-radius: 0; color: #8cd6e9; text-transform: uppercase; font-size: 9px; letter-spacing: .11em; overflow: hidden; text-overflow: ellipsis; max-width: 80%; }
.section-news .news-item-title { color: #e5f1fc; font-size: 15px; font-weight: 500; letter-spacing: -.015em; line-height: 1.4; -webkit-line-clamp: 3; overflow-wrap: anywhere; }
.section-news .pwa-news-excerpt { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1; overflow: hidden; color: #96adc4; font-size: 11px; line-height: 1.5; overflow-wrap: anywhere; }
.section-news .pwa-news-empty { min-height: 200px; display: flex; flex-direction: column; justify-content: center; gap: 13px; padding: 35px 24px; border: 1px dashed rgba(90,223,255,.16); border-radius: 18px; background: radial-gradient(ellipse at 50% 0, rgba(55,135,168,.12), transparent 70%); text-align: center; }
.section-news .pwa-news-empty strong { color: #d9eefb; font-size: 19px; font-weight: 450; }
.section-news .pwa-news-empty span { color: #96adc4; font-size: 12px; line-height: 1.6; }
.section-news .news-detail-modal, .section-news .news-market-modal { background: #071220; border-radius: 20px; }
.section-news .news-detail-panel, .section-news .news-market-panel { inset: 0; display: flex; flex-direction: column; gap: 16px; padding: 0 19px 22px; border-radius: 20px; border: 1px solid rgba(90,223,255,.24); background: radial-gradient(ellipse at 100% 0, rgba(41,100,128,.15), transparent 55%), linear-gradient(155deg,#101f31,#060f1e); box-shadow: none; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: #23445a transparent; touch-action: pan-y; }
.section-news .news-detail-panel > *, .section-news .news-market-panel > * { flex-shrink: 0; }
.section-news .news-detail-top { position: sticky; top: 0; z-index: 1; padding: 10px 0; background: #101f30; gap: 10px; }
.section-news .news-detail-kicker, .section-news .pwa-news-reader-label { font-size: 9px; letter-spacing: .15em; color: #80cbdc; }
.section-news .news-detail-close { width: 40px; height: 40px; flex: 0 0 auto; border-radius: 50%; background: rgba(14,36,53,.8); border-color: rgba(90,223,255,.2); }
.section-news .news-detail-title { display: block; overflow: visible; -webkit-line-clamp: unset; font-size: 25px; font-weight: 500; line-height: 1.25; letter-spacing: -.03em; overflow-wrap: anywhere; }
.section-news .news-detail-meta { flex-wrap: wrap; gap: 10px; padding-bottom: 15px; border-bottom: 1px solid rgba(90,223,255,.12); }
.section-news .news-detail-image-wrap { min-height: 0; height: auto; border: 0; border-radius: 14px; background: none; }
.section-news .news-detail-image { height: auto; max-height: 260px; object-fit: contain; }
.section-news .news-detail-summary { display: block; overflow: visible; -webkit-line-clamp: unset; color: #c3d4e6; font-size: 15px; line-height: 1.75; white-space: pre-line; overflow-wrap: anywhere; }
.section-news .news-detail-open { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 14px 17px; margin-top: 6px; font-size: 12px; letter-spacing: .025em; color: #bbf2ff; background: rgba(36,88,107,.23); border-color: rgba(90,223,255,.25); border-radius: 14px; }
.section-news .news-market-price { font-size: clamp(30px,9vw,42px); font-weight: 450; letter-spacing: -.04em; }
.section-news .news-market-delta { font-size: 13px; }
.section-news .news-market-tab { min-height: 40px; padding: 0 18px; font-size: 11px; }
.section-news .news-market-tab.is-active { background: rgba(47,104,125,.26); }
.section-news .news-market-canvas-wrap { flex: 1 0 180px; min-height: 180px; border-radius: 16px; border-color: rgba(90,223,255,.15); }
.section-news button:focus-visible, .section-news a:focus-visible { outline: 2px solid #80e6ff; outline-offset: -4px; }
@media (hover:hover) {
  .section-news .pwa-news-card:hover { border-color: rgba(90,223,255,.4); background-color: #142d43; }
}
@media (max-height:650px) {
  .section-news { gap: 6px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
