:root {
    --pulse-bg: #08121b;
    --pulse-panel: rgba(13, 27, 39, 0.92);
    --pulse-panel-soft: rgba(18, 43, 59, 0.84);
    --pulse-ink: #f2fbfe;
    --pulse-muted: #a8c0ca;
    --pulse-line: rgba(141, 221, 242, 0.22);
    --pulse-cyan: #36d7f4;
    --pulse-green: #43cf86;
    --pulse-yellow: #e7c43a;
    --pulse-red: #ec6a59;
    --pulse-shadow: 0 22px 70px rgba(0, 0, 0, 0.34);
}

.skypulse-shell,
.command-shell {
    background:
        linear-gradient(118deg, rgba(54, 215, 244, 0.10), transparent 34%),
        linear-gradient(245deg, rgba(67, 207, 134, 0.08), transparent 38%),
        linear-gradient(150deg, #08121b 0%, #0b1722 52%, #071018 100%);
    color: var(--pulse-ink);
    min-height: calc(100vh - var(--deepwave-nav-height));
    padding: 18px 18px 96px;
}

.skypulse-visual-shell {
    min-height: calc(100vh - var(--deepwave-nav-height));
    overflow: hidden;
    padding: 0 0 74px;
}

.skypulse-frame,
.command-frame {
    margin: 0 auto;
    max-width: 1180px;
}

.skypulse-product-bar,
.command-product-bar {
    align-items: center;
    display: flex;
    gap: 12px;
    justify-content: space-between;
    margin: 0 auto 16px;
}

.product-title {
    display: grid;
    gap: 2px;
}

.product-title strong {
    color: #ffffff;
    font-size: 18px;
    font-weight: 900;
}

.product-title span,
.status-pill,
.panel-label,
.pulse-kicker {
    color: var(--pulse-muted);
    font-size: 12px;
    font-weight: 850;
    letter-spacing: 0;
}

.status-pill {
    align-items: center;
    background: rgba(67, 207, 134, 0.10);
    border: 1px solid rgba(67, 207, 134, 0.26);
    border-radius: 8px;
    color: #bdf6d6;
    display: inline-flex;
    gap: 8px;
    min-height: 34px;
    padding: 7px 10px;
    text-align: right;
}

.status-pill::before {
    background: var(--pulse-green);
    border-radius: 50%;
    content: "";
    height: 8px;
    width: 8px;
}

.pulse-mission {
    background:
        linear-gradient(110deg, rgba(8, 18, 27, 0.24), rgba(8, 18, 27, 0.90)),
        linear-gradient(145deg, #56bfd1 0%, #a9dbe1 45%, #f7fbfb 100%);
    border: 1px solid var(--pulse-line);
    border-radius: 8px;
    box-shadow: var(--pulse-shadow);
    display: grid;
    grid-template-columns: minmax(0, 1fr) 360px;
    min-height: 440px;
    overflow: hidden;
    position: relative;
}

.pulse-mission::before,
.sky-art::before {
    background:
        linear-gradient(148deg, transparent 0 33%, rgba(255, 255, 255, 0.78) 34%, rgba(255, 255, 255, 0.08) 39%, transparent 46%),
        linear-gradient(22deg, transparent 0 46%, rgba(255, 255, 255, 0.66) 47%, rgba(255, 255, 255, 0.10) 51%, transparent 56%),
        radial-gradient(ellipse at 58% 44%, rgba(255, 255, 255, 0.48), transparent 38%);
    content: "";
    inset: 0;
    opacity: 0.76;
    position: absolute;
}

.mission-copy {
    align-self: end;
    padding: 42px;
    position: relative;
    z-index: 1;
}

.pulse-kicker,
.panel-label {
    color: var(--pulse-cyan);
    margin: 0 0 8px;
    text-transform: uppercase;
}

.mission-copy h1,
.capture-copy h1,
.reveal-copy h1,
.replay-panel h1,
.challenge-hero h1,
.command-header h1 {
    color: #ffffff;
    font-size: clamp(32px, 5vw, 58px);
    font-weight: 920;
    letter-spacing: 0;
    line-height: 1;
    margin: 0 0 18px;
    max-width: 760px;
}

.mission-copy p,
.capture-copy p,
.reveal-copy p,
.replay-panel p,
.challenge-hero p,
.command-header p {
    color: #d0e2e8;
    line-height: 1.5;
}

.mission-card {
    align-self: stretch;
    background: rgba(6, 18, 28, 0.70);
    border-left: 1px solid rgba(255, 255, 255, 0.18);
    display: grid;
    gap: 12px;
    padding: 26px;
    position: relative;
    z-index: 1;
}

.mission-stat {
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 8px;
    padding: 14px;
}

.mission-stat span,
.metric span {
    color: #a8c0ca;
    display: block;
    font-size: 12px;
    font-weight: 850;
    margin-bottom: 5px;
    text-transform: uppercase;
}

.mission-stat strong,
.metric strong {
    color: #ffffff;
    display: block;
    font-size: 22px;
    font-weight: 900;
    line-height: 1.1;
}

.primary-action,
.secondary-action {
    align-items: center;
    border-radius: 8px;
    border: 1px solid transparent;
    cursor: pointer;
    display: inline-flex;
    font-size: 15px;
    font-weight: 900;
    justify-content: center;
    min-height: 44px;
    padding: 10px 16px;
    text-decoration: none;
}

.primary-action {
    background: var(--pulse-cyan);
    color: #06121b;
}

.primary-action:hover {
    background: #7deaff;
    color: #06121b;
}

.secondary-action {
    background: rgba(255, 255, 255, 0.06);
    border-color: var(--pulse-line);
    color: #eaf8fb;
}

.secondary-action:hover {
    background: rgba(255, 255, 255, 0.12);
    color: #ffffff;
}

.pulse-metrics,
.pulse-feed,
.challenge-list,
.command-metrics,
.command-grid {
    display: grid;
    gap: 14px;
    margin-top: 16px;
}

.pulse-metrics,
.command-metrics {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.pulse-feed {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.sky-panel,
.sky-card,
.challenge-item,
.command-metric,
.command-section {
    background: var(--pulse-panel);
    border: 1px solid var(--pulse-line);
    border-radius: 8px;
    box-shadow: 0 12px 34px rgba(0, 0, 0, 0.20);
    padding: 18px;
}

.sky-card h2,
.sky-panel h2,
.challenge-item h2,
.command-metric h2,
.command-section h2 {
    color: #ffffff;
    font-size: 20px;
    font-weight: 900;
    line-height: 1.18;
    margin: 0 0 8px;
}

.sky-card p,
.sky-panel p,
.challenge-item p,
.command-metric p,
.command-section p {
    color: var(--pulse-muted);
    margin: 0;
}

.sky-ad-card {
    background: rgba(69, 52, 16, 0.72);
    border-color: rgba(231, 196, 58, 0.30);
}

.xp-meter {
    background: rgba(255, 255, 255, 0.10);
    border-radius: 999px;
    height: 10px;
    overflow: hidden;
    width: 100%;
}

.xp-meter span {
    background: linear-gradient(90deg, var(--pulse-cyan), var(--pulse-green), var(--pulse-yellow));
    display: block;
    height: 100%;
}

.capture-stage,
.reveal-stage,
.replay-layout,
.lookup-stage,
.challenge-hero,
.command-header {
    background: var(--pulse-panel);
    border: 1px solid var(--pulse-line);
    border-radius: 8px;
    box-shadow: var(--pulse-shadow);
    overflow: hidden;
}

.capture-stage,
.reveal-stage {
    display: grid;
    grid-template-columns: minmax(340px, 0.95fr) minmax(360px, 1.05fr);
    min-height: 620px;
}

.sky-art,
.capture-preview,
.reveal-photo {
    background:
        linear-gradient(160deg, rgba(42, 161, 195, 0.82), rgba(139, 204, 209, 0.62) 46%, rgba(246, 251, 251, 0.92)),
        linear-gradient(20deg, rgba(239, 107, 90, 0.12), rgba(67, 207, 134, 0.12));
    min-height: 100%;
    overflow: hidden;
    position: relative;
}

.capture-preview img,
.reveal-photo img {
    display: block;
    height: 100%;
    object-fit: cover;
    width: 100%;
}

.capture-copy,
.reveal-copy,
.replay-panel {
    padding: 32px;
}

.file-picker {
    align-items: center;
    background: rgba(54, 215, 244, 0.10);
    border: 1px dashed rgba(54, 215, 244, 0.45);
    border-radius: 8px;
    color: #eaf8fb;
    cursor: pointer;
    display: flex;
    font-weight: 900;
    justify-content: center;
    margin: 18px 0;
    min-height: 66px;
}

.file-picker input {
    display: none;
}

.field-label {
    color: var(--pulse-muted);
    display: block;
    font-size: 13px;
    font-weight: 850;
    margin: 12px 0 6px;
}

.sky-input {
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid var(--pulse-line);
    border-radius: 8px;
    color: #ffffff;
    font-size: 15px;
    min-height: 44px;
    padding: 11px 12px;
    width: 100%;
}

.sky-input::placeholder {
    color: #7f98a5;
}

.form-status,
.replay-realism-text,
.limitation {
    color: var(--pulse-muted);
    font-size: 13px;
    font-weight: 700;
}

.result-metrics,
.action-row,
.replay-legend,
.mission-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.result-metrics {
    margin: 18px 0;
}

.result-metrics span,
.replay-legend span {
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 8px;
    color: #edf8fb;
    font-size: 13px;
    font-weight: 850;
    padding: 8px 10px;
}

.replay-layout {
    display: grid;
    grid-template-columns: minmax(420px, 1fr) 350px;
    min-height: 690px;
}

.lookup-stage {
    display: grid;
    grid-template-columns: minmax(420px, 1fr) 360px;
    min-height: 680px;
}

.lookup-sky-wrap {
    background:
        linear-gradient(180deg, rgba(38, 141, 186, 0.88) 0%, rgba(112, 187, 205, 0.74) 48%, rgba(219, 232, 226, 0.88) 100%);
    min-height: 680px;
    overflow: hidden;
    position: relative;
}

.lookup-canvas {
    display: block;
    height: 100%;
    min-height: 680px;
    width: 100%;
}

.pulse-sky-stage {
    background: #071018;
    min-height: calc(100vh - var(--deepwave-nav-height) - 74px);
    overflow: hidden;
    position: relative;
}

.pulse-sky-canvas {
    height: calc(100vh - var(--deepwave-nav-height) - 74px);
    min-height: 540px;
}

.pulse-sky-overlay {
    bottom: 92px;
    left: 28px;
    max-width: min(760px, calc(100% - 56px));
    position: absolute;
    text-shadow: 0 2px 24px rgba(3, 12, 18, 0.62);
}

.pulse-sky-overlay h1 {
    color: #ffffff;
    font-size: clamp(32px, 5vw, 66px);
    font-weight: 920;
    letter-spacing: 0;
    line-height: 0.98;
    margin: 0 0 14px;
}

.pulse-sky-overlay p {
    color: #e4f4f6;
    font-size: 16px;
    line-height: 1.45;
    margin: 0 0 16px;
    max-width: 720px;
}

.pulse-sky-strip {
    align-items: center;
    background: rgba(4, 13, 21, 0.72);
    border: 1px solid rgba(205, 238, 247, 0.18);
    border-radius: 8px;
    bottom: 24px;
    color: #eaf8fb;
    display: flex;
    flex-wrap: wrap;
    font-size: 13px;
    font-weight: 850;
    gap: 8px;
    left: 28px;
    max-width: min(940px, calc(100% - 56px));
    padding: 9px 10px;
    position: absolute;
}

.pulse-sky-strip span {
    border-right: 1px solid rgba(255, 255, 255, 0.22);
    padding-right: 8px;
}

.pulse-sky-strip span:last-child {
    border-right: 0;
    padding-right: 0;
}

.pulse-xp-line {
    background: rgba(255, 255, 255, 0.16);
    bottom: 0;
    height: 4px;
    left: 0;
    overflow: hidden;
    position: absolute;
    right: 0;
}

.pulse-xp-line span {
    background: linear-gradient(90deg, var(--pulse-cyan), var(--pulse-green), var(--pulse-yellow));
    display: block;
    height: 100%;
}

.lookup-overlay {
    bottom: 28px;
    left: 28px;
    max-width: min(640px, calc(100% - 56px));
    position: absolute;
    text-shadow: 0 2px 18px rgba(5, 18, 28, 0.52);
}

.lookup-overlay h1 {
    color: #ffffff;
    font-size: clamp(30px, 4.6vw, 56px);
    font-weight: 920;
    line-height: 1;
    margin: 0 0 12px;
}

.lookup-overlay p {
    color: #e4f4f6;
    font-weight: 720;
    margin: 0;
}

.lookup-panel {
    background: rgba(6, 18, 28, 0.82);
    border-left: 1px solid rgba(255, 255, 255, 0.16);
    padding: 28px;
}

.lookup-panel h2 {
    color: #ffffff;
    font-size: 27px;
    font-weight: 900;
    line-height: 1.14;
    margin: 0 0 16px;
}

.lookup-sources {
    display: grid;
    gap: 14px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-top: 16px;
}

.source-card {
    background: var(--pulse-panel);
    border: 1px solid var(--pulse-line);
    border-radius: 8px;
    padding: 16px;
}

.source-card h2 {
    color: #ffffff;
    font-size: 17px;
    font-weight: 900;
    margin: 0 0 8px;
}

.source-card p,
.source-card span {
    color: var(--pulse-muted);
    display: block;
    font-size: 13px;
    line-height: 1.45;
}

.replay-map {
    background: #071018;
    min-height: 690px;
}

.replay-visual-stage {
    background: #06111b;
    min-height: calc(100vh - var(--deepwave-nav-height) - 74px);
    overflow: hidden;
    position: relative;
}

.replay-map-full {
    filter: saturate(0.78) brightness(0.72) contrast(1.08);
    height: calc(100vh - var(--deepwave-nav-height) - 74px);
    min-height: 560px;
    width: 100%;
}

.replay-sky-veil {
    background:
        linear-gradient(180deg, rgba(130, 181, 209, 0.24), rgba(228, 239, 241, 0.16) 44%, rgba(255, 255, 255, 0.05)),
        radial-gradient(ellipse at 56% 17%, rgba(255, 255, 255, 0.20), transparent 42%);
    inset: 0;
    mix-blend-mode: screen;
    pointer-events: none;
    position: absolute;
    z-index: 430;
}

.replay-headline {
    left: 24px;
    max-width: min(690px, calc(100% - 48px));
    position: absolute;
    text-shadow: 0 2px 24px rgba(2, 10, 17, 0.72);
    top: 24px;
    z-index: 720;
}

.replay-headline h1 {
    color: #ffffff;
    font-size: clamp(31px, 5vw, 64px);
    font-weight: 920;
    letter-spacing: 0;
    line-height: 0.98;
    margin: 0 0 10px;
}

.replay-headline p {
    color: #e7f5f8;
    font-size: 14px;
    line-height: 1.45;
    margin: 0;
    max-width: 640px;
}

.replay-glass-panel {
    background: rgba(5, 15, 24, 0.76);
    border: 1px solid rgba(210, 238, 246, 0.20);
    border-radius: 8px;
    bottom: 22px;
    box-shadow: 0 18px 46px rgba(0, 0, 0, 0.34);
    left: 24px;
    max-width: min(680px, calc(100% - 48px));
    padding: 14px;
    position: absolute;
    z-index: 720;
}

.replay-mini-status {
    align-items: baseline;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: space-between;
}

.replay-mini-status strong {
    color: #ffffff;
    font-size: 15px;
    font-weight: 900;
}

.replay-mini-status span {
    color: var(--pulse-muted);
    font-size: 12px;
    font-weight: 850;
}

.timeline-control {
    margin: 22px 0 16px;
}

.timeline-control label {
    color: var(--pulse-muted);
    display: block;
    font-size: 13px;
    font-weight: 850;
    margin-bottom: 8px;
}

.timeline-control input {
    accent-color: var(--pulse-cyan);
    width: 100%;
}

.legend-plane,
.legend-trail,
.legend-capture {
    display: inline-block;
    height: 10px;
    margin-right: 6px;
    width: 18px;
}

.legend-plane {
    background: #f7fbff;
    border: 1px solid rgba(19, 32, 47, 0.35);
}

.legend-trail {
    background: linear-gradient(90deg, rgba(213, 217, 219, 0.55), rgba(255, 255, 255, 0.92));
}

.legend-capture {
    background: var(--pulse-red);
}

.premium-link {
    color: var(--pulse-yellow);
    display: inline-block;
    font-weight: 900;
    margin-top: 18px;
    text-decoration: none;
}

.challenge-hero,
.command-header {
    align-items: center;
    display: flex;
    justify-content: space-between;
    padding: 28px;
}

.challenge-list {
    grid-template-columns: 1fr;
}

.challenge-item {
    align-items: center;
    display: grid;
    gap: 16px;
    grid-template-columns: minmax(0, 1fr) 230px;
}

.challenge-progress span {
    color: var(--pulse-green);
    display: block;
    font-weight: 900;
    margin-bottom: 8px;
}

.command-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.command-section ul {
    color: var(--pulse-muted);
    margin-bottom: 0;
    padding-left: 18px;
}

.command-wide {
    grid-column: 1 / -1;
}

.skypulse-tabs {
    background: rgba(5, 14, 22, 0.94);
    border: 1px solid var(--pulse-line);
    border-radius: 8px 8px 0 0;
    bottom: 0;
    box-shadow: 0 -16px 38px rgba(0, 0, 0, 0.30);
    display: grid;
    gap: 4px;
    grid-template-columns: repeat(7, 1fr);
    left: 50%;
    max-width: 760px;
    padding: 8px;
    position: fixed;
    transform: translateX(-50%);
    width: min(100vw, 760px);
    z-index: 2600;
}

/* SkyPulse mobile app */
.skypulse-phone-shell {
    background: #eef7fa;
    padding-bottom: 82px;
}

.phone-sky-screen {
    background: linear-gradient(180deg, #a7d7ed 0%, #eaf5f6 78%);
    min-height: min(760px, calc(100vh - var(--deepwave-nav-height) - 74px));
    overflow: hidden;
    position: relative;
}

.phone-sky-canvas {
    height: min(760px, calc(100vh - var(--deepwave-nav-height) - 74px));
    min-height: 520px;
}

.phone-app-bar {
    align-items: center;
    color: #102536;
    display: flex;
    font-size: 13px;
    font-weight: 900;
    justify-content: space-between;
    left: 16px;
    position: absolute;
    right: 16px;
    top: 14px;
    z-index: 8;
}

.phone-mini-button {
    background: rgba(255, 255, 255, 0.74);
    border: 1px solid rgba(34, 91, 124, 0.22);
    border-radius: 6px;
    color: #102536;
    font-size: 12px;
    font-weight: 900;
    min-height: 34px;
    padding: 6px 10px;
}

.phone-sky-copy {
    bottom: 136px;
    color: #102536;
    left: 18px;
    max-width: min(620px, calc(100% - 36px));
    position: absolute;
    text-shadow: 0 1px 18px rgba(255, 255, 255, 0.70);
    z-index: 7;
}

.phone-sky-copy h1,
.phone-section-title h2 {
    color: #102536;
    font-weight: 920;
    letter-spacing: 0;
    line-height: 0.98;
    margin: 0;
}

.phone-sky-copy h1 {
    font-size: clamp(38px, 10vw, 76px);
}

.phone-sky-copy p:last-child {
    color: #284457;
    font-size: 15px;
    line-height: 1.42;
    margin: 12px 0 0;
    max-width: 580px;
}

.phone-research-rail {
    align-items: center;
    background: rgba(245, 250, 252, 0.84);
    border: 1px solid rgba(34, 91, 124, 0.18);
    bottom: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    left: 0;
    padding: 12px 16px;
    position: absolute;
    right: 0;
    z-index: 7;
}

.phone-verify-band,
.phone-alert-band {
    background: #f7fbfc;
    border-top: 1px solid rgba(34, 91, 124, 0.14);
    color: #102536;
    display: grid;
    gap: 14px;
    padding: 18px;
}

.phone-section-title {
    display: grid;
    gap: 4px;
    max-width: 780px;
}

.phone-section-title h2 {
    font-size: clamp(27px, 5vw, 42px);
}

.phone-verification-grid {
    display: grid;
    gap: 10px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.phone-verification-metric {
    background: rgba(232, 246, 250, 0.86);
    border: 1px solid rgba(34, 91, 124, 0.16);
    border-radius: 8px;
    display: grid;
    gap: 4px;
    min-height: 96px;
    padding: 12px;
}

.phone-verification-metric span,
.phone-verification-metric small,
.phone-caption-field span {
    color: #496172;
    font-size: 12px;
    font-weight: 850;
}

.phone-verification-metric strong {
    color: #102536;
    font-size: 20px;
    font-weight: 920;
    line-height: 1.05;
}

.phone-camera-stage {
    aspect-ratio: 16 / 9;
    background:
        linear-gradient(180deg, rgba(115, 190, 220, 0.56), rgba(245, 250, 252, 0.94)),
        linear-gradient(135deg, rgba(8, 127, 165, 0.22), rgba(34, 138, 96, 0.12));
    border: 1px solid rgba(34, 91, 124, 0.18);
    border-radius: 8px;
    min-height: 260px;
    overflow: hidden;
    position: relative;
}

.phone-camera-video,
.phone-capture-canvas {
    display: block;
    height: 100%;
    inset: 0;
    object-fit: cover;
    position: absolute;
    width: 100%;
}

.phone-camera-stage.has-capture .phone-camera-video {
    opacity: 0;
}

.phone-camera-placeholder {
    align-items: center;
    color: #284457;
    display: flex;
    font-size: 15px;
    font-weight: 900;
    inset: 0;
    justify-content: center;
    position: absolute;
}

.phone-camera-stage.has-camera .phone-camera-placeholder,
.phone-camera-stage.has-capture .phone-camera-placeholder {
    display: none;
}

.phone-capture-controls,
.phone-alert-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.phone-capture-controls .primary-action,
.phone-capture-controls .secondary-action,
.phone-alert-toolbar .primary-action,
.phone-alert-toolbar .secondary-action {
    min-width: 136px;
}

.phone-caption-field {
    display: grid;
    gap: 6px;
    margin: 0;
    max-width: 620px;
}

.phone-status {
    color: #496172;
    margin: 0;
}

.phone-result-link {
    color: #087fa5;
    font-weight: 900;
    justify-self: start;
    text-decoration: none;
}

.phone-result-link:not([hidden]) {
    border-bottom: 1px solid rgba(8, 127, 165, 0.42);
}

.phone-alert-list {
    display: grid;
    gap: 10px;
}

.phone-alert-item {
    background: rgba(232, 246, 250, 0.76);
    border: 1px solid rgba(34, 91, 124, 0.16);
    border-left: 5px solid #087fa5;
    border-radius: 8px;
    display: grid;
    gap: 6px;
    padding: 13px 14px;
}

.phone-alert-item[data-severity="Extreme"] {
    border-left-color: #b94e42;
}

.phone-alert-item[data-severity="Watch"] {
    border-left-color: #b79012;
}

.phone-alert-item[data-severity="Advisory"] {
    border-left-color: #228a60;
}

.phone-alert-heading {
    align-items: baseline;
    display: flex;
    gap: 10px;
    justify-content: space-between;
}

.phone-alert-heading strong {
    color: #102536;
    font-size: 16px;
    font-weight: 920;
}

.phone-alert-heading span {
    color: #087fa5;
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
}

.phone-alert-item p {
    color: #38546a;
    font-size: 13px;
    line-height: 1.42;
    margin: 0;
}

.phone-alert-signals {
    color: #496172;
    display: flex;
    flex-wrap: wrap;
    font-size: 12px;
    font-weight: 850;
    gap: 8px;
}

.phone-alert-signals span {
    border-bottom: 1px solid rgba(8, 127, 165, 0.24);
}

@media (max-width: 760px) {
    .skypulse-tabs {
        overflow-x: auto;
    }

    .skypulse-tabs a {
        min-width: 92px;
    }

    .phone-sky-screen,
    .phone-sky-canvas {
        min-height: 560px;
    }

    .phone-sky-copy {
        bottom: 142px;
    }

    .phone-verification-grid {
        grid-template-columns: 1fr;
    }

    .phone-verify-band,
    .phone-alert-band {
        padding: 14px 12px;
    }

    .phone-capture-controls .primary-action,
    .phone-capture-controls .secondary-action,
    .phone-alert-toolbar .primary-action,
    .phone-alert-toolbar .secondary-action {
        flex: 1 1 142px;
    }
}

.skypulse-tabs a {
    border-radius: 8px;
    color: var(--pulse-muted);
    font-size: 13px;
    font-weight: 900;
    padding: 10px 6px;
    text-align: center;
    text-decoration: none;
}

.skypulse-tabs a.active,
.skypulse-tabs a:hover {
    background: rgba(54, 215, 244, 0.14);
    color: #ffffff;
}

.replay-map.capture-window {
    outline: 2px solid rgba(239, 107, 90, 0.66);
    outline-offset: -2px;
}

.replay-map.sky-earth-map {
    background: #4b6270;
}

.replay-map.sky-earth-map::after {
    background:
        linear-gradient(180deg, rgba(232, 244, 250, 0.10), rgba(128, 166, 188, 0.07)),
        radial-gradient(circle at 60% 12%, rgba(255,255,255,0.10), rgba(255,255,255,0) 42%);
    content: "";
    inset: 0;
    mix-blend-mode: screen;
    pointer-events: none;
    position: absolute;
    z-index: 395;
}

.sky-replay-route,
.sky-replay-trail,
.sky-replay-cloud-core,
.sky-replay-cloud-spread,
.sky-replay-cloud-highlight {
    filter: drop-shadow(0 0 2px rgba(4, 11, 18, 0.72));
}

.sky-replay-cloud-shadow {
    filter: blur(0.6px);
}

.sky-replay-storm {
    filter: drop-shadow(0 0 2px rgba(3, 12, 20, 0.82));
}

.skyplane-icon {
    --plane-rotate: 0deg;
    --plane-scale: 0.72;
    background: url("/img/plane_icon.png") center / contain no-repeat;
    display: block;
    filter:
        brightness(1.06)
        contrast(1.22)
        saturate(0.88)
        drop-shadow(0 0 1px rgba(255,255,255,0.98))
        drop-shadow(0 0 4px rgba(1,7,12,0.92));
    height: 20px;
    opacity: 0.95;
    transform: rotate(var(--plane-rotate)) scale(var(--plane-scale));
    transform-origin: 50% 50%;
    transition: transform 120ms linear;
    width: 20px;
}

@media (max-width: 900px) {
    .pulse-mission,
    .capture-stage,
    .reveal-stage,
    .replay-layout,
    .lookup-stage,
    .lookup-sources,
    .pulse-metrics,
    .pulse-feed,
    .command-metrics,
    .command-grid {
        grid-template-columns: 1fr;
    }

    .mission-card {
        border-left: 0;
        border-top: 1px solid rgba(255, 255, 255, 0.18);
    }

    .challenge-hero,
    .challenge-item,
    .command-header {
        align-items: stretch;
        display: grid;
        grid-template-columns: 1fr;
    }

    .capture-preview,
    .reveal-photo,
    .replay-map,
    .lookup-sky-wrap,
    .lookup-canvas {
        min-height: 420px;
    }

    .lookup-panel {
        border-left: 0;
        border-top: 1px solid rgba(255, 255, 255, 0.16);
    }
}

@media (max-width: 560px) {
    .skypulse-shell,
    .command-shell {
        padding-left: 10px;
        padding-right: 10px;
    }

    .mission-copy,
    .capture-copy,
    .reveal-copy,
    .replay-panel {
        padding: 24px;
    }

    .pulse-sky-overlay {
        bottom: 124px;
        left: 16px;
        max-width: calc(100% - 32px);
    }

    .pulse-sky-strip {
        bottom: 18px;
        left: 16px;
        max-width: calc(100% - 32px);
    }

    .skypulse-tabs a {
        font-size: 12px;
        padding: 9px 4px;
    }
}

/* 2026 public visual reset: bright sky/map surfaces, flat rails, source-linked metrics. */
:root {
    --pulse-bg: #eef7fa;
    --pulse-panel: rgba(246, 251, 253, 0.82);
    --pulse-panel-soft: rgba(237, 247, 250, 0.78);
    --pulse-ink: #132638;
    --pulse-muted: #496172;
    --pulse-line: rgba(34, 91, 124, 0.22);
    --pulse-cyan: #087fa5;
    --pulse-green: #228a60;
    --pulse-yellow: #b79012;
    --pulse-red: #b94e42;
    --pulse-shadow: none;
}

.skypulse-shell,
.command-shell {
    background: #eef7fa;
    color: var(--pulse-ink);
}

.skypulse-visual-shell {
    background: #eef7fa;
}

.pulse-sky-stage,
.replay-visual-stage {
    background: linear-gradient(180deg, #a9d7ec 0%, #d7edf2 54%, #f3f9f6 100%);
}

.pulse-sky-canvas,
.replay-map-full {
    min-height: calc(100vh - var(--deepwave-nav-height) - 74px);
}

.pulse-sky-overlay,
.replay-headline {
    color: #102536;
    text-shadow: 0 1px 18px rgba(255, 255, 255, 0.58);
}

.pulse-sky-overlay h1,
.replay-headline h1,
.lookup-overlay h1 {
    color: #102536;
}

.pulse-sky-overlay p,
.replay-headline p,
.lookup-overlay p {
    color: #274355;
}

.pulse-kicker,
.panel-label {
    color: #087fa5;
}

.primary-action,
.secondary-action,
.pulse-play-toggle {
    border-radius: 6px;
    box-shadow: none;
}

.primary-action {
    background: #087fa5;
    color: #ffffff;
}

.primary-action:hover {
    background: #0a6d8e;
    color: #ffffff;
}

.secondary-action,
.pulse-play-toggle {
    background: rgba(255, 255, 255, 0.62);
    border-color: rgba(34, 91, 124, 0.26);
    color: #153246;
}

.secondary-action:hover,
.pulse-play-toggle:hover {
    background: rgba(255, 255, 255, 0.86);
    color: #102536;
}

.pulse-sky-strip,
.pulse-playback-rail,
.replay-glass-panel,
.skypulse-tabs {
    background: rgba(245, 250, 252, 0.80);
    border: 1px solid rgba(34, 91, 124, 0.18);
    border-radius: 0;
    box-shadow: none;
    color: #153246;
    backdrop-filter: blur(8px);
}

.pulse-sky-strip {
    bottom: 72px;
}

.pulse-sky-strip span {
    border-right: 0;
    padding-right: 0;
}

.pulse-playback-rail {
    align-items: center;
    bottom: 0;
    display: grid;
    gap: 12px;
    grid-template-columns: auto minmax(180px, 1fr) repeat(3, auto);
    left: 0;
    padding: 12px 18px;
    position: absolute;
    right: 0;
    z-index: 9;
}

.pulse-playback-rail input,
.timeline-control input {
    accent-color: #087fa5;
    width: 100%;
}

.source-chip {
    align-items: center;
    background: transparent;
    border: 0;
    border-bottom: 1px solid rgba(8, 127, 165, 0.42);
    color: #123047;
    cursor: pointer;
    display: inline-flex;
    font: inherit;
    font-size: 12px;
    font-weight: 850;
    gap: 6px;
    line-height: 1.2;
    padding: 3px 0;
    text-align: left;
}

.source-chip:hover {
    color: #087fa5;
}

.source-chip-plain {
    color: #274355;
    max-width: 680px;
}

.source-popover {
    background: rgba(255, 255, 255, 0.96);
    border: 1px solid rgba(34, 91, 124, 0.24);
    color: #162b3d;
    display: none;
    font-size: 12px;
    line-height: 1.42;
    max-width: 290px;
    padding: 10px 12px;
    position: fixed;
    z-index: 4000;
}

.source-popover.is-visible {
    display: grid;
    gap: 4px;
}

.source-popover strong {
    color: #087fa5;
    font-size: 12px;
    text-transform: uppercase;
}

.replay-map-full {
    filter: saturate(0.88) brightness(1.02) contrast(0.98);
}

.replay-sky-veil {
    background:
        linear-gradient(180deg, rgba(173, 211, 230, 0.22), rgba(239, 247, 249, 0.18) 52%, rgba(255, 255, 255, 0.04)),
        radial-gradient(ellipse at 55% 16%, rgba(255, 255, 255, 0.24), transparent 44%);
    mix-blend-mode: screen;
}

.replay-glass-panel {
    bottom: 0;
    display: grid;
    gap: 9px;
    left: 0;
    max-width: none;
    padding: 11px 16px 12px;
    right: 0;
}

.replay-headline {
    max-width: min(760px, calc(100% - 48px));
}

.replay-mini-status strong {
    color: #102536;
}

.replay-mini-status span,
.timeline-control label {
    color: #496172;
}

.replay-legend span,
.result-metrics span {
    background: transparent;
    border: 0;
    border-bottom: 1px solid rgba(8, 127, 165, 0.34);
    border-radius: 0;
    color: #123047;
}

.skypulse-tabs {
    border-bottom: 0;
    color: #153246;
}

.skypulse-tabs a {
    border-radius: 6px;
    color: #496172;
}

.skypulse-tabs a.active,
.skypulse-tabs a:hover {
    background: rgba(8, 127, 165, 0.10);
    color: #102536;
}

.sky-card,
.sky-panel,
.mission-card,
.challenge-item,
.command-metric,
.command-section,
.source-card,
.capture-stage,
.reveal-stage,
.lookup-stage,
.replay-layout,
.challenge-hero,
.command-header {
    box-shadow: none;
}

@media (max-width: 700px) {
    .pulse-playback-rail {
        grid-template-columns: 1fr;
    }

    .pulse-sky-overlay {
        bottom: 170px;
    }

    .pulse-sky-strip {
        bottom: 112px;
    }
}

/* SkyPulse flat public flow */
.capture-match-stage {
    background: #d8ecf4;
    min-height: calc(100vh - var(--deepwave-nav-height) - 74px);
    overflow: hidden;
    position: relative;
}

.sky-match-preview {
    background:
        linear-gradient(180deg, #7fc3df 0%, #c8e4ec 58%, #edf5f2 100%);
    inset: 0;
    min-height: 100%;
    opacity: 1;
    position: absolute;
}

.capture-preview.sky-match-preview,
.capture-preview.sky-match-preview.has-sky-image {
    opacity: 1;
}

.capture-live-sky {
    background:
        radial-gradient(ellipse at 68% 22%, rgba(255, 255, 255, 0.54), transparent 30%),
        linear-gradient(148deg, transparent 0 35%, rgba(255, 255, 255, 0.74) 36%, rgba(255, 255, 255, 0.12) 41%, transparent 48%),
        linear-gradient(28deg, transparent 0 46%, rgba(255, 255, 255, 0.42) 47%, rgba(255, 255, 255, 0.10) 53%, transparent 60%);
    inset: 0;
    position: absolute;
}

.capture-match-rail {
    background: rgba(246, 251, 253, 0.78);
    border: 1px solid rgba(16, 37, 54, 0.16);
    border-radius: 8px;
    box-shadow: 0 18px 58px rgba(9, 28, 42, 0.14);
    color: #102536;
    display: grid;
    gap: 10px;
    left: clamp(12px, 3vw, 34px);
    max-width: min(420px, calc(100vw - 24px));
    padding: 16px;
    position: absolute;
    top: clamp(12px, 3vh, 28px);
    z-index: 8;
}

.capture-rail-title {
    display: grid;
    gap: 2px;
}

.capture-rail-title h1 {
    color: #102536;
    font-size: clamp(28px, 4vw, 46px);
    font-weight: 920;
    line-height: 0.98;
    margin: 0;
}

.capture-match-rail .pulse-kicker {
    color: #087fa5;
    margin: 0;
}

.sky-photo-picker {
    min-height: 48px;
}

.capture-field-row {
    display: grid;
    gap: 5px;
}

.capture-match-rail .field-label {
    color: #284457;
    font-size: 12px;
    margin: 0;
}

.capture-match-rail .sky-input {
    background: rgba(255, 255, 255, 0.82);
    border: 1px solid rgba(34, 91, 124, 0.20);
    border-radius: 6px;
    color: #102536;
    min-height: 38px;
}

.capture-action-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}

.capture-action-row .primary-action,
.capture-action-row .secondary-action {
    min-height: 42px;
}

.capture-policy-chip {
    justify-self: start;
}

.sky-match-scan {
    background:
        linear-gradient(90deg, transparent, rgba(69, 215, 255, 0.34), transparent);
    bottom: 0;
    left: -25%;
    opacity: 0;
    position: absolute;
    top: 0;
    transform: skewX(-14deg);
    width: 22%;
    z-index: 5;
}

.capture-preview.is-scanning .sky-match-scan {
    animation: skyMatchScan 1.5s ease-in-out infinite;
    opacity: 1;
}

.sky-match-timeline,
.sky-match-ribbon {
    align-items: center;
    background: rgba(244, 250, 252, 0.82);
    border: 1px solid rgba(34, 91, 124, 0.16);
    color: #102536;
    display: flex;
    gap: 12px;
    left: clamp(12px, 3vw, 34px);
    position: absolute;
    right: clamp(12px, 3vw, 34px);
    z-index: 8;
}

.sky-match-timeline {
    bottom: 48px;
    padding: 10px 12px;
}

.sky-match-timeline span,
.sky-match-ribbon span,
.sky-match-ribbon a {
    color: #153246;
    font-size: 12px;
    font-weight: 850;
    text-decoration: none;
}

.sky-match-timeline input {
    accent-color: #087fa5;
    flex: 1;
}

.sky-match-ribbon {
    bottom: 0;
    flex-wrap: wrap;
    justify-content: space-between;
    min-height: 48px;
    padding: 10px 12px;
}

.sky-match-ribbon a {
    border-bottom: 1px solid rgba(8, 127, 165, 0.42);
    color: #087fa5;
}

@keyframes skyMatchScan {
    0% {
        left: -28%;
    }

    100% {
        left: 108%;
    }
}

@media (max-width: 720px) {
    .capture-match-stage {
        min-height: calc(100vh - var(--deepwave-nav-height) - 74px);
    }

    .capture-match-rail {
        left: 10px;
        max-width: calc(100vw - 20px);
        padding: 12px;
        right: 10px;
        top: 10px;
    }

    .capture-rail-title h1 {
        font-size: 30px;
    }

    .capture-action-row {
        grid-template-columns: 1fr;
    }

    .sky-match-timeline {
        bottom: 58px;
    }

    .sky-match-ribbon {
        align-items: flex-start;
        display: grid;
        gap: 4px;
    }
}

.capture-visual-stage,
.reveal-visual-stage,
.challenge-visual-stage {
    background: linear-gradient(180deg, #a9d7ec 0%, #d7edf2 54%, #f3f9f6 100%);
    min-height: calc(100vh - var(--deepwave-nav-height) - 74px);
    overflow: hidden;
    position: relative;
}

.capture-sky-backdrop,
.challenge-sky-backdrop {
    background:
        radial-gradient(ellipse at 24% 70%, rgba(255, 255, 255, 0.48), transparent 24%),
        radial-gradient(ellipse at 68% 34%, rgba(255, 255, 255, 0.40), transparent 28%),
        linear-gradient(130deg, transparent 0 26%, rgba(255, 255, 255, 0.30) 34%, transparent 46%),
        linear-gradient(35deg, transparent 0 38%, rgba(255, 255, 255, 0.26) 44%, transparent 56%);
    inset: 0;
    opacity: 0.92;
    position: absolute;
}

.capture-preview,
.reveal-photo-wide {
    border: 0;
    border-radius: 0;
    box-shadow: none;
    inset: 0;
    min-height: 100%;
    opacity: 0.80;
    overflow: hidden;
    position: absolute;
}

.sky-image-composite {
    background: #80c8e3;
}

.sky-image-overlay {
    height: 100%;
    inset: 0;
    pointer-events: none;
    position: absolute;
    width: 100%;
    z-index: 3;
}

.sky-image-composite::after {
    background:
        radial-gradient(ellipse at 72% 18%, rgba(255, 255, 255, 0.18), transparent 34%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.02), rgba(7, 33, 49, 0.08));
    content: "";
    inset: 0;
    pointer-events: none;
    position: absolute;
    z-index: 2;
}

.sky-visual-hud {
    align-items: center;
    background: rgba(7, 25, 35, 0.20);
    border: 1px solid rgba(255, 255, 255, 0.34);
    border-radius: 999px;
    bottom: 84px;
    display: inline-flex;
    gap: 10px;
    padding: 8px 10px;
    position: absolute;
    right: 24px;
    z-index: 6;
}

.sky-hud-glyph {
    border-radius: 999px;
    display: inline-block;
    height: 14px;
    position: relative;
    width: 14px;
}

.sky-hud-flight {
    background: #45d7ff;
    clip-path: polygon(50% 0, 80% 72%, 50% 58%, 20% 72%);
}

.sky-hud-trail {
    background: #ffffff;
    box-shadow: 0 0 14px rgba(255, 255, 255, 0.9);
    height: 3px;
    transform: rotate(-18deg);
    width: 34px;
}

.sky-hud-cloud {
    background: rgba(255, 255, 255, 0.74);
    box-shadow:
        -7px 2px 0 rgba(255, 255, 255, 0.52),
        8px 3px 0 rgba(255, 255, 255, 0.46);
}

.capture-preview.has-sky-image,
.reveal-photo-wide.has-sky-image {
    opacity: 0.96;
}

.capture-preview.is-scanning .sky-image-overlay {
    animation: skyScanPulse 1.8s ease-in-out infinite alternate;
}

.reveal-visual-copy-compact {
    background: rgba(241, 249, 252, 0.18);
    border-left: 1px solid rgba(255, 255, 255, 0.52);
    max-width: min(500px, calc(100vw - 36px));
    padding-left: 18px;
}

.reveal-visual-copy-compact h1 {
    max-width: 480px;
}

@keyframes skyScanPulse {
    from {
        opacity: 0.72;
    }

    to {
        opacity: 1;
    }
}

.capture-preview:empty {
    background:
        linear-gradient(180deg, rgba(50, 127, 174, 0.20), rgba(255, 255, 255, 0.08)),
        radial-gradient(ellipse at 54% 36%, rgba(255, 255, 255, 0.42), transparent 36%);
}

.capture-preview img,
.reveal-photo-wide img {
    height: 100%;
    object-fit: cover;
    width: 100%;
}

.capture-visual-form,
.reveal-visual-copy,
.challenge-visual-copy {
    color: #102536;
    display: grid;
    gap: 12px;
    left: clamp(18px, 5vw, 72px);
    max-width: min(560px, calc(100vw - 36px));
    position: absolute;
    text-shadow: 0 1px 18px rgba(255, 255, 255, 0.72);
    top: clamp(32px, 10vh, 110px);
    z-index: 4;
}

.capture-visual-form h1,
.reveal-visual-copy h1,
.challenge-visual-copy h1 {
    color: #102536;
    font-size: clamp(38px, 6vw, 78px);
    font-weight: 900;
    letter-spacing: 0;
    line-height: 0.96;
    margin: 0;
}

.capture-visual-form p,
.reveal-visual-copy p,
.challenge-visual-copy p {
    color: #274355;
    font-size: 16px;
    line-height: 1.45;
    margin: 0;
}

.capture-visual-form .sky-input {
    background: rgba(255, 255, 255, 0.68);
    border: 1px solid rgba(34, 91, 124, 0.22);
    border-radius: 6px;
    color: #102536;
}

.file-picker {
    background: rgba(255, 255, 255, 0.72);
    border: 1px solid rgba(34, 91, 124, 0.22);
    border-radius: 6px;
    color: #102536;
    box-shadow: none;
}

.reveal-source-strip,
.challenge-badge-rail,
.challenge-mission-rail {
    background: rgba(245, 250, 252, 0.78);
    border: 1px solid rgba(34, 91, 124, 0.16);
    border-radius: 0;
    box-shadow: none;
    z-index: 5;
}

.reveal-source-strip {
    bottom: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 18px;
    left: 0;
    padding: 14px 18px;
    position: absolute;
    right: 0;
}

.challenge-mission-rail {
    bottom: 62px;
    display: grid;
    gap: 0;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    left: 0;
    position: absolute;
    right: 0;
}

.challenge-line {
    background: transparent;
    border-right: 1px solid rgba(34, 91, 124, 0.14);
    display: grid;
    gap: 8px;
    padding: 14px 16px;
}

.challenge-line h2 {
    color: #102536;
    font-size: 18px;
    font-weight: 900;
    margin: 0;
}

.challenge-line p {
    color: #496172;
    font-size: 13px;
    margin: 0;
}

.challenge-badge-rail {
    bottom: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    left: 0;
    padding: 12px 16px;
    position: absolute;
    right: 0;
}

.result-metrics {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

@media (max-width: 900px) {
    .challenge-mission-rail {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 640px) {
    .capture-visual-form,
    .reveal-visual-copy,
    .challenge-visual-copy {
        top: 26px;
    }

    .challenge-mission-rail {
        grid-template-columns: 1fr;
        max-height: 42vh;
        overflow: auto;
    }
}

/* SkyPulse map-first app */
.phone-map-verify-screen {
    background: #d8ecf4;
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(360px, 0.8fr);
    min-height: calc(100vh - var(--deepwave-nav-height) - 74px);
}

.phone-map-panel {
    background: #bfe3f1;
    min-height: calc(100vh - var(--deepwave-nav-height) - 74px);
    overflow: hidden;
    position: relative;
}

.phone-contrail-map {
    background:
        linear-gradient(180deg, #b8e4f6 0%, #d9f1f8 58%, #ecf8fb 100%);
    height: 100%;
    min-height: 560px;
    width: 100%;
}

.phone-contrail-map .leaflet-container,
.phone-contrail-map .leaflet-pane {
    font-family: inherit;
}

.phone-contrail-map .leaflet-control-zoom {
    border: 1px solid rgba(16, 37, 54, 0.16);
    border-radius: 8px;
    box-shadow: 0 14px 34px rgba(10, 31, 45, 0.18);
    overflow: hidden;
}

.phone-contrail-map .leaflet-control-zoom a {
    background: rgba(248, 252, 254, 0.92);
    border: 0;
    color: #102536;
    font-weight: 900;
    height: 34px;
    line-height: 34px;
    width: 34px;
}

.phone-contrail-map .leaflet-control-attribution {
    background: rgba(239, 249, 253, 0.76);
    border-radius: 6px;
    bottom: 50px;
    color: rgba(20, 52, 72, 0.72);
    font-size: 9px;
    line-height: 1.1;
    max-width: 180px;
    padding: 3px 5px;
    position: relative;
}

.phone-contrail-map .leaflet-control-attribution a {
    color: rgba(20, 52, 72, 0.84);
}

.phone-map-research-tiles {
    filter: brightness(0.74) saturate(0.82) contrast(1.12);
}

.phone-map-research-labels {
    filter: saturate(0.72) brightness(1.24) contrast(1.04);
    opacity: 0.76;
}

.leaflet-phoneLiveWeatherPane-pane {
    filter: saturate(1.08) contrast(1.04) brightness(1.03);
}

.phone-live-satellite-tile,
.phone-live-radar-tile {
    backface-visibility: hidden;
    image-rendering: auto;
    transform: scale(1.012);
    transform-origin: center center;
}

.phone-map-panel .phone-app-bar {
    color: #12334a;
    text-shadow: 0 1px 16px rgba(255, 255, 255, 0.70);
}

.phone-map-panel .phone-mini-button {
    backdrop-filter: blur(12px);
    box-shadow: 0 10px 28px rgba(10, 31, 45, 0.16);
}

.phone-map-panel .phone-app-bar,
.phone-map-copy,
.phone-map-tools,
.phone-map-legend,
.phone-map-status {
    z-index: 800;
}

.phone-map-copy {
    bottom: 74px;
    color: #12334a;
    left: 16px;
    max-width: min(260px, calc(100% - 32px));
    position: absolute;
    text-shadow: none;
}

.phone-map-copy .pulse-kicker {
    color: #12334a;
    text-shadow: 0 1px 14px rgba(255, 255, 255, 0.78);
}

.phone-map-copy h1 {
    background: rgba(248, 252, 254, 0.84);
    border: 1px solid rgba(34, 91, 124, 0.16);
    border-radius: 8px;
    color: #102536;
    display: inline-flex;
    font-size: 16px;
    font-weight: 920;
    letter-spacing: 0;
    line-height: 1;
    margin: 0;
    padding: 7px 9px;
}

.phone-map-tools {
    display: flex;
    gap: 8px;
    position: absolute;
    right: 14px;
    top: 58px;
}

.phone-map-legend {
    align-items: center;
    background: rgba(245, 250, 252, 0.84);
    border: 1px solid rgba(34, 91, 124, 0.18);
    bottom: 0;
    color: #102536;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    left: 0;
    padding: 9px 12px;
    position: absolute;
    right: 0;
}

.phone-map-legend span {
    align-items: center;
    display: inline-flex;
    font-size: 11px;
    font-weight: 900;
    gap: 5px;
    line-height: 1;
}

.phone-map-legend i {
    border-radius: 999px;
    display: inline-block;
    height: 9px;
    width: 18px;
}

.legend-cloud-weather {
    background: rgba(8, 127, 165, 0.52);
}

.legend-cloud-state {
    background: rgba(255, 255, 255, 0.82);
    border: 1px solid rgba(8, 127, 165, 0.40);
}

.phone-cloud-marker {
    background: transparent;
    border: 0;
    pointer-events: none;
}

.phone-cloud-glyph {
    display: block;
    filter: drop-shadow(0 7px 12px rgba(16, 82, 115, 0.28));
    height: var(--cloud-h);
    opacity: var(--cloud-opacity);
    position: relative;
    transform: rotate(var(--cloud-angle));
    width: var(--cloud-w);
}

.phone-cloud-glyph::before,
.phone-cloud-glyph::after,
.phone-cloud-puff,
.phone-cloud-streak {
    position: absolute;
}

.phone-cloud-glyph::before {
    background: linear-gradient(90deg, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.72), rgba(255, 255, 255, 0.08));
    border-radius: 999px;
    content: "";
    height: 14%;
    left: 9%;
    top: 58%;
    width: 86%;
}

.phone-cloud-glyph::after {
    background: radial-gradient(ellipse at 50% 50%, rgba(255, 255, 255, 0.44), transparent 68%);
    content: "";
    inset: -26% -10%;
}

.phone-cloud-puff {
    background:
        radial-gradient(circle at 34% 28%, rgba(255, 255, 255, 0.96), rgba(235, 251, 255, 0.82) 52%, rgba(180, 226, 239, 0.24) 75%, transparent 76%);
    border-radius: 999px;
}

.phone-cloud-puff-a {
    height: 62%;
    left: 9%;
    top: 31%;
    width: 36%;
}

.phone-cloud-puff-b {
    height: 82%;
    left: 27%;
    top: 13%;
    width: 42%;
}

.phone-cloud-puff-c {
    height: 58%;
    left: 57%;
    top: 34%;
    width: 33%;
}

.phone-cloud-puff-d {
    height: 36%;
    left: 76%;
    top: 49%;
    width: 20%;
}

.phone-cloud-streak {
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.84), rgba(255, 255, 255, 0.18), transparent);
    border-radius: 999px;
    height: 10%;
    left: 1%;
    top: 67%;
    width: 100%;
}

.phone-cloud-glyph-weather {
    filter: drop-shadow(0 9px 16px rgba(16, 82, 115, 0.26));
}

.phone-cloud-glyph-weather .phone-cloud-puff {
    background:
        radial-gradient(circle at 36% 28%, rgba(219, 252, 255, 0.72), rgba(94, 194, 226, 0.46) 54%, rgba(52, 176, 208, 0.20) 78%, transparent 79%);
}

.phone-cloud-glyph-weather::before {
    background: linear-gradient(90deg, transparent, rgba(84, 214, 130, 0.44), rgba(89, 204, 238, 0.28), transparent);
}

.phone-contrail-map .sky-replay-route {
    filter: drop-shadow(0 0 2px rgba(18, 70, 95, 0.42));
}

.phone-contrail-map .phone-research-trail-halo {
    filter:
        blur(0.2px)
        drop-shadow(0 0 2px rgba(18, 70, 95, 0.46));
}

.phone-contrail-map .phone-research-trail {
    filter:
        drop-shadow(0 0 1px rgba(255, 255, 255, 0.96))
        drop-shadow(0 0 5px rgba(25, 110, 145, 0.58));
}

.phone-contrail-map .phone-research-cloud-shadow,
.phone-contrail-map .phone-research-source-shadow {
    filter: blur(0.85px);
}

.phone-contrail-map .phone-research-cloud-core,
.phone-contrail-map .phone-research-source-core {
    filter:
        drop-shadow(0 0 3px rgba(255, 255, 255, 0.92))
        drop-shadow(0 0 8px rgba(24, 100, 132, 0.34));
}

.phone-contrail-map .phone-research-cloud-spread,
.phone-contrail-map .phone-research-cloud-highlight,
.phone-contrail-map .phone-research-source-spread,
.phone-contrail-map .phone-research-source-highlight {
    filter:
        drop-shadow(0 0 2px rgba(255, 255, 255, 0.78))
        drop-shadow(0 0 5px rgba(34, 120, 148, 0.24));
}

.phone-research-cloud-canvas {
    display: block;
    left: 0;
    mix-blend-mode: normal;
    opacity: 0.96;
    pointer-events: none;
    position: absolute;
    top: 0;
    will-change: transform;
}

.phone-contrail-map .phone-live-trail-halo {
    filter:
        blur(0.15px)
        drop-shadow(0 0 2px rgba(8, 32, 47, 0.56));
}

.phone-contrail-map .phone-live-trail {
    filter:
        drop-shadow(0 0 1px rgba(255, 255, 255, 1))
        drop-shadow(0 0 5px rgba(8, 82, 118, 0.66));
}

.phone-live-aircraft-icon {
    background: transparent;
    border: 0;
}

.phone-live-aircraft-img {
    display: block;
    height: 100%;
    opacity: 1;
    width: 100%;
    filter:
        brightness(1.05)
        contrast(1.38)
        saturate(0.96)
        drop-shadow(0 0 2px rgba(255, 255, 255, 1))
        drop-shadow(0 0 7px rgba(1, 29, 48, 0.88));
    transform-origin: center;
}

.phone-research-plane {
    height: 26px;
    opacity: 1;
    width: 26px;
    filter:
        brightness(1.02)
        contrast(1.38)
        saturate(0.96)
        drop-shadow(0 0 2px rgba(255,255,255,1))
        drop-shadow(0 0 6px rgba(1,29,48,0.86));
}

.legend-track {
    background: #ffffff;
    height: 3px !important;
    transform: rotate(-18deg);
    width: 26px !important;
}

.legend-user {
    background: #087fa5;
    border: 2px solid #ffffff;
    height: 12px !important;
    width: 12px !important;
}

.phone-map-status {
    background: rgba(16, 37, 54, 0.76);
    border: 1px solid rgba(255, 255, 255, 0.24);
    border-radius: 8px;
    color: #ffffff;
    font-size: 12px;
    font-weight: 850;
    left: 14px;
    max-width: calc(100% - 28px);
    padding: 8px 10px;
    position: absolute;
    top: 58px;
}

.phone-map-panel.is-rain-sky .phone-map-status,
.phone-map-panel.is-storm-sky .phone-map-status {
    background: rgba(8, 23, 34, 0.86);
    border-color: rgba(214, 237, 247, 0.32);
    box-shadow: 0 12px 34px rgba(3, 15, 24, 0.22);
}

.phone-map-panel.is-overcast-sky .phone-map-status {
    background: rgba(17, 32, 42, 0.82);
}

.phone-map-panel.is-rain-sky .phone-mini-button,
.phone-map-panel.is-storm-sky .phone-mini-button {
    background: rgba(238, 249, 254, 0.90);
    color: #071d2c;
}

.phone-capture-panel {
    background: #f7fbfc;
    border-left: 1px solid rgba(34, 91, 124, 0.16);
    color: #102536;
    display: grid;
    gap: 12px;
    padding: 16px;
}

.phone-capture-panel .phone-section-title h2,
.phone-alert-band .phone-section-title h2 {
    font-size: clamp(25px, 4vw, 36px);
}

.phone-capture-panel .phone-research-rail {
    background: transparent;
    border: 0;
    padding: 0;
    position: static;
}

.phone-upload-action {
    margin: 0;
    position: relative;
}

.phone-upload-action input {
    display: none;
}

.phone-capture-panel .phone-camera-stage {
    min-height: 220px;
}

.phone-alert-band {
    padding-bottom: 96px;
}

.phone-alert-item {
    grid-template-columns: 1fr;
}

@media (max-width: 980px) {
    .phone-map-verify-screen {
        grid-template-columns: 1fr;
    }

    .phone-map-panel {
        min-height: 56vh;
    }

    .phone-contrail-map {
        min-height: 56vh;
    }

    .phone-capture-panel {
        border-left: 0;
        border-top: 1px solid rgba(34, 91, 124, 0.16);
    }
}

@media (max-width: 560px) {
    .phone-map-copy {
        bottom: 72px;
        left: 12px;
    }

    .phone-map-copy h1 {
        font-size: 16px;
    }

    .phone-map-tools {
        left: 12px;
        right: auto;
        top: 98px;
    }

    .phone-map-status {
        left: 12px;
        right: 12px;
        top: 54px;
    }
}
