:root {
    color-scheme: dark;
    --bg: #08050f;
    --bg-soft: rgba(19, 12, 31, 0.9);
    --panel-top: rgba(28, 18, 44, 0.95);
    --panel-bottom: rgba(11, 8, 19, 0.98);
    --panel-alt: rgba(16, 11, 26, 0.92);
    --stroke: rgba(192, 167, 255, 0.18);
    --stroke-strong: rgba(216, 204, 255, 0.42);
    --text: #faf7ff;
    --text-soft: #dbd2ef;
    --text-faint: #aa9fc7;
    --purple: #c4adff;
    --purple-strong: #8b5cf6;
    --yellow: #facc15;
    --yellow-soft: rgba(250, 204, 21, 0.12);
    --danger: #fda4af;
    --danger-bg: rgba(66, 17, 31, 0.9);
    --good: #86efac;
    --good-bg: rgba(22, 101, 52, 0.18);
    --neutral-bg: rgba(124, 58, 237, 0.14);
    --cyan: #67e8f9;
    --cyan-strong: #22d3ee;
    --sea-bg: rgba(34, 211, 238, 0.12);
    --radius-lg: 24px;
    --radius-md: 18px;
    --radius-sm: 14px;
    --shadow-lg: 0 22px 46px rgba(3, 2, 8, 0.42);
    --shadow-sm: 0 12px 26px rgba(6, 4, 12, 0.24);
}

* {
    box-sizing: border-box;
}

html,
body {
    margin: 0;
    min-height: 100%;
    -webkit-text-size-adjust: 100%;
}

body {
    background:
        radial-gradient(circle at top left, rgba(139, 92, 246, 0.24), transparent 34%),
        radial-gradient(circle at top right, rgba(250, 204, 21, 0.08), transparent 24%),
        radial-gradient(circle at bottom center, rgba(139, 92, 246, 0.09), transparent 30%),
        linear-gradient(180deg, #07040c 0%, #0d0916 52%, #140d21 100%);
    color: var(--text);
    font-family: "Avenir Next", "SF Pro Display", ui-rounded, system-ui, sans-serif;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    overflow-x: hidden;
}

button,
input,
textarea {
    font: inherit;
    -webkit-appearance: none;
    appearance: none;
}

a {
    color: inherit;
    text-decoration: none;
}

button {
    touch-action: manipulation;
}

.appShell {
    width: min(100%, 760px);
    margin: 0 auto;
    padding:
        max(1rem, calc(env(safe-area-inset-top) + 0.86rem))
        0.92rem
        calc(env(safe-area-inset-bottom) + 1.5rem);
}

.topNav,
.heroCard,
.panelCard,
.infoCard {
    border: 1px solid var(--stroke);
    box-shadow: var(--shadow-lg);
}

.topNav,
.heroCard,
.panelCard {
    position: relative;
    overflow: hidden;
    border-radius: var(--radius-lg);
    background:
        linear-gradient(180deg, var(--panel-top), var(--panel-bottom)),
        linear-gradient(135deg, rgba(182, 156, 255, 0.09), rgba(250, 204, 21, 0.05));
}

.topNav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.9rem;
    padding: 0.8rem 0.92rem;
    margin-bottom: 1rem;
    z-index: 10;
    pointer-events: auto;
}

.brandLink {
    display: inline-flex;
    align-items: center;
    gap: 0.72rem;
    min-width: 0;
    position: relative;
    z-index: 1;
}

.brandLogo,
.heroLogo {
    display: block;
    width: auto;
    max-width: 100%;
    object-fit: contain;
    flex-shrink: 0;
    filter: drop-shadow(0 14px 28px rgba(0, 0, 0, 0.28));
}

.miruLogo {
    image-rendering: auto;
}

.brandLogo {
    height: 40px;
}

.heroLogo {
    height: 96px;
}

.heroLogo--home {
    height: 96px;
}

.heroLogo--glow {
    animation: miruFruitGlow 4s ease-in-out infinite;
    will-change: filter;
}

@keyframes miruFruitGlow {
    0%,
    100% {
        filter: drop-shadow(0 14px 28px rgba(0, 0, 0, 0.28)) brightness(1) saturate(1);
    }

    50% {
        filter:
            drop-shadow(0 14px 28px rgba(0, 0, 0, 0.28))
            drop-shadow(0 0 10px rgba(196, 173, 255, 0.16))
            brightness(1.05)
            saturate(1.08);
    }
}

@media (prefers-reduced-motion: reduce) {
    .heroLogo--glow {
        animation: none;
    }
}

.brandWordmark {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    min-width: 0;
}

.brandWordmark strong {
    font-size: 1rem;
    line-height: 1.1;
}

.brandWordmark span {
    color: var(--text-soft);
    font-size: 0.86rem;
    line-height: 1.3;
}

.navLinks {
    display: flex;
    flex-wrap: wrap;
    gap: 0.48rem;
    position: relative;
    z-index: 1;
    pointer-events: auto;
}

.navLink {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.55rem 0.8rem;
    border-radius: 999px;
    border: 1px solid transparent;
    color: var(--text-soft);
    position: relative;
    z-index: 1;
    pointer-events: auto;
    transition: border-color 140ms ease, background-color 140ms ease, color 140ms ease;
}

.navLink.isActive {
    border-color: var(--stroke-strong);
    background: rgba(32, 21, 51, 0.94);
    color: var(--text);
}

.heroCard,
.panelCard {
    animation: panelRise 240ms ease-out both;
}

.heroCard {
    display: grid;
    grid-template-columns: 92px minmax(0, 1fr);
    align-items: center;
    gap: 1rem;
    padding: 1.05rem;
    margin-bottom: 1rem;
}

.heroCard::after {
    content: "";
    position: absolute;
    width: 11rem;
    height: 11rem;
    right: -3.5rem;
    bottom: -5.5rem;
    border-radius: 999px;
    background: radial-gradient(circle, rgba(250, 204, 21, 0.14), transparent 68%);
    pointer-events: none;
}

.heroCard--home {
    grid-template-columns: 104px minmax(0, 1fr);
}

.heroCard--homeAsk {
    grid-template-columns: 1fr;
    justify-items: center;
    text-align: center;
    gap: 0.9rem;
    padding: 1.35rem 1.15rem 1.15rem;
}

.heroCopy,
.sectionCopy {
    position: relative;
    z-index: 1;
}

.heroCopy--homeAsk {
    display: grid;
    justify-items: center;
}

.heroEyebrow,
.sectionEyebrow,
.resultLabel {
    text-transform: uppercase;
    letter-spacing: 0.12em;
    font-size: 0.74rem;
    font-weight: 700;
    color: var(--purple);
}

.heroCopy h1,
.sectionCopy h2,
.infoCard h2 {
    margin: 0.16rem 0 0;
    letter-spacing: -0.04em;
}

.heroCopy h1 {
    font-size: clamp(2rem, 6vw, 2.8rem);
    line-height: 1.02;
}

.heroCopy p,
.sectionCopy p,
.infoCard p,
.fieldHelp,
.fieldExample,
.runNote,
.copyHint,
.resultMeta,
.resultGuide,
.helpList,
.noticeCard p,
.modeHint,
.manualCopyHint {
    color: var(--text-soft);
}

.heroCopy p {
    margin: 0.48rem 0 0;
    line-height: 1.56;
    max-width: 36rem;
}

.heroSupport {
    font-size: 0.96rem;
}

.homeAskCard {
    gap: 1rem;
    max-width: 640px;
    margin-left: auto;
    margin-right: auto;
    padding: 1.2rem;
}

.homeAskIntro {
    display: grid;
    gap: 0.25rem;
    text-align: center;
}

.homeAskFieldBlock {
    gap: 0.55rem;
}

.homeActionRow {
    gap: 0.72rem;
}

.homeExamples {
    display: grid;
    gap: 0.7rem;
    text-align: center;
}

.homeQuickLinks {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.7rem;
}

.homeExamples h2 {
    margin: 0;
    font-size: 1rem;
    line-height: 1.25;
    color: var(--text-soft);
    font-weight: 650;
}

.presetGrid--home {
    gap: 0.7rem;
}

.homeModeInput {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.srOnly {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.heroActions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.68rem;
    margin-top: 1rem;
}

.ctaButton,
.runButton,
.clearButton,
.copyButton,
.utilityButton,
.presetButton,
.modeCard,
.miniRouteCard {
    border-radius: var(--radius-md);
    border: 1px solid var(--stroke);
    transition:
        border-color 140ms ease,
        background-color 140ms ease,
        transform 140ms ease,
        box-shadow 160ms ease,
        opacity 140ms ease;
}

.ctaButton {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 3rem;
    padding: 0.86rem 1rem;
    font-weight: 700;
}

.ctaButton--primary,
.runButton {
    border-color: rgba(216, 204, 255, 0.3);
    background:
        linear-gradient(135deg, rgba(139, 92, 246, 0.86), rgba(76, 29, 149, 0.98)),
        linear-gradient(135deg, rgba(250, 204, 21, 0.08), rgba(255, 255, 255, 0));
    box-shadow: 0 14px 28px rgba(52, 21, 107, 0.34);
}

.ctaButton--secondary,
.clearButton,
.copyButton,
.utilityButton,
.miniRouteCard {
    background: rgba(16, 11, 26, 0.92);
    color: var(--text-soft);
}

.overviewGrid,
.presetGrid,
.formCard,
.modeGrid,
.noticeStack,
.roadmapGrid,
.miniRouteGrid {
    display: grid;
}

.overviewGrid {
    gap: 0.82rem;
    margin-bottom: 1rem;
}

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

.infoCard {
    border-radius: var(--radius-md);
    background:
        linear-gradient(180deg, rgba(23, 15, 37, 0.95), rgba(14, 9, 23, 0.98)),
        linear-gradient(135deg, rgba(182, 156, 255, 0.08), rgba(250, 204, 21, 0.04));
    padding: 0.95rem 1rem;
    box-shadow: var(--shadow-sm);
}

.infoCard h2 {
    font-size: 1.02rem;
    line-height: 1.22;
}

.infoCard p {
    margin: 0.34rem 0 0;
    line-height: 1.52;
}

.panelCard {
    padding: 1rem;
    margin-bottom: 1rem;
}

.compactPanel {
    background:
        linear-gradient(180deg, rgba(22, 14, 35, 0.94), rgba(11, 8, 19, 0.98)),
        linear-gradient(135deg, rgba(182, 156, 255, 0.07), rgba(250, 204, 21, 0.04));
}

.sectionCopy {
    margin-bottom: 0.82rem;
}

.sectionCopy h2 {
    font-size: 1.24rem;
    line-height: 1.16;
}

.sectionCopy p {
    margin: 0.35rem 0 0;
    line-height: 1.52;
}

.miniRouteGrid {
    gap: 0.7rem;
}

.miniRouteCard {
    display: grid;
    gap: 0.25rem;
    padding: 0.92rem 0.96rem;
    box-shadow: var(--shadow-sm);
}

.miniRouteCard strong {
    font-size: 1rem;
    color: var(--text);
}

.miniRouteCard span {
    color: var(--text-soft);
    line-height: 1.46;
}

.presetGrid {
    gap: 0.66rem;
}

.formCard {
    gap: 0.95rem;
}

.presetButton {
    width: 100%;
    padding: 0.94rem 1rem;
    text-align: left;
    font-weight: 650;
    cursor: pointer;
    background: rgba(23, 16, 37, 0.88);
    box-shadow: var(--shadow-sm);
    color: var(--text);
}

.presetButton span {
    display: block;
}

.modeGrid {
    margin: 0;
    padding: 0;
    border: 0;
    gap: 0.65rem;
}

.modeCard {
    display: block;
    cursor: pointer;
    background: rgba(23, 16, 37, 0.84);
}

.modeCard input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.modeBody {
    display: flex;
    flex-direction: column;
    gap: 0.22rem;
    min-height: 92px;
    padding: 0.92rem 0.98rem;
}

.modeBody strong {
    font-size: 1rem;
    line-height: 1.2;
}

.modeBody span {
    color: var(--text-soft);
    line-height: 1.42;
}

.modeCard input:checked + .modeBody {
    background:
        linear-gradient(180deg, rgba(37, 24, 60, 0.98), rgba(19, 12, 31, 0.99)),
        linear-gradient(135deg, rgba(182, 156, 255, 0.1), rgba(250, 204, 21, 0.06));
    border-radius: inherit;
    box-shadow: inset 0 0 0 1px var(--stroke-strong);
}

.modeHint {
    padding: 0.82rem 0.92rem;
    border-radius: var(--radius-md);
    border: 1px solid var(--stroke);
    background: rgba(14, 10, 23, 0.88);
    line-height: 1.5;
}

.modeHint strong {
    display: block;
    margin-bottom: 0.12rem;
    color: var(--text);
}

.modeHintRow {
    margin-top: 0.28rem;
}

.modeHintLabel {
    color: var(--yellow);
    font-weight: 700;
    margin-right: 0.3rem;
}

.fieldBlock {
    display: grid;
    gap: 0.38rem;
}

.fieldHeaderRow {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.7rem;
    flex-wrap: wrap;
}

.fieldBlock label {
    font-weight: 650;
}

.fieldHelp,
.fieldExample,
.runNote,
.copyHint,
.resultMeta,
.resultGuide,
.manualCopyHint {
    margin: 0;
    line-height: 1.45;
}

.fieldExample {
    font-size: 0.92rem;
}

.utilityButton {
    min-height: 2.5rem;
    padding: 0.55rem 0.8rem;
    cursor: pointer;
    font-weight: 650;
}

textarea,
input[type="text"] {
    width: 100%;
    border-radius: var(--radius-md);
    border: 1px solid var(--stroke);
    background: rgba(10, 8, 18, 0.96);
    color: var(--text);
    padding: 0.92rem 0.96rem;
    font-size: 16px;
    outline: none;
    transition: border-color 140ms ease, box-shadow 140ms ease, background-color 140ms ease;
}

textarea {
    min-height: 12rem;
    resize: vertical;
    line-height: 1.52;
}

input::placeholder,
textarea::placeholder {
    color: var(--text-faint);
}

.tipRow {
    display: flex;
    flex-wrap: wrap;
    gap: 0.48rem;
}

.tipPill,
.statusPill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2rem;
    padding: 0.4rem 0.72rem;
    border-radius: 999px;
    font-size: 0.9rem;
    line-height: 1.3;
}

.tipPill {
    border: 1px solid rgba(250, 204, 21, 0.18);
    background: var(--yellow-soft);
    color: var(--text-soft);
}

.actionRow {
    display: grid;
    gap: 0.56rem;
}

.runButton,
.clearButton {
    min-height: 3.05rem;
    width: 100%;
    padding: 0.9rem 1rem;
    font-size: 1rem;
    font-weight: 700;
    cursor: pointer;
    color: var(--text);
}

.runButton:disabled,
.clearButton:disabled {
    opacity: 0.62;
    cursor: not-allowed;
}

.copyRow {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    margin-top: 0.7rem;
    flex-wrap: wrap;
}

.copyButton {
    min-height: 2.85rem;
    padding: 0.78rem 1rem;
    font-weight: 650;
    cursor: pointer;
    color: var(--text);
}

.copyFeedback {
    min-height: 1.4rem;
    color: var(--text-soft);
    font-size: 0.94rem;
    line-height: 1.4;
}

.copyFeedback[data-tone="success"] {
    color: var(--good);
}

.copyFeedback[data-tone="warn"] {
    color: var(--yellow);
}

.copyFeedback[data-tone="error"] {
    color: var(--danger);
}

.statusCard {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 0.9rem;
    align-items: center;
    animation: fadeInPanel 180ms ease-out both;
}

.statusSpinner {
    width: 1.1rem;
    height: 1.1rem;
    border: 2px solid rgba(191, 208, 232, 0.22);
    border-top-color: var(--purple);
    border-radius: 999px;
    animation: spin 0.95s linear infinite;
}

.statusCard strong {
    display: block;
    margin-bottom: 0.2rem;
}

.statusCard p {
    margin: 0;
    line-height: 1.45;
}

.resultCard,
.errorCard {
    animation: fadeInPanel 180ms ease-out both;
}

.resultReadable,
.resultOutput,
.errorOutput {
    margin-top: 0.72rem;
}

.resultReadable {
    width: 100%;
    max-height: min(52vh, 28rem);
    overflow: auto;
    padding: 0.95rem;
    border-radius: var(--radius-md);
    border: 1px solid var(--stroke);
    background: rgba(10, 8, 18, 0.96);
    color: var(--text);
    white-space: pre-wrap;
    word-break: break-word;
    line-height: 1.54;
    font-family: Consolas, "SFMono-Regular", Menlo, monospace;
}

.manualCopyBlock {
    margin-top: 0.82rem;
}

.resultOutput {
    width: 100%;
    min-height: 9rem;
    max-height: 40vh;
    border-radius: var(--radius-md);
    border: 1px solid var(--stroke);
    background: rgba(10, 8, 18, 0.96);
    color: var(--text);
    padding: 0.95rem;
    line-height: 1.48;
    font-family: Consolas, "SFMono-Regular", Menlo, monospace;
    resize: vertical;
    overflow: auto;
}

.errorCard {
    border-color: rgba(248, 113, 113, 0.28);
    background:
        linear-gradient(180deg, rgba(43, 13, 24, 0.92), rgba(24, 9, 16, 0.96)),
        linear-gradient(135deg, rgba(248, 113, 113, 0.1), rgba(127, 29, 29, 0.08));
}

.errorCard .resultLabel {
    color: var(--danger);
}

.errorOutput {
    white-space: pre-wrap;
    word-break: break-word;
    color: #ffe4e8;
    font-family: Consolas, "SFMono-Regular", Menlo, monospace;
    line-height: 1.5;
}

.noticeStack {
    gap: 0.7rem;
    margin-bottom: 1rem;
}

.noticeCard {
    padding: 0.9rem 0.95rem;
    border-radius: var(--radius-md);
    border: 1px solid rgba(248, 113, 113, 0.26);
    background: var(--danger-bg);
}

.noticeCard strong {
    color: var(--danger);
}

.noticeCard p {
    margin: 0.2rem 0 0;
    line-height: 1.45;
}

.helpList,
.featureList,
.roadmapList {
    margin: 0.2rem 0 0;
    padding-left: 1.15rem;
    display: grid;
    gap: 0.45rem;
    line-height: 1.5;
}

.featureList {
    color: var(--text-soft);
    margin-bottom: 1rem;
}

.trainingProgressCard {
    background:
        linear-gradient(180deg, rgba(20, 13, 31, 0.96), rgba(11, 8, 18, 0.99)),
        linear-gradient(135deg, rgba(182, 156, 255, 0.1), rgba(250, 204, 21, 0.05));
}

.trainingProgressIntro {
    display: grid;
    gap: 1rem;
    align-items: end;
    margin-bottom: 1rem;
}

.trainingProgressMeta {
    display: grid;
    gap: 0.35rem;
    padding: 1rem;
    border-radius: var(--radius-md);
    border: 1px solid rgba(216, 204, 255, 0.18);
    background: rgba(17, 12, 27, 0.86);
    box-shadow: var(--shadow-sm);
}

.trainingProgressMeta p,
.trainingProgressNote,
.trainingStatCard p,
.trainingRingCopy p,
.trainingStage p {
    margin: 0;
    color: var(--text-soft);
    line-height: 1.45;
}

.trainingProgressPercent {
    font-size: clamp(2.2rem, 7vw, 3.6rem);
    line-height: 0.95;
    font-weight: 800;
    color: var(--text);
}

.trainingProgressBar {
    width: 100%;
    height: 1rem;
    border-radius: 999px;
    overflow: hidden;
    border: 1px solid rgba(216, 204, 255, 0.18);
    background: rgba(11, 8, 18, 0.94);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
}

.trainingProgressBar span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background:
        linear-gradient(90deg, rgba(196, 173, 255, 0.94), rgba(139, 92, 246, 0.98) 65%, rgba(250, 204, 21, 0.88));
    box-shadow: 0 0 18px rgba(139, 92, 246, 0.24);
}

.trainingProgressNote {
    margin-top: 0.7rem;
}

.trainingStatGrid,
.trainingRingGrid,
.trainingStageRow {
    display: grid;
    gap: 0.78rem;
}

.trainingStatGrid {
    margin-top: 1rem;
}

.trainingStatCard,
.trainingRingCard,
.trainingStage {
    border: 1px solid rgba(192, 167, 255, 0.14);
    border-radius: var(--radius-md);
    background: rgba(17, 12, 27, 0.88);
    box-shadow: var(--shadow-sm);
}

.trainingStatCard {
    padding: 0.95rem 1rem;
}

.trainingStatLabel,
.trainingStageState {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    min-height: 1.9rem;
    padding: 0.2rem 0.65rem;
    border-radius: 999px;
    border: 1px solid rgba(216, 204, 255, 0.14);
    background: rgba(124, 58, 237, 0.14);
    color: var(--purple);
    font-size: 0.83rem;
    line-height: 1.2;
    letter-spacing: 0.01em;
}

.trainingStatCard strong {
    display: block;
    margin-top: 0.72rem;
    font-size: 1.8rem;
    line-height: 1;
}

.trainingRingGrid {
    margin-top: 1rem;
}

.trainingRingCard {
    display: grid;
    gap: 1rem;
    padding: 1rem;
    align-items: center;
}

.trainingRing {
    --ring-progress: 0%;
    width: 132px;
    height: 132px;
    border-radius: 50%;
    background:
        conic-gradient(from -90deg, rgba(196, 173, 255, 0.96) 0 var(--ring-progress), rgba(250, 204, 21, 0.9) var(--ring-progress), rgba(30, 20, 44, 0.96) 0);
    display: grid;
    place-items: center;
    margin: 0 auto;
    box-shadow: inset 0 0 0 1px rgba(216, 204, 255, 0.08), 0 14px 24px rgba(8, 5, 15, 0.18);
}

.trainingRingInner {
    width: 96px;
    height: 96px;
    border-radius: 50%;
    background: linear-gradient(180deg, rgba(17, 12, 27, 0.98), rgba(10, 8, 18, 0.98));
    border: 1px solid rgba(216, 204, 255, 0.12);
    display: grid;
    place-items: center;
    text-align: center;
    padding: 0.6rem;
}

.trainingRingInner strong {
    display: block;
    font-size: 1.15rem;
    line-height: 1;
}

.trainingRingInner span {
    display: block;
    margin-top: 0.28rem;
    font-size: 0.78rem;
    line-height: 1.3;
    color: var(--text-soft);
}

.trainingRingCopy h3,
.trainingStage h3 {
    margin: 0;
    font-size: 1rem;
    line-height: 1.25;
}

.trainingRingCopy span {
    display: inline-block;
    margin-top: 0.6rem;
    color: var(--yellow);
    font-weight: 700;
}

.trainingStageRow {
    margin-top: 1rem;
}

.trainingStage {
    padding: 0.9rem 0.95rem;
}

.trainingStage h3 {
    margin-top: 0.7rem;
}

.trainingStage p {
    margin-top: 0.48rem;
}

.trainingStage--complete {
    border-color: rgba(134, 239, 172, 0.26);
}

.trainingStage--complete .trainingStageState {
    background: rgba(22, 101, 52, 0.18);
    color: var(--good);
}

.trainingStage--active {
    border-color: rgba(250, 204, 21, 0.28);
    box-shadow: 0 18px 34px rgba(58, 35, 8, 0.16);
}

.trainingStage--active .trainingStageState {
    background: rgba(120, 53, 15, 0.22);
    color: var(--yellow);
}

.trainingStage--upcoming .trainingStageState {
    background: rgba(124, 58, 237, 0.12);
    color: var(--text-faint);
}

.intelligenceProgressCard {
    margin-top: 1rem;
    background:
        linear-gradient(180deg, rgba(16, 13, 27, 0.97), rgba(9, 8, 17, 0.99)),
        linear-gradient(135deg, rgba(34, 211, 238, 0.06), rgba(139, 92, 246, 0.1), rgba(250, 204, 21, 0.05));
}

.intelligenceProgressIntro,
.intelligenceListGrid,
.intelligenceStageGrid {
    display: grid;
    gap: 0.85rem;
}

.intelligenceStageHero {
    display: grid;
    gap: 0.45rem;
    padding: 1rem;
    border-radius: var(--radius-md);
    border: 1px solid rgba(216, 204, 255, 0.18);
    background: rgba(17, 12, 27, 0.86);
    box-shadow: var(--shadow-sm);
}

.intelligenceStageHero strong {
    font-size: 1.25rem;
    line-height: 1.2;
}

.intelligenceStageHero p,
.intelligenceVoyageArc {
    margin: 0;
    color: var(--text-soft);
    line-height: 1.45;
}

.intelligenceMeaningCard,
.intelligenceSummaryGrid,
.intelligenceListGrid,
.intelligenceStageGrid {
    margin-top: 1rem;
}

.intelligenceVoyageStrip {
    margin-top: 1rem;
    padding: 1rem;
    border-radius: var(--radius-md);
    border: 1px solid rgba(192, 167, 255, 0.14);
    background:
        linear-gradient(180deg, rgba(14, 16, 28, 0.95), rgba(10, 11, 20, 0.98)),
        linear-gradient(135deg, rgba(34, 211, 238, 0.08), rgba(139, 92, 246, 0.08));
    box-shadow: var(--shadow-sm);
}

.intelligenceVoyageStripHeader h3 {
    margin: 0.68rem 0 0;
    font-size: 1rem;
    line-height: 1.25;
}

.intelligenceVoyageStripHeader p {
    margin: 0.45rem 0 0;
    color: var(--text-soft);
    line-height: 1.45;
}

.intelligenceVoyageTrack {
    display: grid;
    gap: 0.72rem;
    margin-top: 0.95rem;
}

.intelligenceVoyageNode {
    position: relative;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 0.75rem;
    align-items: center;
    padding: 0.85rem 0.9rem;
    border-radius: var(--radius-md);
    border: 1px solid rgba(216, 204, 255, 0.12);
    background: rgba(16, 13, 25, 0.84);
    overflow: hidden;
}

.intelligenceVoyageNode::after {
    content: "";
    position: absolute;
    left: 1.65rem;
    bottom: -0.72rem;
    width: 2px;
    height: 0.72rem;
    background: linear-gradient(180deg, rgba(196, 173, 255, 0.34), rgba(196, 173, 255, 0));
}

.intelligenceVoyageNode:last-child::after {
    display: none;
}

.intelligenceVoyageNodeMarker {
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    border-radius: 50%;
    border: 1px solid rgba(216, 204, 255, 0.16);
    background: rgba(27, 20, 41, 0.95);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
    flex-shrink: 0;
}

.intelligenceVoyageNodeMarker img {
    width: 28px;
    height: 28px;
    object-fit: contain;
    filter: drop-shadow(0 8px 16px rgba(8, 10, 18, 0.42));
}

.intelligenceVoyageNodeCopy {
    min-width: 0;
}

.intelligenceVoyageNodeCopy strong {
    display: block;
    margin-top: 0.6rem;
    font-size: 1rem;
    line-height: 1.2;
}

.intelligenceVoyageNodeCopy p {
    margin: 0.35rem 0 0;
    color: var(--text-soft);
    line-height: 1.4;
}

.intelligenceVoyageNode--complete {
    border-color: rgba(134, 239, 172, 0.2);
    background: linear-gradient(180deg, rgba(14, 23, 18, 0.6), rgba(14, 16, 24, 0.9));
}

.intelligenceVoyageNode--complete .trainingStageState {
    background: rgba(22, 101, 52, 0.18);
    color: var(--good);
}

.intelligenceVoyageNode--complete .intelligenceVoyageNodeMarker {
    border-color: rgba(134, 239, 172, 0.22);
    background: rgba(17, 37, 27, 0.92);
}

.intelligenceVoyageNode--active {
    border-color: rgba(250, 204, 21, 0.34);
    background:
        radial-gradient(circle at top right, rgba(250, 204, 21, 0.12), transparent 36%),
        linear-gradient(180deg, rgba(39, 24, 7, 0.55), rgba(17, 13, 25, 0.94));
    box-shadow: 0 18px 34px rgba(58, 35, 8, 0.2);
}

.intelligenceVoyageNode--active .trainingStageState {
    background: rgba(120, 53, 15, 0.22);
    color: var(--yellow);
}

.intelligenceVoyageNode--active .intelligenceVoyageNodeMarker {
    border-color: rgba(250, 204, 21, 0.3);
    background: rgba(46, 28, 6, 0.92);
}

.intelligenceVoyageNode--upcoming {
    opacity: 0.82;
    background: linear-gradient(180deg, rgba(14, 13, 23, 0.86), rgba(11, 10, 19, 0.95));
}

.intelligenceVoyageNode--upcoming .trainingStageState {
    background: rgba(124, 58, 237, 0.12);
    color: var(--text-faint);
}

.intelligenceVoyageNode--upcoming .intelligenceVoyageNodeMarker {
    border-color: rgba(124, 58, 237, 0.16);
    background: rgba(20, 16, 31, 0.92);
}

.intelligenceListGrid .trainingStage {
    min-height: 100%;
}

.intelligenceListGrid .roadmapList {
    margin-top: 0.8rem;
}

.intelligenceStageGrid .trainingStage h3 {
    margin-top: 0.7rem;
}

.intelligenceStageGrid .trainingStage .intelligenceVoyageArc {
    margin-top: 0.55rem;
    color: var(--yellow);
}

.voyagePanel,
.devVoyagePanel {
    background:
        linear-gradient(180deg, rgba(18, 16, 31, 0.97), rgba(8, 10, 18, 0.99)),
        linear-gradient(135deg, rgba(34, 211, 238, 0.08), rgba(139, 92, 246, 0.1), rgba(250, 204, 21, 0.05));
}

.voyageHeader,
.voyageScene,
.voyageFocusGrid,
.voyageRouteStrip,
.devVoyageHero,
.devVoyageStatGrid,
.devVoyageSupportGrid {
    display: grid;
    gap: 0.85rem;
}

.voyageSummaryCard,
.voyageShipCard,
.voyageFocusCard,
.voyageProgressCard,
.voyageLogCard,
.devVoyageStatCard,
.voyageBossCard,
.voyageCelebrationCard {
    border: 1px solid rgba(192, 167, 255, 0.14);
    border-radius: var(--radius-md);
    background: rgba(15, 14, 26, 0.9);
    box-shadow: var(--shadow-sm);
}

.voyageSummaryCard,
.voyageShipCard,
.voyageProgressCard,
.voyageLogCard,
.devVoyageStatCard,
.voyageBossCard,
.voyageCelebrationCard {
    padding: 0.95rem 1rem;
}

.voyageSummaryEyebrow,
.voyageStatLabel {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    min-height: 1.8rem;
    padding: 0.18rem 0.64rem;
    border-radius: 999px;
    border: 1px solid rgba(103, 232, 249, 0.18);
    background: rgba(34, 211, 238, 0.12);
    color: var(--cyan);
    font-size: 0.8rem;
    font-weight: 700;
}

.voyageSummaryCard strong,
.voyageShipCopy strong,
.voyageFocusCard strong,
.voyageProgressHead strong,
.voyageLogHeader strong,
.devVoyageHeadline strong,
.devVoyageStatCard strong,
.voyageBossCard strong,
.voyageCelebrationBody strong {
    display: block;
    margin-top: 0.62rem;
    font-size: 1.15rem;
    line-height: 1.15;
}

.voyageSummaryCard p,
.voyageShipCopy p,
.voyageFocusCard p,
.voyageProgressCard p,
.voyageLogEntry span,
.devVoyageHeadline p,
.devVoyageStatCard p,
.voyageBossCard p,
.voyageCelebrationBody p {
    margin: 0.45rem 0 0;
    color: var(--text-soft);
    line-height: 1.45;
}

.voyageScene {
    margin-top: 1rem;
}

.voyageShipCard {
    display: grid;
    gap: 0.9rem;
    align-items: center;
}

.voyageShipVisual {
    position: relative;
    min-height: 140px;
    border-radius: var(--radius-md);
    overflow: hidden;
    background:
        radial-gradient(circle at top left, rgba(103, 232, 249, 0.12), transparent 34%),
        linear-gradient(180deg, rgba(7, 16, 35, 0.98), rgba(11, 18, 33, 0.95) 56%, rgba(8, 10, 18, 0.98));
}

.voyageShipSprite,
.voyageWakeSprite,
.voyageFocusSprite,
.voyageRouteMarker,
.voyageRouteIsland,
.voyageLogEntry img,
.devVoyageIslandSprite,
.devVoyageShipSprite,
.devVoyageTravelSprite,
.devVoyageWakeSprite,
.devVoyageSpark,
.voyageBossAlert,
.voyageBossSprite,
.voyageCelebrationEffect,
.voyageCelebrationSprite,
.voyageLogIcon {
    display: block;
    user-select: none;
}

.voyageShipSprite {
    position: absolute;
    left: 50%;
    bottom: 2.5rem;
    width: min(180px, 68%);
    transform: translateX(-50%);
    animation: voyageShipBob 3.6s ease-in-out infinite;
}

.voyageWakeSprite {
    position: absolute;
    opacity: 0.85;
    filter: drop-shadow(0 8px 16px rgba(34, 211, 238, 0.16));
}

.voyageWakeSprite--primary {
    left: 12%;
    bottom: 0.95rem;
    width: 42%;
    animation: voyageWakeDrift 4s ease-in-out infinite;
}

.voyageWakeSprite--secondary {
    right: 10%;
    bottom: 0.4rem;
    width: 34%;
    animation: voyageWakeDrift 4.8s ease-in-out infinite reverse;
}

.voyageFocusGrid {
    align-items: stretch;
}

.voyageFocusCard {
    padding: 0.9rem 0.95rem;
}

.voyageFocusBody,
.voyageLogHeader,
.voyageBossCardHeader,
.voyageBossCardBody,
.voyageCelebrationBody {
    display: flex;
    align-items: center;
    gap: 0.85rem;
}

.voyageFocusBody {
    margin-top: 0.75rem;
}

.voyageFocusSprite {
    width: 72px;
    height: 72px;
    object-fit: contain;
    filter: drop-shadow(0 12px 20px rgba(8, 12, 22, 0.38));
}

.voyageFocusSprite--boss,
.voyageBossSprite {
    width: 88px;
    height: 88px;
}

.voyageProgressCard {
    margin-top: 1rem;
}

.voyageProgressHead {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 0.8rem;
}

.voyageProgressTrack {
    position: relative;
    width: 100%;
    height: 1rem;
    margin-top: 0.8rem;
    border-radius: 999px;
    overflow: hidden;
    background: rgba(8, 10, 18, 0.96);
    border: 1px solid rgba(103, 232, 249, 0.16);
}

.voyageProgressTrack span {
    display: block;
    position: relative;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, rgba(103, 232, 249, 0.94), rgba(139, 92, 246, 0.94) 60%, rgba(250, 204, 21, 0.88));
    box-shadow: 0 0 18px rgba(34, 211, 238, 0.22);
    overflow: hidden;
}

.voyageProgressTrack span::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.34), transparent);
    animation: devShimmer 2.4s linear infinite;
}

.voyageRouteStrip,
.devVoyageRouteStrip {
    margin-top: 1rem;
    grid-auto-flow: column;
    grid-auto-columns: minmax(94px, 1fr);
    overflow-x: auto;
    padding-bottom: 0.15rem;
}

.voyageRouteNode {
    display: grid;
    gap: 0.5rem;
    justify-items: center;
    min-width: 0;
    padding: 0.76rem 0.6rem;
    border-radius: var(--radius-md);
    border: 1px solid rgba(192, 167, 255, 0.12);
    background: rgba(13, 14, 24, 0.88);
    text-align: center;
}

.voyageRouteNode strong {
    font-size: 0.84rem;
    line-height: 1.25;
}

.voyageRouteNode--current {
    border-color: rgba(103, 232, 249, 0.42);
    box-shadow: 0 12px 26px rgba(10, 31, 40, 0.22);
}

.voyageRouteNode--next {
    border-color: rgba(250, 204, 21, 0.28);
}

.voyageRouteNode--completed {
    border-color: rgba(34, 197, 94, 0.22);
}

.voyageRouteMarker {
    width: 28px;
    height: 28px;
    object-fit: contain;
}

.voyageRouteIsland {
    width: 54px;
    height: 54px;
    object-fit: contain;
}

.voyageLogCard {
    margin-top: 1rem;
}

.voyageLogIcon {
    width: 44px;
    height: 44px;
    object-fit: contain;
}

.voyageLogList {
    margin: 0.9rem 0 0;
    padding: 0;
    list-style: none;
    display: grid;
    gap: 0.6rem;
}

.voyageLogEntry {
    display: flex;
    align-items: center;
    gap: 0.68rem;
    padding: 0.65rem 0.7rem;
    border-radius: var(--radius-sm);
    background: rgba(12, 15, 27, 0.8);
    border: 1px solid rgba(216, 204, 255, 0.1);
}

.voyageLogEntry img {
    width: 28px;
    height: 28px;
    object-fit: contain;
}

.voyageLogEntry--victory {
    border-color: rgba(250, 204, 21, 0.24);
    background: linear-gradient(180deg, rgba(46, 28, 6, 0.4), rgba(12, 15, 27, 0.86));
}

.voyageLogEntry--planned {
    border-color: rgba(139, 92, 246, 0.18);
}

.devVoyagePanel {
    margin-top: 1rem;
}

.voyageSummaryCard--dev strong {
    font-size: 1.35rem;
}

.devVoyageHero {
    margin-top: 1rem;
    align-items: stretch;
}

.devVoyageScene {
    position: relative;
    min-height: 270px;
    border-radius: var(--radius-lg);
    overflow: hidden;
    border: 1px solid rgba(103, 232, 249, 0.14);
    background:
        radial-gradient(circle at top left, rgba(103, 232, 249, 0.18), transparent 28%),
        radial-gradient(circle at top right, rgba(250, 204, 21, 0.14), transparent 24%),
        linear-gradient(180deg, rgba(8, 18, 36, 0.98), rgba(7, 12, 24, 0.98) 46%, rgba(10, 9, 18, 0.99));
}

.devVoyageIslandSprite,
.devVoyageShipSprite,
.devVoyageTravelSprite,
.devVoyageWakeSprite,
.devVoyageSpark {
    position: absolute;
}

.devVoyageIslandSprite {
    width: 112px;
    height: 112px;
    object-fit: contain;
    filter: drop-shadow(0 16px 22px rgba(7, 10, 19, 0.5));
}

.devVoyageIslandSprite--current {
    left: 1rem;
    bottom: 1rem;
}

.devVoyageIslandSprite--next {
    right: 1rem;
    top: 1.2rem;
    opacity: 0.78;
}

.devVoyageShipSprite {
    left: 50%;
    bottom: 3rem;
    width: min(210px, 58%);
    transform: translateX(-50%);
    animation: voyageShipBob 3.4s ease-in-out infinite;
}

.devVoyageTravelSprite {
    left: 50%;
    bottom: 1.6rem;
    width: min(160px, 46%);
    transform: translateX(-50%);
    opacity: 0.75;
}

.devVoyageWakeSprite--one {
    left: 12%;
    bottom: 0.6rem;
    width: 42%;
    animation: voyageWakeDrift 3.6s ease-in-out infinite;
}

.devVoyageWakeSprite--two {
    right: 14%;
    bottom: 1rem;
    width: 34%;
    animation: voyageWakeDrift 4.3s ease-in-out infinite reverse;
}

.devVoyageSpark {
    width: 42px;
    height: 42px;
    opacity: 0.76;
    animation: voyageSparkle 2.2s ease-in-out infinite;
}

.devVoyageSpark--one {
    left: 28%;
    top: 1rem;
}

.devVoyageSpark--two {
    right: 26%;
    top: 3.1rem;
    animation-delay: 0.7s;
}

.devVoyageHeroCopy,
.devVoyageHeadline {
    display: grid;
    gap: 0.8rem;
}

.devVoyageStatGrid {
    margin-top: 0.2rem;
}

.devVoyageStatCard {
    min-height: 100%;
}

.devVoyageSupportGrid {
    margin-top: 1rem;
}

.voyageBossAlert {
    width: 44px;
    height: 44px;
    object-fit: contain;
}

.voyageBossCardBody {
    margin-top: 0.8rem;
    align-items: flex-start;
}

.voyageCelebrationCard {
    position: relative;
    overflow: hidden;
}

.voyageCelebrationBackdrop {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.voyageCelebrationEffect {
    position: absolute;
    right: 0.7rem;
    top: 0.7rem;
    width: 64px;
    height: 64px;
    object-fit: contain;
    opacity: 0.46;
    animation: voyageSparkle 2.8s ease-in-out infinite;
}

.voyageCelebrationEffect--sparkle {
    left: 0.8rem;
    right: auto;
    top: auto;
    bottom: 0.8rem;
    width: 48px;
    height: 48px;
    animation-delay: 0.8s;
}

.voyageCelebrationSprite {
    width: 92px;
    height: 92px;
    object-fit: contain;
    animation: voyageBuddyBounce 2.8s ease-in-out infinite;
}

.voyageCelebrationCard--victory {
    border-color: rgba(250, 204, 21, 0.26);
    background: linear-gradient(180deg, rgba(48, 29, 7, 0.42), rgba(15, 14, 26, 0.94));
}

.voyageCelebrationCard--victory .voyageCelebrationEffect {
    opacity: 0.72;
}

.voyageCelebrationCard--voyage .voyageCelebrationSprite {
    animation-duration: 3.8s;
}

.voyagePanelIntro {
    display: grid;
    gap: 0.7rem;
}

.voyageMap {
    margin-top: 1rem;
}

.voyageMapCanvas {
    position: relative;
    min-height: 330px;
    overflow: hidden;
    border-radius: calc(var(--radius-lg) + 2px);
    border: 1px solid rgba(103, 232, 249, 0.16);
    background:
        radial-gradient(circle at top left, rgba(103, 232, 249, 0.16), transparent 28%),
        radial-gradient(circle at bottom right, rgba(139, 92, 246, 0.18), transparent 34%),
        linear-gradient(180deg, rgba(8, 16, 32, 0.98), rgba(10, 12, 24, 0.99) 52%, rgba(16, 10, 28, 0.98));
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03), 0 18px 34px rgba(6, 9, 20, 0.28);
}

.voyageMapCanvas--dev {
    min-height: 470px;
}

.voyageMapRouteSvg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    overflow: visible;
}

.voyageMapRouteGlow,
.voyageMapRouteLine {
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.voyageMapRouteGlow {
    stroke: rgba(103, 232, 249, 0.24);
    stroke-width: 3.2;
    filter: drop-shadow(0 0 10px rgba(103, 232, 249, 0.36));
}

.voyageMapRouteLine {
    stroke: rgba(216, 204, 255, 0.86);
    stroke-width: 1.1;
    stroke-dasharray: 3 2.2;
}

.voyageMapNode,
.voyageShipToken,
.voyageMapOverlay,
.voyageMapSpark {
    position: absolute;
}

.voyageMapNode {
    width: 86px;
    transform: translate(-50%, -50%);
    display: grid;
    gap: 0.18rem;
    justify-items: center;
    text-align: center;
}

.voyageMapMarker {
    width: 26px;
    height: 26px;
    object-fit: contain;
}

.voyageMapIsland {
    width: 62px;
    height: 62px;
    object-fit: contain;
    filter: drop-shadow(0 14px 18px rgba(5, 7, 16, 0.45));
}

.voyageMapLabel {
    font-size: 0.75rem;
    line-height: 1.2;
    text-shadow: 0 2px 10px rgba(4, 6, 12, 0.82);
}

.voyageMapNode--current .voyageMapIsland {
    filter: drop-shadow(0 0 18px rgba(103, 232, 249, 0.5)) drop-shadow(0 14px 18px rgba(5, 7, 16, 0.45));
}

.voyageMapNode--next .voyageMapIsland {
    filter: drop-shadow(0 0 16px rgba(250, 204, 21, 0.42)) drop-shadow(0 14px 18px rgba(5, 7, 16, 0.45));
}

.voyageMapNode--completed .voyageMapLabel {
    color: rgba(190, 255, 214, 0.92);
}

.voyageBossCluster {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 0.12rem;
    margin-top: 0.1rem;
    padding: 0.16rem 0.28rem;
    border-radius: 999px;
    background: rgba(9, 10, 18, 0.76);
    border: 1px solid rgba(216, 204, 255, 0.12);
}

.voyageBossBadge {
    width: 18px;
    height: 18px;
    object-fit: contain;
    border-radius: 50%;
    background: rgba(12, 11, 22, 0.9);
}

.voyageBossBadge--completed {
    box-shadow: 0 0 0 1px rgba(34, 197, 94, 0.38);
}

.voyageBossBadge--next {
    box-shadow: 0 0 0 1px rgba(250, 204, 21, 0.48), 0 0 10px rgba(250, 204, 21, 0.22);
}

.voyageBossCount {
    font-size: 0.68rem;
    font-weight: 800;
    color: var(--yellow);
}

.voyageShipToken {
    width: 120px;
    transform: translate(-50%, -58%);
    pointer-events: none;
}

.voyageShipToken--dev {
    width: 148px;
}

.voyageShipWake,
.voyageShipBody {
    position: absolute;
    left: 50%;
    display: block;
    transform: translateX(-50%);
}

.voyageShipBody {
    bottom: 10px;
    width: 82px;
    animation: voyageShipBob 3.5s ease-in-out infinite;
    filter: drop-shadow(0 12px 16px rgba(5, 9, 18, 0.5));
}

.voyageShipToken--dev .voyageShipBody {
    width: 100px;
}

.voyageShipWake {
    bottom: -2px;
    opacity: 0.86;
}

.voyageShipWake--primary {
    width: 92px;
    animation: voyageWakeDrift 3.8s ease-in-out infinite;
}

.voyageShipWake--secondary {
    width: 72px;
    bottom: 8px;
    animation: voyageWakeDrift 4.6s ease-in-out infinite reverse;
}

.voyageMapOverlay {
    z-index: 2;
}

.voyageMapOverlay img {
    display: block;
    object-fit: contain;
}

.voyageMapOverlay--compass {
    right: 1rem;
    top: 0.8rem;
}

.voyageMapOverlay--compass img {
    width: 52px;
    height: 52px;
    opacity: 0.85;
}

.voyageMapOverlay--barto {
    left: 1rem;
    bottom: 0.8rem;
}

.voyageMapOverlay--barto img {
    width: 88px;
    height: 88px;
    animation: voyageBuddyBounce 3.2s ease-in-out infinite;
}

.voyageMapOverlay--victory img {
    filter: drop-shadow(0 0 18px rgba(250, 204, 21, 0.34));
}

.voyageMapSpark {
    width: 34px;
    height: 34px;
    opacity: 0.75;
    animation: voyageSparkle 2.4s ease-in-out infinite;
}

.voyageMapSpark--one {
    top: 18%;
    left: 32%;
}

.voyageMapSpark--two {
    top: 40%;
    right: 18%;
    animation-delay: 0.8s;
}

.voyageMiniStats {
    display: grid;
    gap: 0.72rem;
    margin-top: 1rem;
}

.voyageMiniStat {
    padding: 0.9rem 0.95rem;
    border-radius: var(--radius-md);
    border: 1px solid rgba(192, 167, 255, 0.14);
    background: rgba(15, 14, 26, 0.9);
    box-shadow: var(--shadow-sm);
}

.voyageMiniStat strong {
    display: block;
    margin-top: 0.62rem;
    font-size: 1.08rem;
    line-height: 1.15;
}

.voyageMiniStat p {
    margin: 0.38rem 0 0;
    color: var(--text-soft);
    line-height: 1.4;
}

.voyageLogCard--underMap {
    margin-top: 1rem;
}

.roadmapCard {
    background:
        linear-gradient(180deg, rgba(20, 13, 31, 0.94), rgba(12, 8, 19, 0.98)),
        linear-gradient(135deg, rgba(182, 156, 255, 0.08), rgba(250, 204, 21, 0.04));
}

.roadmapGrid {
    gap: 0.72rem;
}

.roadmapBlock {
    border: 1px solid rgba(192, 167, 255, 0.14);
    border-radius: var(--radius-md);
    background: rgba(17, 12, 27, 0.88);
    padding: 0.9rem 0.95rem;
    box-shadow: var(--shadow-sm);
}

.roadmapBlock h3 {
    margin: 0;
    font-size: 0.96rem;
    line-height: 1.25;
    color: var(--text);
}

.roadmapList {
    margin-top: 0.62rem;
    color: var(--text-soft);
}

.statusInfoCard {
    box-shadow: var(--shadow-sm);
}

.statusHeadingRow {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.7rem;
}

.statusPill {
    border: 1px solid var(--stroke);
}

.statusPill--good {
    background: var(--good-bg);
    color: var(--good);
}

.statusPill--warn {
    background: rgba(120, 53, 15, 0.22);
    color: var(--yellow);
}

.statusPill--neutral {
    background: var(--neutral-bg);
    color: var(--purple);
}

.pageBody--dev {
    background:
        radial-gradient(circle at top left, rgba(34, 211, 238, 0.18), transparent 32%),
        radial-gradient(circle at top right, rgba(250, 204, 21, 0.1), transparent 26%),
        radial-gradient(circle at bottom center, rgba(139, 92, 246, 0.12), transparent 30%),
        linear-gradient(180deg, #06050c 0%, #0b1020 48%, #120c21 100%);
}

.devHeroCard {
    background:
        linear-gradient(180deg, rgba(15, 18, 32, 0.96), rgba(9, 10, 18, 0.98)),
        linear-gradient(135deg, rgba(34, 211, 238, 0.14), rgba(139, 92, 246, 0.08));
}

.devConsoleShell {
    display: grid;
    gap: 1rem;
}

.devConsoleTopbar,
.devOverviewGrid,
.devOverviewLower,
.devOverviewSidebar,
.devConsoleLinkGrid,
.devActionGrid,
.devVoyageSimpleGrid,
.devVoyageMiniGrid,
.devVoyageRouteList {
    display: grid;
    gap: 0.82rem;
}

.devConsoleTopbar {
    align-items: end;
}

.devConsoleTabs {
    display: flex;
    gap: 0.55rem;
    overflow-x: auto;
    padding-bottom: 0.2rem;
    scrollbar-width: none;
}

.devConsoleTabs::-webkit-scrollbar {
    display: none;
}

.devConsoleTab {
    flex: 0 0 auto;
    min-height: 2.7rem;
    padding: 0.7rem 0.95rem;
    border-radius: 999px;
    border: 1px solid rgba(192, 167, 255, 0.14);
    background: rgba(16, 13, 26, 0.88);
    color: var(--text-soft);
    font-weight: 700;
    cursor: pointer;
}

.devConsoleTab.isActive {
    border-color: rgba(103, 232, 249, 0.34);
    background: rgba(11, 20, 28, 0.96);
    color: var(--text);
    box-shadow: inset 0 0 0 1px rgba(103, 232, 249, 0.14);
}

.devConsolePanel {
    display: grid;
    gap: 1rem;
}

.devConsoleLink {
    min-height: 4rem;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.28rem;
    text-align: left;
}

.devSurfaceCard,
.devOverviewPanel,
.devVoyageSummaryCard {
    border: 1px solid rgba(192, 167, 255, 0.14);
    border-radius: var(--radius-md);
    background:
        linear-gradient(180deg, rgba(17, 15, 28, 0.96), rgba(8, 9, 18, 0.98)),
        linear-gradient(135deg, rgba(34, 211, 238, 0.08), rgba(139, 92, 246, 0.08));
    box-shadow: var(--shadow-sm);
}

.devSurfaceCard,
.devOverviewPanel {
    padding: 1rem;
}

.devSurfaceCard p {
    margin: 0.55rem 0 0;
    line-height: 1.45;
    color: var(--text-soft);
}

.devLeadHeader,
.devCardHeader {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.8rem;
}

.devLeadHeader h3,
.devCardHeader h3 {
    margin: 0.2rem 0 0;
    font-size: 1.16rem;
    line-height: 1.2;
}

.devLeadHeader .statusPill,
.devCardHeader .statusPill {
    width: auto;
    flex-shrink: 0;
}

.devLeadSummary,
.devVoyageMeaning p,
.devAttentionList,
.devActionButton,
.devVoyageRouteStep p {
    color: var(--text-soft);
}

.devLeadList {
    display: grid;
    gap: 0.7rem;
}

.devLearningEvent {
    display: grid;
    gap: 0.22rem;
    width: 100%;
    padding: 0.86rem 0.92rem;
    border-radius: 1rem;
    border: 1px solid rgba(103, 232, 249, 0.14);
    background: rgba(10, 10, 18, 0.92);
    color: var(--text);
    text-align: left;
    cursor: pointer;
}

.devLearningEvent--static {
    cursor: default;
}

.devLearningEvent strong {
    font-size: 0.98rem;
    line-height: 1.3;
}

.devLearningEvent span {
    color: var(--text-soft);
    font-size: 0.85rem;
    line-height: 1.4;
}

.devProgressCard .devProgressValue {
    font-size: clamp(2rem, 6vw, 3.2rem);
    line-height: 0.95;
}

.devHealthCard[data-tone="warn"],
#devHealthCard[data-tone="warn"] {
    border-color: rgba(250, 204, 21, 0.28);
}

.devAttentionList {
    margin: 0;
    padding-left: 1.1rem;
    display: grid;
    gap: 0.42rem;
    line-height: 1.45;
}

.devActionGrid {
    grid-template-columns: 1fr;
}

.devActionButton {
    width: 100%;
    min-height: 3rem;
    padding: 0.9rem 1rem;
    border-radius: var(--radius-md);
    border: 1px solid rgba(192, 167, 255, 0.14);
    background: rgba(16, 13, 26, 0.88);
    text-align: left;
    font-weight: 700;
    cursor: pointer;
}

.devVoyageSimpleGrid,
.devVoyageMiniGrid,
.devVoyageRouteList {
    margin-bottom: 1rem;
}

.devVoyageMiniCard,
.devVoyageRouteStep {
    padding: 0.9rem 0.95rem;
    border-radius: var(--radius-md);
    border: 1px solid rgba(192, 167, 255, 0.14);
    background: rgba(16, 13, 26, 0.88);
    box-shadow: var(--shadow-sm);
}

.devVoyageMiniCard strong,
.devVoyageRouteStep strong {
    display: block;
    margin-top: 0.72rem;
    font-size: 1.15rem;
    line-height: 1.1;
}

.devVoyageMiniCard p,
.devVoyageRouteStep p {
    margin: 0.45rem 0 0;
    line-height: 1.45;
}

.devVoyageMeaning {
    display: grid;
    gap: 0.5rem;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid rgba(192, 167, 255, 0.12);
}

.devVoyagePanel .voyageMap--dev {
    display: none;
}

.devQuickPanel,
.devHealthPanel,
.devActivityPanel,
.devLearningPanel,
.devImageCoveragePanel,
.devLimitsDock,
.devResourcePanel,
.devIssueCard {
    background:
        linear-gradient(180deg, rgba(17, 15, 28, 0.96), rgba(8, 9, 18, 0.98)),
        linear-gradient(135deg, rgba(34, 211, 238, 0.08), rgba(139, 92, 246, 0.08));
}

.devQuickGrid,
.devStateGrid,
.devMetricGrid,
.devLimitsGrid,
.devResourceGrid,
.devIssueGrid {
    display: grid;
    gap: 0.82rem;
}

.devQuickGrid {
    margin-top: 1rem;
}

.devQuickButton {
    min-height: 4.35rem;
    padding: 1rem;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.22rem;
    text-align: left;
}

.devQuickLabel {
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.15;
}

.devQuickMeta,
.devUpdatedAt,
.devUpdatedAtLocal,
.devActivityDetail,
.devProgressDetail,
.devMetricCard p,
.devResourceCard p,
.devIssueList,
.devStateCard p {
    color: var(--text-soft);
}

.devQuickMeta,
.devUpdatedAt,
.devUpdatedAtLocal {
    font-size: 0.84rem;
    line-height: 1.35;
}

.devUpdatedAtLocal {
    opacity: 0.9;
}

.devSectionHeader {
    display: grid;
    gap: 1rem;
    align-items: end;
}

.devRefreshStack {
    display: grid;
    gap: 0.55rem;
    justify-items: start;
}

.devHealthPanel .devIssueGrid {
    margin-top: 1rem;
}

.devRefreshButton {
    min-width: 7rem;
}

.devActivityHero {
    display: grid;
    gap: 1rem;
    align-items: center;
    margin-top: 1rem;
    padding: 1rem;
    border-radius: var(--radius-md);
    border: 1px solid rgba(216, 204, 255, 0.14);
    background: rgba(11, 14, 25, 0.88);
    box-shadow: var(--shadow-sm);
}

.devActivityVisual {
    position: relative;
    width: min(220px, 100%);
    aspect-ratio: 1;
    margin: 0 auto;
    border-radius: 50%;
    overflow: hidden;
    background:
        radial-gradient(circle, rgba(103, 232, 249, 0.1), transparent 48%),
        radial-gradient(circle at center, rgba(139, 92, 246, 0.08), transparent 72%);
}

.devActivityCore,
.devActivityRing,
.devCompassNeedle,
.devActivityWave {
    position: absolute;
    inset: auto;
}

.devActivityCore {
    inset: 32%;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(103, 232, 249, 0.95), rgba(34, 211, 238, 0.18));
    box-shadow: 0 0 32px rgba(34, 211, 238, 0.42);
    animation: devPulse 2.4s ease-in-out infinite;
}

.devActivityRing {
    border-radius: 50%;
    border: 1px solid rgba(103, 232, 249, 0.32);
    animation: devOrbit 7s linear infinite;
}

.devActivityRing--outer {
    inset: 10%;
}

.devActivityRing--inner {
    inset: 22%;
    animation-duration: 4.8s;
    animation-direction: reverse;
}

.devCompassNeedle {
    left: calc(50% - 2px);
    top: 16%;
    width: 4px;
    height: 34%;
    border-radius: 999px;
    background: linear-gradient(180deg, rgba(250, 204, 21, 0.98), rgba(248, 113, 113, 0.86));
    transform-origin: center 100%;
    animation: devNeedle 3.4s ease-in-out infinite;
    box-shadow: 0 0 14px rgba(250, 204, 21, 0.28);
}

.devActivityWave {
    left: 10%;
    right: 10%;
    height: 36%;
    bottom: 10%;
    border-radius: 50%;
    border: 1px solid rgba(103, 232, 249, 0.18);
    animation: devWave 4.6s ease-in-out infinite;
}

.devActivityWave--two {
    left: 18%;
    right: 18%;
    bottom: 18%;
    animation-delay: 0.6s;
    opacity: 0.8;
}

.devActivityHero--sleeping .devActivityCore {
    background: radial-gradient(circle, rgba(216, 204, 255, 0.9), rgba(139, 92, 246, 0.18));
    box-shadow: 0 0 26px rgba(139, 92, 246, 0.28);
}

.devActivityHero--sleeping .devCompassNeedle {
    animation-duration: 6s;
    opacity: 0.72;
}

.devActivityHero--storm .devActivityCore {
    background: radial-gradient(circle, rgba(248, 113, 113, 0.92), rgba(127, 29, 29, 0.18));
    box-shadow: 0 0 28px rgba(248, 113, 113, 0.34);
}

.devActivityHero--storm .devCompassNeedle {
    background: linear-gradient(180deg, rgba(248, 113, 113, 0.98), rgba(250, 204, 21, 0.88));
    animation-duration: 1.3s;
}

.devActivityHero--crew .devActivityCore {
    animation-duration: 1.25s;
}

.devActivityHero--crew .devActivityWave {
    animation-duration: 2.4s;
}

.devStateGrid {
    margin-top: 1rem;
}

.devStateCard,
.devMetricCard,
.devResourceCard {
    border: 1px solid rgba(192, 167, 255, 0.14);
    border-radius: var(--radius-md);
    background: rgba(16, 13, 26, 0.88);
    box-shadow: var(--shadow-sm);
}

.devStateCard {
    padding: 0.92rem 0.95rem;
}

.devStateCard.isCurrent {
    border-color: rgba(103, 232, 249, 0.4);
    background: linear-gradient(180deg, rgba(13, 23, 32, 0.92), rgba(13, 12, 23, 0.92));
    box-shadow: 0 16px 32px rgba(6, 18, 28, 0.32);
}

.devStateBadge,
.devMetricLabel {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    min-height: 1.85rem;
    padding: 0.2rem 0.66rem;
    border-radius: 999px;
    border: 1px solid rgba(103, 232, 249, 0.18);
    background: rgba(34, 211, 238, 0.12);
    color: var(--cyan);
    font-size: 0.82rem;
    font-weight: 700;
}

.devStateCard p,
.devMetricCard p,
.devResourceCard p {
    margin: 0.55rem 0 0;
    line-height: 1.45;
}

.devProgressMeta {
    display: grid;
    gap: 0.32rem;
    padding: 0.95rem 1rem;
    border-radius: var(--radius-md);
    border: 1px solid rgba(103, 232, 249, 0.18);
    background: rgba(12, 15, 27, 0.88);
    box-shadow: var(--shadow-sm);
}

.devProgressMeta strong {
    font-size: clamp(2.2rem, 7vw, 3.8rem);
    line-height: 0.95;
}

.devProgressMeta p,
.devProgressDetail {
    margin: 0;
    line-height: 1.45;
}

.devProgressTrack {
    width: 100%;
    height: 1.15rem;
    margin-top: 1rem;
    border-radius: 999px;
    overflow: hidden;
    border: 1px solid rgba(103, 232, 249, 0.18);
    background: rgba(8, 10, 18, 0.96);
}

.devProgressTrack span {
    display: block;
    position: relative;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, rgba(103, 232, 249, 0.92), rgba(139, 92, 246, 0.95) 58%, rgba(250, 204, 21, 0.88));
    box-shadow: 0 0 20px rgba(34, 211, 238, 0.3);
    overflow: hidden;
}

.devProgressTrack span::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.32), transparent);
    animation: devShimmer 2.2s linear infinite;
}

.devMetricGrid,
.devLimitsGrid,
.devResourceGrid {
    margin-top: 1rem;
}

.devLimitsGrid {
    grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr));
}

.devLimitsCard {
    padding: 0.95rem 1rem;
    border: 1px solid rgba(192, 167, 255, 0.14);
    border-radius: var(--radius-md);
    background: rgba(16, 13, 26, 0.88);
    box-shadow: var(--shadow-sm);
}

.devLimitsCard--warn {
    border-color: rgba(250, 204, 21, 0.45);
    background: linear-gradient(180deg, rgba(28, 22, 8, 0.92), rgba(18, 14, 6, 0.92));
    box-shadow: 0 0 20px rgba(250, 204, 21, 0.12);
}

.devLimitsProvider {
    margin: 0 0 0.5rem;
    font-size: 1rem;
    font-weight: 800;
    color: var(--cyan);
}

.devLimitsRemaining,
.devLimitsReset,
.devLimitsNotes,
.devLimitsMeta {
    margin: 0.35rem 0 0;
    font-size: 0.9rem;
    line-height: 1.4;
    color: var(--text-soft);
}

.devLimitsEmpty {
    margin: 0.5rem 0 0;
    font-size: 0.88rem;
    color: var(--text-soft);
    font-style: italic;
}

.devMetricCard,
.devResourceCard {
    padding: 0.95rem 1rem;
}

.devMetricCard strong,
.devResourceHead strong {
    display: block;
    margin-top: 0.72rem;
    font-size: 1.6rem;
    line-height: 1;
}

.devResourceHead {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.7rem;
}

.devResourceHead span {
    color: var(--text-soft);
    font-weight: 700;
}

.devResourceBar {
    height: 0.6rem;
    margin-top: 0.78rem;
    border-radius: 999px;
    overflow: hidden;
    background: rgba(10, 10, 18, 0.94);
    border: 1px solid rgba(103, 232, 249, 0.14);
}

.devResourceBar span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, rgba(103, 232, 249, 0.88), rgba(250, 204, 21, 0.82));
    box-shadow: 0 0 14px rgba(103, 232, 249, 0.18);
}

.devResourceCard.isUnavailable .devResourceBar span {
    width: 22% !important;
    background: linear-gradient(90deg, rgba(170, 159, 199, 0.4), rgba(170, 159, 199, 0.2));
    box-shadow: none;
}

.devCoverageList {
    display: grid;
    gap: 0.85rem;
    margin-top: 1rem;
}

.devCoverageRow {
    display: grid;
    gap: 0.5rem;
    padding: 0.9rem 1rem;
    border: 1px solid rgba(192, 167, 255, 0.14);
    border-radius: var(--radius-md);
    background: rgba(16, 13, 26, 0.88);
    box-shadow: var(--shadow-sm);
}

.devCoverageHeader {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
}

.devCoverageTitle {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.devCoverageSet {
    font-size: 1rem;
    font-weight: 800;
}

.devCoverageStage {
    display: inline-flex;
    align-items: center;
    padding: 0.12rem 0.5rem;
    border-radius: 999px;
    border: 1px solid rgba(216, 204, 255, 0.18);
    background: rgba(24, 20, 34, 0.92);
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--text-soft);
}

.devCoverageStage--not_started {
    border-color: rgba(170, 159, 199, 0.25);
    color: rgba(170, 159, 199, 0.9);
}

.devCoverageStage--discovered {
    border-color: rgba(103, 232, 249, 0.4);
    color: var(--cyan);
}

.devCoverageStage--tracked {
    border-color: rgba(139, 92, 246, 0.4);
    color: rgba(195, 181, 255, 0.95);
}

.devCoverageStage--verified {
    border-color: rgba(34, 197, 94, 0.4);
    color: rgba(134, 239, 172, 0.95);
}

.devCoveragePercent {
    font-weight: 700;
    color: var(--cyan);
}

.devCoverageBar {
    height: 0.6rem;
    border-radius: 999px;
    overflow: hidden;
    background: rgba(10, 10, 18, 0.94);
    border: 1px solid rgba(103, 232, 249, 0.14);
}

.devCoverageBar span {
    display: block;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, rgba(103, 232, 249, 0.88), rgba(139, 92, 246, 0.82));
    box-shadow: 0 0 14px rgba(103, 232, 249, 0.18);
}

.devCoverageMeta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    color: var(--text-soft);
    font-size: 0.84rem;
}

.devCoverageEmpty {
    color: var(--text-soft);
    margin: 0.2rem 0 0;
}

.devValidationInspector {
    display: grid;
    gap: 0.55rem;
    margin-top: 1rem;
    padding: 1rem;
    border: 1px solid rgba(192, 167, 255, 0.14);
    border-radius: var(--radius-md);
    background: rgba(16, 13, 26, 0.88);
    box-shadow: var(--shadow-sm);
}

.devValidationInspectorLabel {
    font-size: 0.92rem;
    font-weight: 700;
    color: var(--text);
}

.devValidationInspectorRow {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 0.65rem;
}

.devValidationInspectorInput {
    width: 100%;
    min-width: 0;
    padding: 0.78rem 0.9rem;
    border-radius: 999px;
    border: 1px solid rgba(192, 167, 255, 0.16);
    background: rgba(10, 10, 18, 0.94);
    color: var(--text);
    font: inherit;
}

.devValidationInspectorMeta {
    margin: 0;
    color: var(--text-soft);
    font-size: 0.86rem;
    line-height: 1.45;
}

.devValidationGrid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.9rem;
    margin-top: 1rem;
}

.devValidationLane,
.devValidationDetailCard,
.devValidationEvidenceCard {
    border: 1px solid rgba(192, 167, 255, 0.14);
    border-radius: var(--radius-md);
    background: rgba(16, 13, 26, 0.88);
    box-shadow: var(--shadow-sm);
}

.devValidationLane {
    padding: 0.95rem 1rem;
}

.devValidationLaneHeader p {
    margin: 0.55rem 0 0;
    color: var(--text-soft);
    line-height: 1.45;
}

.devValidationList {
    display: grid;
    gap: 0.65rem;
    margin-top: 0.9rem;
}

.devValidationItem {
    display: grid;
    gap: 0.22rem;
    width: 100%;
    padding: 0.8rem 0.88rem;
    border-radius: 0.95rem;
    border: 1px solid rgba(103, 232, 249, 0.14);
    background: rgba(10, 10, 18, 0.92);
    color: var(--text);
    text-align: left;
    cursor: pointer;
}

.devValidationItem strong {
    font-size: 0.95rem;
    line-height: 1.3;
}

.devValidationItem span {
    color: var(--text-soft);
    font-size: 0.84rem;
    line-height: 1.4;
}

.devValidationItem:hover,
.devValidationItem:focus-visible {
    border-color: rgba(103, 232, 249, 0.34);
    box-shadow: 0 0 0 1px rgba(103, 232, 249, 0.12) inset;
    outline: none;
}

.devValidationEmpty {
    margin: 0;
    color: var(--text-soft);
    font-size: 0.88rem;
    line-height: 1.45;
    font-style: italic;
}

.devValidationDetailCard {
    display: grid;
    gap: 0.95rem;
    margin-top: 1rem;
    padding: 1rem 1.05rem;
}

.devValidationDetailHeader {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.8rem;
}

.devValidationDetailHeader h3 {
    margin: 0.25rem 0 0;
    font-size: 1.2rem;
}

.devValidationDetailSummary {
    margin: 0;
    color: var(--text-soft);
    line-height: 1.5;
}

.devValidationCanonicalGrid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.7rem;
}

.devValidationCanonicalCell {
    padding: 0.8rem 0.88rem;
    border-radius: 0.95rem;
    background: rgba(10, 10, 18, 0.92);
    border: 1px solid rgba(103, 232, 249, 0.12);
}

.devValidationCanonicalCell strong {
    display: block;
    color: var(--text-soft);
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.devValidationCanonicalCell span {
    display: block;
    margin-top: 0.36rem;
    color: var(--text);
    font-size: 0.94rem;
    line-height: 1.45;
    word-break: break-word;
    white-space: pre-wrap;
}

.devValidationEvidenceGrid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.85rem;
}

.devValidationEvidenceCard {
    padding: 0.95rem 1rem;
}

.devValidationEvidenceBody {
    display: grid;
    gap: 0.7rem;
    margin-top: 0.85rem;
}

.devValidationSourceBadge {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    padding: 0.18rem 0.6rem;
    border-radius: 999px;
    border: 1px solid rgba(103, 232, 249, 0.18);
    background: rgba(34, 211, 238, 0.12);
    color: var(--cyan);
    font-size: 0.78rem;
    font-weight: 700;
}

.devValidationSourceCard {
    padding: 0.82rem 0.88rem;
    border-radius: 0.95rem;
    background: rgba(10, 10, 18, 0.92);
    border: 1px solid rgba(103, 232, 249, 0.12);
    display: grid;
    gap: 0.28rem;
}

.devValidationSourceCard strong {
    font-size: 0.95rem;
}

.devValidationSourceCard p {
    margin: 0;
    color: var(--text-soft);
    line-height: 1.45;
}

.devValidationSourceCard--rejected,
.devValidationSourceCard--lowConfidence {
    border-color: rgba(250, 204, 21, 0.24);
}

.devIssueGrid {
    margin-bottom: 1rem;
}

.devIssueCard {
    padding: 1rem;
}

.devIssueCard--warn {
    border-color: rgba(250, 204, 21, 0.24);
}

.devIssueList {
    margin: 0.78rem 0 0;
    padding-left: 1.1rem;
    display: grid;
    gap: 0.42rem;
    line-height: 1.45;
}

.devIssueCard p {
    margin: 0.55rem 0 0;
}

@keyframes devPulse {
    0%,
    100% {
        transform: scale(0.92);
        opacity: 0.88;
    }

    50% {
        transform: scale(1.08);
        opacity: 1;
    }
}

@keyframes devOrbit {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}

@keyframes devNeedle {
    0%,
    100% {
        transform: rotate(-32deg);
    }

    50% {
        transform: rotate(28deg);
    }
}

@keyframes devWave {
    0%,
    100% {
        transform: translateY(8px) scaleX(0.96);
        opacity: 0.28;
    }

    50% {
        transform: translateY(-4px) scaleX(1.04);
        opacity: 0.62;
    }
}

@keyframes devShimmer {
    from {
        transform: translateX(-120%);
    }

    to {
        transform: translateX(120%);
    }
}

@keyframes voyageShipBob {
    0%,
    100% {
        transform: translateX(-50%) translateY(0);
    }

    50% {
        transform: translateX(-50%) translateY(-7px);
    }
}

@keyframes voyageWakeDrift {
    0%,
    100% {
        transform: translateY(4px) scaleX(0.96);
        opacity: 0.54;
    }

    50% {
        transform: translateY(-3px) scaleX(1.04);
        opacity: 0.9;
    }
}

@keyframes voyageSparkle {
    0%,
    100% {
        transform: scale(0.88);
        opacity: 0.36;
    }

    50% {
        transform: scale(1.12);
        opacity: 0.92;
    }
}

@keyframes voyageBuddyBounce {
    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-6px);
    }
}

.isHidden {
    display: none !important;
}

@media (hover: hover) {
    .navLink:hover,
    .presetButton:hover,
    .modeCard:hover,
    .copyButton:hover,
    .clearButton:hover,
    .utilityButton:hover,
    .devConsoleTab:hover,
    .devActionButton:hover,
    .devLearningEvent:hover,
    .miniRouteCard:hover,
    .ctaButton--secondary:hover {
        border-color: var(--stroke-strong);
        background: rgba(31, 21, 48, 0.94);
        transform: translateY(-1px);
        box-shadow: 0 14px 28px rgba(12, 6, 24, 0.24);
    }

    .runButton:hover,
    .ctaButton--primary:hover {
        transform: translateY(-1px);
        box-shadow: 0 18px 30px rgba(52, 21, 107, 0.42);
    }
}

input:focus,
textarea:focus,
.presetButton:focus-visible,
.runButton:focus-visible,
.clearButton:focus-visible,
.copyButton:focus-visible,
.utilityButton:focus-visible,
.devConsoleTab:focus-visible,
.devActionButton:focus-visible,
.devLearningEvent:focus-visible,
.ctaButton:focus-visible,
.navLink:focus-visible,
.modeCard input:focus-visible + .modeBody {
    border-color: rgba(191, 169, 255, 0.6);
    box-shadow: 0 0 0 1px rgba(191, 169, 255, 0.3);
    outline: none;
}

@media (prefers-reduced-motion: reduce) {
    .trainingProgressIntro {
        grid-template-columns: 1fr;
    }

    .trainingRingCard {
        justify-items: center;
        text-align: center;
    }

    .heroCard,
    .panelCard,
    .statusCard,
    .resultCard,
    .errorCard,
    .presetButton,
    .runButton,
    .clearButton,
    .copyButton,
    .utilityButton,
    .modeCard,
    .ctaButton,
    .navLink,
    textarea,
    input {
        animation: none;
        transition: none;
    }

    .statusSpinner {
        animation: none;
    }

    .voyageShipSprite,
    .voyageWakeSprite,
    .voyageShipBody,
    .voyageShipWake,
    .devVoyageShipSprite,
    .devVoyageWakeSprite,
    .devVoyageSpark,
    .voyageMapSpark,
    .voyageMapOverlay--barto img,
    .voyageCelebrationEffect,
    .voyageCelebrationSprite {
        animation: none;
    }
}

@media (max-width: 720px) {
    .overviewGrid--home,
    .roadmapGrid,
    .trainingStatGrid,
    .trainingRingGrid,
    .trainingStageRow,
    .voyageHeader,
    .voyageScene,
    .voyageFocusGrid,
    .voyageMiniStats,
    .devQuickGrid,
    .devStateGrid,
    .devMetricGrid,
    .devValidationGrid,
    .devValidationCanonicalGrid,
    .devValidationEvidenceGrid,
    .devResourceGrid,
    .devIssueGrid,
    .devVoyageHero,
    .devVoyageStatGrid,
    .devVoyageSupportGrid {
        grid-template-columns: 1fr;
    }

    .presetGrid--home {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 560px) {
    .appShell {
        padding-left: 0.82rem;
        padding-right: 0.82rem;
    }

    .topNav {
        align-items: flex-start;
    }

    .navLinks {
        width: 100%;
    }

    .heroCard,
    .heroCard--home {
        grid-template-columns: 1fr;
        justify-items: center;
        text-align: center;
        padding: 0.98rem 0.94rem;
    }

    .heroLogo,
    .heroLogo--home {
        width: 84px;
        height: 84px;
    }

    .homeAskCard {
        padding: 1rem 0.92rem;
    }

    .heroCopy h1 {
        font-size: 2rem;
    }

    .panelCard,
    .infoCard {
        padding: 0.92rem;
    }

    .modeBody {
        min-height: 86px;
    }

    .tipPill,
    .statusPill {
        width: 100%;
    }

    .fieldHeaderRow,
    .copyRow,
    .heroActions,
    .statusHeadingRow,
    .devSectionHeader,
    .devValidationDetailHeader,
    .devActivityHero,
    .voyageProgressHead,
    .devRefreshStack,
    .devResourceHead {
        align-items: stretch;
    }

    .ctaButton,
    .utilityButton,
    .devRefreshButton {
        width: 100%;
    }

    .devValidationInspectorRow {
        grid-template-columns: 1fr;
    }

    .voyageMapCanvas {
        min-height: 360px;
    }

    .voyageMapCanvas--dev {
        min-height: 420px;
    }

    .voyageMapNode {
        width: 76px;
    }

    .voyageMapIsland {
        width: 52px;
        height: 52px;
    }

    .voyageMapLabel {
        font-size: 0.68rem;
    }

    .voyageShipToken {
        width: 102px;
    }
}

@media (min-width: 700px) {
    .devConsoleTopbar {
        grid-template-columns: minmax(0, 1.35fr) minmax(220px, 0.7fr);
    }

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

    .devOverviewGrid {
        grid-template-columns: minmax(0, 1.18fr) minmax(0, 0.92fr);
    }

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

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

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

    .trainingProgressIntro {
        grid-template-columns: minmax(0, 1.4fr) minmax(220px, 0.7fr);
    }

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

    .intelligenceProgressIntro {
        grid-template-columns: minmax(0, 1.35fr) minmax(240px, 0.75fr);
        align-items: end;
    }

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

    .intelligenceVoyageNode {
        grid-template-columns: 1fr;
        align-items: start;
    }

    .intelligenceVoyageNode::after {
        left: auto;
        top: 50%;
        right: -0.4rem;
        bottom: auto;
        width: 0.8rem;
        height: 2px;
        background: linear-gradient(90deg, rgba(196, 173, 255, 0.34), rgba(196, 173, 255, 0));
        transform: translateY(-50%);
    }

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

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

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

    .trainingRingCard {
        grid-template-columns: auto minmax(0, 1fr);
    }

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

    .voyageHeader {
        grid-template-columns: minmax(0, 1.35fr) minmax(220px, 0.7fr);
        align-items: end;
    }

    .voyageScene--training {
        grid-template-columns: minmax(240px, 0.95fr) minmax(0, 1.2fr);
    }

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

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

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

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

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

    .devStateGrid,
    .devMetricGrid,
    .devResourceGrid,
    .devIssueGrid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .devSectionHeader {
        grid-template-columns: minmax(0, 1.4fr) minmax(210px, 0.7fr);
    }

    .devActivityHero {
        grid-template-columns: minmax(220px, 260px) minmax(0, 1fr);
    }

    .devVoyageHero {
        grid-template-columns: minmax(260px, 0.92fr) minmax(0, 1.2fr);
    }

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

    .voyageMiniStats--dev {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

@keyframes spin {
    to {
        transform: rotate(360deg);
    }
}

@keyframes panelRise {
    from {
        opacity: 0;
        transform: translateY(8px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeInPanel {
    from {
        opacity: 0;
        transform: translateY(4px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}
