:root {
    --cf-ink: #3d4a42;
    --cf-muted: rgba(61, 74, 66, 0.64);
    --cf-line: rgba(90, 140, 128, 0.2);
    --cf-panel: rgba(255, 248, 236, 0.92);
    --cf-panel-solid: #fff8ec;
    --cf-accent: #4db8a8;
    --cf-accent-strong: #2f9a8c;
    --cf-warm: #e8895a;
    --cf-danger: #e06a62;
    --cf-paper: #fff8ec;
    --cf-game-deep: #153f42;
    --cf-game-deeper: #0a2d31;
    --cf-game-cream: #fff0cf;
    --cf-game-mint: #6be0c8;
    --cf-leaf: #6cab8d;
    --cf-leaf-deep: #3f7767;
    --cf-mint-soft: #dcefdc;
    --cf-sand: #f6e8c8;
    --cf-sun: #f5cf75;
    --cf-clay: #e98d63;
    --cf-shadow: 0 16px 36px rgba(70, 110, 100, 0.16);
    --cf-radius: 22px;
    --cf-radius-sm: 14px;
}

html:has(.cf-app),
body:has(.cf-app) {
    height: 100%;
    overflow: hidden;
    background: #8ecde4;
}

body:has(.cf-app) header.site-header,
body:has(.cf-app) > footer,
body:has(.cf-app) .site-footer {
    display: none !important;
}

body:has(.cf-app) main,
body:has(.cf-app) .main-content,
body:has(.cf-app) .page-content {
    width: 100%;
    max-width: none;
    min-height: 0;
    margin: 0;
    padding: 0;
}

.cf-app,
.cf-app *,
.cf-app *::before,
.cf-app *::after {
    box-sizing: border-box;
}

.cf-app {
    position: fixed;
    inset: 0;
    z-index: 40;
    color: var(--cf-ink);
    overflow: hidden;
    background: #8ecde4;
    font-family: ui-rounded, "Hiragino Maru Gothic ProN", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
    isolation: isolate;
}

.cf-app button,
.cf-app a {
    -webkit-tap-highlight-color: transparent;
}

.cf-app button {
    color: inherit;
    font: inherit;
}

.cf-app [hidden] {
    display: none !important;
}

.cf-shell,
.cf-stage,
.cf-scene-canvas {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.cf-stage {
    overflow: hidden;
    background: #7ec8e0;
}

.cf-scene-canvas {
    display: block;
    image-rendering: crisp-edges;
    image-rendering: pixelated;
    touch-action: none;
    cursor: grab;
}

.cf-scene-canvas:active {
    cursor: grabbing;
}

.cf-scene-failure {
    position: absolute;
    inset: 50% auto auto 50%;
    z-index: 15;
    width: min(480px, calc(100% - 32px));
    margin: 0;
    padding: 20px 24px;
    color: #7a3a32;
    background: rgba(255, 236, 228, 0.94);
    border: 1px solid rgba(224, 106, 98, 0.4);
    transform: translate(-50%, -50%);
    text-align: center;
}

.cf-scene-vignette {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background:
        linear-gradient(90deg, rgba(8, 45, 49, 0.12), transparent 12%, transparent 88%, rgba(8, 45, 49, 0.12)),
        repeating-linear-gradient(0deg, transparent 0 3px, rgba(11, 53, 56, 0.018) 3px 4px);
    box-shadow: inset 0 -190px 110px rgba(9, 48, 50, 0.2), inset 0 90px 90px rgba(255, 230, 178, 0.1);
}

.cf-weather-fx {
    position: absolute;
    inset: 0;
    z-index: 2;
    overflow: hidden;
    pointer-events: none;
    opacity: 0;
    transition: opacity 700ms ease;
}

.cf-stage[data-weather="shower"] .cf-weather-fx {
    opacity: 0.22;
}

.cf-stage[data-weather="rain"] .cf-weather-fx,
.cf-stage[data-weather="storm"] .cf-weather-fx {
    opacity: 0.48;
}

.cf-stage[data-weather="storm"] .cf-weather-fx {
    opacity: 0.54;
}

.cf-weather-fx > i {
    position: absolute;
    inset: 0;
    opacity: 0;
    transition: opacity 700ms ease;
}

.cf-weather-haze {
    background:
        linear-gradient(180deg, rgba(116, 143, 153, 0.44), transparent 44%),
        radial-gradient(ellipse at 52% 39%, transparent 0 27%, rgba(180, 210, 220, 0.12) 68%, rgba(200, 230, 236, 0.18) 100%);
    mix-blend-mode: multiply;
}

.cf-stage[data-weather="shower"] .cf-weather-haze { opacity: 0.34; }
.cf-stage[data-weather="rain"] .cf-weather-haze { opacity: 0.58; }
.cf-stage[data-weather="storm"] .cf-weather-haze { opacity: 0.88; }

.cf-weather-fx > .cf-weather-lens {
    inset: -12%;
    background-image:
        linear-gradient(108deg, transparent 0 48.7%, rgba(231, 251, 255, 0.5) 49.2%, transparent 49.7%),
        linear-gradient(107deg, transparent 0 49.1%, rgba(212, 242, 248, 0.32) 49.5%, transparent 50%),
        radial-gradient(ellipse at 13% 22%, rgba(235, 252, 255, 0.2) 0 1px, transparent 2px),
        radial-gradient(ellipse at 72% 68%, rgba(235, 252, 255, 0.16) 0 1.5px, transparent 2.5px);
    background-position: 7% -30%, 73% -10%, 0 0, 0 0;
    background-size: 283px 211px, 197px 157px, 137px 113px, 211px 173px;
    filter: blur(0.35px);
    animation: cf-rain-lens 1.15s linear infinite;
}

.cf-stage[data-weather="shower"] .cf-weather-lens { opacity: 0.16; animation-duration: 1.55s; }
.cf-stage[data-weather="rain"] .cf-weather-lens { opacity: 0.34; }
.cf-stage[data-weather="storm"] .cf-weather-lens { opacity: 0.32; animation-duration: 0.72s; }

.cf-weather-flash {
    background: radial-gradient(circle at 64% 4%, rgba(229, 250, 255, 0.92), rgba(187, 225, 236, 0.28) 24%, transparent 58%);
    mix-blend-mode: screen;
}

.cf-stage[data-weather="storm"] .cf-weather-flash {
    animation: cf-weather-flash 8.6s linear infinite;
}

.cf-topbar {
    position: absolute;
    inset: 16px 20px auto;
    z-index: 12;
    display: grid;
    grid-template-columns: minmax(248px, 1fr) auto minmax(390px, 1fr);
    min-height: 60px;
    align-items: center;
    gap: 14px;
    padding: 0;
    color: var(--cf-ink);
    pointer-events: none;
}

.cf-topbar-start {
    display: flex;
    width: fit-content;
    min-width: 0;
    align-items: center;
    gap: 9px;
    padding: 6px 13px 7px 6px;
    background:
        radial-gradient(circle at 14px 14px, rgba(107, 171, 141, 0.13) 0 2px, transparent 2.5px) 0 0 / 22px 22px,
        rgba(255, 248, 228, 0.94);
    border: 2px solid rgba(255, 255, 255, 0.72);
    border-radius: 28px 22px 26px 20px;
    box-shadow: 0 5px 0 rgba(55, 105, 91, 0.3), 0 13px 28px rgba(20, 67, 61, 0.18);
    backdrop-filter: blur(12px) saturate(1.08);
    pointer-events: auto;
}

.cf-back,
.cf-topbar-actions button {
    min-height: 44px;
    padding: 0 13px;
    color: var(--cf-leaf-deep);
    background: transparent;
    border: 0;
    border-radius: 18px;
    cursor: pointer;
    text-decoration: none;
    transition: transform 180ms ease, background 180ms ease, box-shadow 180ms ease, color 180ms ease;
}

.cf-back {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    color: #fffaf0;
    background: var(--cf-leaf);
    box-shadow: inset 0 -3px rgba(45, 104, 88, 0.24);
    font-size: 12px;
    font-weight: 800;
}

.cf-back:hover,
.cf-back:focus-visible,
.cf-topbar-actions button:hover,
.cf-topbar-actions button:focus-visible {
    color: var(--cf-leaf-deep);
    background: #fffaf0;
    box-shadow: 0 4px 0 rgba(75, 123, 107, 0.18);
    transform: translateY(-2px);
    outline: none;
}

.cf-back:active,
.cf-topbar-actions button:active {
    box-shadow: none;
    transform: translateY(1px) scale(0.98);
}

.cf-brand {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 166px;
    padding-left: 2px;
}

.cf-brand-signal {
    position: relative;
    display: grid;
    width: 32px;
    height: 32px;
    place-items: center;
    background: var(--cf-mint-soft);
    border: 2px solid rgba(90, 153, 125, 0.28);
    border-radius: 50%;
}

.cf-brand-signal::before,
.cf-brand-signal::after,
.cf-brand-signal i {
    content: "";
    position: absolute;
    width: 4px;
    height: 4px;
    background: var(--cf-leaf);
    border-radius: 50%;
}

.cf-brand-signal::before { transform: translate(-6px, -4px); }
.cf-brand-signal::after { transform: translate(6px, -4px); }
.cf-brand-signal i { width: 10px; height: 8px; transform: translateY(5px); border-radius: 50% 50% 45% 45%; }

.cf-brand span:last-child {
    display: grid;
    gap: 1px;
}

.cf-brand strong {
    color: #315f53;
    font-size: 15px;
    letter-spacing: -0.01em;
}

.cf-brand small {
    color: rgba(61, 91, 76, 0.62);
    font-size: 11px;
}

.cf-topbar-status {
    display: flex;
    justify-self: center;
    align-items: center;
    gap: 0;
    padding: 6px 8px;
    background: rgba(235, 246, 224, 0.94);
    border: 2px solid rgba(255, 255, 255, 0.7);
    border-radius: 23px 29px 21px 27px;
    box-shadow: 0 5px 0 rgba(62, 112, 96, 0.24), 0 12px 26px rgba(19, 65, 59, 0.16);
    backdrop-filter: blur(12px) saturate(1.08);
    pointer-events: auto;
}

.cf-topbar-status > span {
    display: grid;
    min-width: 82px;
    gap: 1px;
    padding: 2px 14px;
    border-left: 1px dashed rgba(74, 119, 101, 0.25);
}

.cf-topbar-status > span:first-child { border-left: 0; }

.cf-topbar-status small {
    color: rgba(62, 99, 82, 0.62);
    font-size: 10px;
    font-weight: 700;
}

.cf-topbar-status b {
    color: #315f53;
    font-size: 13px;
    font-weight: 800;
}

.cf-topbar-actions {
    display: flex;
    justify-self: end;
    gap: 4px;
    padding: 5px;
    background: rgba(255, 248, 228, 0.94);
    border: 2px solid rgba(255, 255, 255, 0.72);
    border-radius: 24px 30px 22px 27px;
    box-shadow: 0 5px 0 rgba(55, 105, 91, 0.26), 0 13px 28px rgba(20, 67, 61, 0.18);
    backdrop-filter: blur(12px) saturate(1.08);
    pointer-events: auto;
}

.cf-topbar-actions button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    padding-inline: 10px;
    font-size: 12px;
    font-weight: 800;
}
.cf-topbar-actions button::before { display: grid; width: 28px; height: 28px; flex: 0 0 auto; place-items: center; color: #fffaf0; background: var(--cf-leaf); border-radius: 50%; font-size: 15px; font-weight: 900; line-height: 1; }
.cf-topbar-actions .cf-economy-trigger { min-width: 116px; background: rgba(210, 235, 211, 0.72); }
.cf-topbar-actions .cf-economy-trigger::before { content: "袋"; }
.cf-topbar-actions .cf-shop-trigger { background: rgba(250, 220, 166, 0.62); }
.cf-topbar-actions .cf-shop-trigger::before { content: "饵"; color: #7b5731; background: var(--cf-sun); }
.cf-topbar-actions .cf-journal-trigger { min-width: 124px; background: rgba(212, 237, 231, 0.72); }
.cf-topbar-actions .cf-journal-trigger::before { content: "记"; }
.cf-journal-trigger small { padding: 3px 7px; color: var(--cf-leaf-deep); background: rgba(255,255,255,.62); border-radius: 999px; font-size: 9px; font-variant-numeric: tabular-nums; }
.cf-economy-trigger small { color: var(--cf-leaf-deep); font-size: 9px; font-variant-numeric: tabular-nums; }

.cf-topbar-actions .cf-music-toggle {
    color: var(--cf-leaf-deep);
    background: rgba(255, 239, 189, 0.62);
}

.cf-topbar-actions .cf-music-toggle::before { content: "♪"; color: #74542b; background: var(--cf-sun); }
.cf-topbar-actions .cf-help-trigger::before { content: "?"; }

.cf-topbar-actions .cf-music-toggle[aria-pressed="false"] {
    color: rgba(63, 91, 78, 0.55);
    background: rgba(224, 225, 210, 0.68);
}

.cf-topbar-actions .cf-music-toggle[aria-pressed="false"]::before {
    color: #eef0e4;
    background: #8c9b90;
}

.cf-world-hud {
    position: absolute;
    inset: 92px auto auto 28px;
    z-index: 7;
    display: flex;
    align-items: flex-start;
    gap: 16px;
    pointer-events: none;
}

.cf-location-stack {
    display: grid;
    width: min(372px, calc(100vw - 56px));
    gap: 8px;
}

.cf-location-card {
    position: relative;
    width: 100%;
    overflow: hidden;
    padding: 16px 19px 18px;
    color: var(--cf-ink);
    background:
        radial-gradient(circle at 17px 17px, rgba(232, 141, 99, 0.1) 0 2px, transparent 2.5px) 0 0 / 27px 27px,
        rgba(255, 248, 228, 0.94);
    border: 3px solid rgba(255, 255, 255, 0.72);
    border-radius: 28px 20px 30px 23px;
    box-shadow: 0 6px 0 rgba(55, 105, 91, 0.28), 0 16px 32px rgba(7, 50, 53, 0.18);
    backdrop-filter: blur(10px);
}

.cf-location-card::after {
    content: "";
    position: absolute;
    top: -20px;
    right: -12px;
    width: 74px;
    height: 54px;
    background: rgba(108, 171, 141, 0.16);
    border-radius: 54% 46% 60% 40%;
    transform: rotate(14deg);
}

.cf-location-card > span,
.cf-event-banner > span,
.cf-captain > span,
.cf-character-select > span,
.cf-menu-kicker,
.cf-dialog-code,
.cf-event-choice header > span {
    color: var(--cf-warm);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.04em;
}

.cf-location-card h1 {
    margin: 4px 0 3px;
    font-size: clamp(25px, 2.7vw, 38px);
    font-weight: 850;
    letter-spacing: -0.045em;
    line-height: 1;
}

.cf-location-card p {
    margin: 0;
    color: rgba(61, 74, 66, 0.68);
    font-size: 12px;
    line-height: 1.55;
}

.cf-readouts {
    display: flex;
    gap: 8px;
}

.cf-readouts p {
    display: grid;
    min-width: 94px;
    gap: 2px;
    margin: 0;
    padding: 12px 15px;
    color: var(--cf-ink);
    background: rgba(221, 239, 220, 0.94);
    border: 2px solid rgba(255, 255, 255, 0.68);
    border-radius: 20px 17px 22px 18px;
    box-shadow: 0 4px 0 rgba(55, 105, 91, 0.25), 0 10px 22px rgba(7, 50, 53, 0.13);
    backdrop-filter: blur(10px);
}

.cf-readouts p:nth-child(2) { background: rgba(255, 235, 190, 0.94); }

.cf-readouts span {
    color: rgba(61, 91, 76, 0.62);
    font-size: 10px;
    font-weight: 700;
}

.cf-readouts strong {
    color: var(--cf-leaf-deep);
    font-size: 14px;
}

.cf-captain {
    position: absolute;
    top: 92px;
    right: 28px;
    z-index: 7;
    width: min(300px, 24vw);
    padding: 12px 15px;
    color: var(--cf-ink);
    background: rgba(255, 248, 228, 0.94);
    border: 3px solid rgba(255, 255, 255, 0.72);
    border-radius: 23px 29px 18px 25px;
    box-shadow: 0 5px 0 rgba(55, 105, 91, 0.26), 0 12px 25px rgba(7, 50, 53, 0.15);
    backdrop-filter: blur(10px);
    pointer-events: none;
}

.cf-captain::after {
    content: "";
    position: absolute;
    right: 28px;
    bottom: -12px;
    width: 22px;
    height: 22px;
    background: rgba(255, 248, 228, 0.96);
    border-radius: 4px 0 15px;
    transform: rotate(38deg);
}

.cf-captain p {
    display: grid;
    gap: 4px;
    margin: 5px 0 0;
}

.cf-captain strong {
    font-size: 12px;
    font-weight: 600;
}

.cf-captain small {
    color: rgba(61, 74, 66, 0.6);
    font-size: 10px;
}

.cf-spot-layer {
    position: absolute;
    inset: 0;
    z-index: 6;
    pointer-events: none;
}

.cf-spot-marker {
    position: absolute;
    left: var(--spot-x);
    top: var(--spot-y);
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 44px;
    min-height: 44px;
    padding: 6px 10px 6px 7px;
    color: var(--cf-ink);
    background: rgba(255, 248, 228, 0.94);
    border: 2px solid rgba(255, 255, 255, 0.78);
    border-radius: 20px 15px 22px 17px;
    box-shadow: 0 4px 0 rgba(55, 105, 91, 0.28), 0 10px 20px rgba(6, 47, 50, 0.18);
    transform: translate(-50%, -50%);
    backdrop-filter: blur(8px);
    pointer-events: auto;
    cursor: pointer;
    opacity: 0;
    visibility: hidden;
    transform: translate(-50%, calc(-100% - 22px));
    transform-origin: 50% 100%;
    transition: transform 160ms ease, border-color 160ms ease, background 160ms ease, opacity 120ms ease, visibility 120ms ease;
}

.cf-spot-marker[data-projected="true"] {
    opacity: 1;
    visibility: visible;
}

.cf-spot-marker::after {
    content: "";
    position: absolute;
    top: 100%;
    left: 50%;
    width: 1px;
    height: 22px;
    background: linear-gradient(var(--cf-accent), rgba(114, 234, 217, 0.18));
    box-shadow: 0 0 8px rgba(114, 234, 217, 0.35);
    pointer-events: none;
}

.cf-spot-marker > i {
    display: block;
    width: 24px;
    height: 24px;
    background: var(--cf-mint-soft);
    border: 2px solid var(--cf-leaf);
    border-radius: 50%;
    box-shadow: inset 0 0 0 5px rgba(255, 255, 255, 0.52);
}

.cf-spot-marker span {
    display: grid;
    min-width: 60px;
    text-align: left;
}

.cf-spot-marker b {
    color: var(--cf-warm);
    font-size: 8px;
}

.cf-spot-marker strong {
    overflow: hidden;
    max-width: 110px;
    color: var(--cf-leaf-deep);
    font-size: 11px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cf-spot-marker[aria-pressed="true"] {
    color: #173f42;
    background: #fff0cf;
    border-color: var(--cf-warm);
    transform: translate(-50%, calc(-100% - 22px)) scale(1.06);
}

.cf-spot-marker[aria-pressed="true"] strong {
    color: #173f42;
}

.cf-spot-marker[aria-pressed="true"]::after {
    background: linear-gradient(var(--cf-warm), rgba(245, 161, 109, 0.2));
    box-shadow: 0 0 10px rgba(245, 161, 109, 0.46);
}

.cf-spot-marker[aria-pressed="true"] > i {
    border-color: var(--cf-warm);
    box-shadow: inset 0 0 0 5px rgba(245, 161, 109, 0.2), 0 0 20px rgba(245, 161, 109, 0.35);
}

.cf-spot-marker:focus-visible {
    outline: 2px solid white;
    outline-offset: 3px;
}

.cf-console {
    position: absolute;
    inset: auto max(18px, calc((100vw - 1180px) / 2)) 18px;
    z-index: 10;
    display: grid;
    grid-template-columns: minmax(260px, 0.85fr) minmax(300px, 1.25fr) minmax(290px, 0.9fr);
    min-height: 132px;
    overflow: hidden;
    color: var(--cf-game-cream);
    background:
        radial-gradient(circle at 18px 18px, rgba(255, 240, 207, 0.055) 0 2px, transparent 2.5px) 0 0 / 30px 30px,
        rgba(31, 88, 82, 0.95);
    border: 4px solid rgba(255, 243, 216, 0.9);
    border-radius: 30px 24px 38px 32px;
    box-shadow: 0 7px 0 rgba(37, 89, 76, 0.72), 0 18px 38px rgba(4, 38, 41, 0.28);
    isolation: isolate;
}

.cf-console::before {
    content: "";
    position: absolute;
    inset: 0 0 auto;
    z-index: 0;
    height: 8px;
    background: radial-gradient(circle, rgba(255, 245, 220, 0.88) 0 2px, transparent 2.6px) 0 0 / 23px 8px repeat-x;
    opacity: 0.64;
}

.cf-console::after {
    content: "";
    position: absolute;
    inset: auto 16px 9px;
    z-index: 0;
    height: 6px;
    pointer-events: none;
    background: repeating-linear-gradient(90deg, transparent 0 12px, rgba(255, 240, 207, 0.5) 12px 18px, transparent 18px 30px);
    opacity: 0.3;
}

.cf-loadout,
.cf-technique,
.cf-cast-zone {
    position: relative;
    z-index: 1;
    min-width: 0;
    padding: 15px 18px;
}

.cf-loadout,
.cf-technique {
    border-right: 1px dashed rgba(255, 240, 207, 0.28);
}

.cf-expedition-meter {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: end;
    gap: 2px 12px;
}

.cf-expedition-meter > span,
.cf-lure-fieldset legend,
.cf-technique-heading span {
    color: rgba(255, 240, 207, 0.58);
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.04em;
}

.cf-expedition-meter > strong {
    font-size: 12px;
}

.cf-expedition-meter em {
    color: var(--cf-warm);
    font-size: 19px;
    font-style: normal;
}

.cf-energy-cells {
    grid-column: 1 / -1;
    display: flex;
    gap: 3px;
    margin-top: 6px;
}

.cf-energy-cell {
    width: 100%;
    height: 8px;
    background: rgba(255, 240, 207, 0.12);
    border: 1px solid rgba(255, 240, 207, 0.1);
    border-radius: 2px;
}

.cf-energy-cell[data-active="true"] {
    background: #ff9a5f;
    box-shadow: 0 0 10px rgba(255, 141, 88, 0.34);
}

.cf-lure-fieldset {
    min-width: 0;
    margin: 10px 0 0;
    padding: 0;
    border: 0;
}

.cf-lure-list {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 5px;
    margin-top: 5px;
}

.cf-lure-button {
    min-width: 0;
    min-height: 44px;
    padding: 6px 8px;
    color: #173f42;
    background: #f6e8c8;
    border: 2px solid rgba(255, 255, 255, 0.42);
    border-radius: 15px 12px 17px 13px;
    box-shadow: inset 0 -3px 0 rgba(107, 77, 43, 0.12), 0 3px 0 rgba(36, 75, 66, 0.28);
    cursor: pointer;
}

.cf-lure-button strong,
.cf-lure-button small {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cf-lure-button strong { color: #173f42; font-size: 10px; }
.cf-lure-button small { margin-top: 2px; color: rgba(23, 63, 66, 0.65); font-size: 8px; }
.cf-lure-button b { display: block; margin-top: 3px; color: #8a4c2e; font-size: 9px; font-variant-numeric: tabular-nums; }
.cf-lure-button[aria-pressed="true"] { color: #fff8ec; background: #e87348; border-color: rgba(255,255,255,.5); box-shadow: inset 0 -3px 0 rgba(120, 48, 28, 0.24), 0 3px 0 rgba(79, 45, 30, 0.32), 0 0 14px rgba(255, 141, 88, 0.22); }
.cf-lure-button[aria-pressed="true"] strong { color: #fff8ec; }
.cf-lure-button[aria-pressed="true"] small { color: rgba(255, 248, 236, 0.78); }
.cf-lure-button[aria-pressed="true"] b { color: #fff0cf; }
.cf-lure-button[data-empty="true"] { opacity: .52; filter: grayscale(.55); }
.cf-lure-button:focus-visible { outline: 2px solid white; outline-offset: 2px; }

.cf-technique-heading {
    display: flex;
    justify-content: space-between;
    gap: 12px;
}

.cf-technique-heading strong {
    color: var(--cf-game-mint);
    font-size: 11px;
}

.cf-skill-meter {
    position: relative;
    height: 18px;
    margin-top: 12px;
    overflow: hidden;
    background: #082f33;
    border: 2px solid rgba(255, 240, 207, 0.25);
    border-radius: 4px;
}

.cf-skill-meter::before {
    content: "";
    position: absolute;
    inset: 0;
    background-image: repeating-linear-gradient(90deg, transparent 0 calc(10% - 1px), rgba(220, 244, 240, 0.1) calc(10% - 1px) 10%);
}

.cf-skill-target {
    position: absolute;
    top: 2px;
    bottom: 2px;
    left: 45%;
    width: 22%;
    background: rgba(107, 224, 200, 0.58);
    border-radius: 2px;
    box-shadow: 0 0 14px rgba(107, 224, 200, 0.2);
}

.cf-skill-needle {
    position: absolute;
    top: -2px;
    bottom: -2px;
    left: 0;
    width: 3px;
    background: var(--cf-warm);
    box-shadow: 0 0 11px rgba(245, 161, 109, 0.8);
    transform: translateX(-1px);
}

.cf-technique > p {
    display: grid;
    gap: 3px;
    margin: 11px 0 0;
}

.cf-technique > p b {
    font-size: 12px;
}

.cf-technique > p span {
    overflow: hidden;
    color: rgba(255, 240, 207, 0.58);
    font-size: 9px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cf-cast-zone {
    display: grid;
    grid-template-rows: 1fr auto;
    gap: 5px;
}

.cf-cast-button {
    display: flex;
    min-height: 72px;
    align-items: center;
    justify-content: center;
    gap: 14px;
    padding: 10px 18px;
    color: #fff8ec;
    background: #e87348;
    border: 2px solid #ffc17f;
    border-radius: 10px;
    box-shadow: inset 0 -5px 0 rgba(117, 45, 27, 0.28), 0 7px 0 #772f22, 0 12px 20px rgba(8, 35, 36, 0.34);
    cursor: pointer;
    transition: transform 150ms ease, filter 150ms ease;
}

.cf-cast-button:hover:not(:disabled) { filter: brightness(1.08); transform: translateY(-2px); }
.cf-cast-button:active:not(:disabled) { box-shadow: inset 0 -3px 0 rgba(117, 45, 27, 0.24), 0 3px 0 #772f22; transform: translateY(4px); }
.cf-cast-button:focus-visible { outline: 3px solid white; outline-offset: 3px; }
.cf-cast-button:disabled { color: rgba(255, 240, 207, 0.38); background: rgba(255, 240, 207, 0.08); border-color: rgba(255, 240, 207, 0.12); box-shadow: none; cursor: not-allowed; }

.cf-cast-key {
    padding: 7px 8px;
    border: 1px solid currentColor;
    font-size: 8px;
    font-weight: 900;
    letter-spacing: 0.08em;
}

.cf-cast-button > span:last-child { display: grid; min-width: 0; gap: 2px; text-align: left; }
.cf-cast-button strong { font-size: 15px; }
.cf-cast-button small { font-size: 9px; opacity: 0.68; }

.cf-cast-zone > p {
    overflow: hidden;
    margin: 0;
    color: rgba(255, 240, 207, 0.56);
    font-size: 9px;
    text-align: center;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cf-action-feedback {
    position: absolute;
    right: 28px;
    bottom: 188px;
    z-index: 18;
    display: grid;
    grid-template-columns: 36px minmax(0, 1fr);
    width: min(340px, calc(100vw - 40px));
    align-items: center;
    gap: 11px;
    padding: 10px 13px;
    color: var(--cf-game-cream);
    background: rgba(13, 52, 55, 0.94);
    border: 1px solid rgba(255, 240, 207, 0.34);
    border-radius: 13px;
    box-shadow: 0 5px 0 rgba(5, 36, 39, 0.88), 0 15px 30px rgba(5, 36, 39, 0.2);
    opacity: 0;
    pointer-events: none;
    transform: translateY(12px) scale(0.98);
    transition: opacity 180ms ease, transform 260ms cubic-bezier(.2,.8,.2,1);
}
.cf-action-feedback[data-visible="true"] { opacity: 1; transform: translateY(0) scale(1); }
.cf-action-feedback > i { position: relative; width: 34px; height: 34px; background: rgba(107,224,200,.12); border: 1px solid rgba(107,224,200,.44); border-radius: 50%; }
.cf-action-feedback > i::before, .cf-action-feedback > i::after { content: ""; position: absolute; inset: 9px; border: 2px solid var(--cf-game-mint); border-radius: 50%; }
.cf-action-feedback > i::after { inset: 14px; background: var(--cf-game-mint); }
.cf-action-feedback[data-kind="lure"] > i, .cf-action-feedback[data-kind="decision"] > i { background: rgba(255,141,88,.13); border-color: rgba(255,176,111,.55); }
.cf-action-feedback[data-kind="lure"] > i::before, .cf-action-feedback[data-kind="decision"] > i::before { border-color: var(--cf-game-coral); border-radius: 50% 50% 25% 50%; transform: rotate(45deg); }
.cf-action-feedback[data-kind="lure"] > i::after, .cf-action-feedback[data-kind="decision"] > i::after { background: var(--cf-game-coral); }
.cf-action-feedback > span { display: grid; min-width: 0; gap: 3px; }
.cf-action-feedback small { color: var(--cf-game-mint); font-size: 8px; font-weight: 800; letter-spacing: .08em; }
.cf-action-feedback strong { overflow: hidden; font-size: 10px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }

.cf-run-summary { display: grid; grid-template-columns: 1fr auto; align-items: end; margin-top: 18px; padding: 14px; background: rgba(255,255,255,.55); border: 1px solid var(--cf-line); border-radius: var(--cf-radius-sm); }
.cf-run-summary > p { display: grid; gap: 4px; margin: 0; }
.cf-run-summary > p span, .cf-run-summary div span { color: var(--cf-muted); font-size: 9px; }
.cf-run-summary > p strong { color: var(--cf-warm); font-size: 30px; font-variant-numeric: tabular-nums; }
.cf-run-summary > div { display: flex; gap: 18px; }
.cf-run-summary > div p { display: grid; gap: 4px; margin: 0; text-align: right; }

.cf-log > ol,
.cf-voyage-timeline { margin: 12px 0 0; padding: 0; list-style: none; }
.cf-log-item { display: grid; grid-template-columns: 28px 1fr auto; align-items: center; gap: 8px; padding: 10px 0; border-bottom: 1px solid var(--cf-line); }
.cf-log-number { color: var(--cf-accent); font-size: 9px; }
.cf-log-copy { display: grid; gap: 2px; }
.cf-log-copy strong { font-size: 11px; }
.cf-log-copy small { color: var(--cf-muted); font-size: 8px; }
.cf-log-score { display: grid; gap: 2px; text-align: right; }
.cf-log-score b { color: var(--cf-warm); font-size: 10px; }
.cf-log-score span { color: var(--cf-muted); font-size: 8px; }
.cf-log-empty { padding: 16px 0; color: var(--cf-muted); font-size: 10px; }
.cf-log-empty p { margin: 0; }

.cf-voyage-note { margin-top: 18px; padding: 14px; border: 1px solid var(--cf-line); border-radius: var(--cf-radius-sm); background: rgba(255,255,255,.45); }
.cf-voyage-note header { display: flex; justify-content: space-between; gap: 12px; }
.cf-voyage-note h3 { margin: 0; font-size: 14px; }
.cf-voyage-note header small { color: var(--cf-muted); font-size: 8px; }
.cf-voyage-note > p { margin: 8px 0 0; color: var(--cf-muted); font-size: 10px; line-height: 1.55; }
.cf-voyage-timeline li { display: grid; grid-template-columns: 25px 1fr; gap: 8px; padding-top: 7px; font-size: 9px; }
.cf-voyage-timeline li span { color: var(--cf-warm); }
.cf-voyage-timeline li p { margin: 0; }
.cf-total-summary { display: grid; grid-template-columns: repeat(3, 1fr); gap: 5px; margin-top: 14px; }
.cf-total-summary div { display: grid; gap: 4px; padding: 9px; background: rgba(255,255,255,.55); border-radius: 12px; }
.cf-total-summary span { color: var(--cf-muted); font-size: 8px; }
.cf-total-summary strong { font-size: 12px; }

.cf-event-banner {
    position: relative;
    width: 100%;
    padding: 12px 15px;
    color: var(--cf-game-cream);
    background: rgba(15, 58, 61, 0.9);
    border: 2px solid rgba(255, 141, 88, 0.72);
    border-radius: 10px;
    box-shadow: 0 4px 0 rgba(6, 39, 42, 0.84);
}
.cf-event-banner strong { display: block; margin-top: 3px; font-size: 13px; }
.cf-event-banner p { margin: 4px 0 0; color: rgba(255, 240, 207, 0.62); font-size: 9px; }

.cf-stage[data-action="aiming"] .cf-technique,
.cf-stage[data-action="casting"] .cf-technique,
.cf-stage[data-action="hooked"] .cf-technique,
.cf-stage[data-action="reeling"] .cf-technique {
    background: rgba(107, 224, 200, 0.055);
    box-shadow: inset 0 0 24px rgba(107, 224, 200, 0.06);
}

.cf-stage[data-action="casting"] .cf-cast-button,
.cf-stage[data-action="reeling"] .cf-cast-button {
    animation: cf-game-action-pulse 720ms steps(2, end) infinite alternate;
}

.cf-event-choice {
    position: absolute;
    top: 50%;
    left: 50%;
    z-index: 22;
    width: min(590px, calc(100% - 36px));
    max-height: calc(100dvh - 96px - env(safe-area-inset-top) - env(safe-area-inset-bottom));
    overflow: auto;
    padding: 22px;
    color: var(--cf-game-cream);
    background: rgba(12, 49, 52, 0.97);
    border: 2px solid rgba(255, 240, 207, 0.72);
    border-radius: 14px;
    box-shadow: 0 6px 0 rgba(5, 35, 38, 0.96), 0 22px 52px rgba(4, 35, 38, 0.36);
    transform: translate(-50%, -52%);
    backdrop-filter: blur(22px);
}
.cf-event-choice h2 { margin: 5px 0; font-size: 24px; }
.cf-event-choice header p { margin: 0; color: rgba(255, 240, 207, 0.66); font-size: 11px; }
.cf-event-choice-list { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 14px; }
.cf-event-choice-button { min-height: 112px; padding: 14px; background: #f5dfb8; border: 2px solid #9b7e56; border-radius: 9px; box-shadow: inset 0 -3px 0 rgba(107,77,43,.14); text-align: left; cursor: pointer; }
.cf-event-choice-button strong, .cf-event-choice-button small, .cf-event-choice-button em { display: block; }
.cf-event-choice-button strong { color: #173f42; font-size: 13px; }
.cf-event-choice-button small { margin-top: 5px; color: rgba(23,63,66,.68); font-size: 9px; line-height: 1.5; }
.cf-event-choice-button em { margin-top: 9px; color: var(--cf-accent); font-size: 9px; font-style: normal; }
.cf-event-choice-button[aria-pressed="true"] { background: #d5f0df; border-color: var(--cf-accent); }

.cf-main-menu {
    position: absolute;
    inset: 0;
    z-index: 30;
    display: grid;
    place-items: center;
    overflow: auto;
    padding: max(72px, calc(env(safe-area-inset-top) + 60px)) 20px max(20px, env(safe-area-inset-bottom));
    background:
        radial-gradient(circle at 50% 45%, rgba(255, 250, 231, 0.14) 0 18%, transparent 46%),
        linear-gradient(180deg, rgba(255, 248, 236, 0.04), rgba(255, 236, 210, 0.2) 56%, rgba(255, 236, 210, 0.58));
    box-shadow: inset 0 -30vh 20vh rgba(255, 236, 210, 0.32);
    backdrop-filter: saturate(1.05);
}

.cf-menu-back,
.cf-menu-music {
    position: absolute;
    top: max(18px, env(safe-area-inset-top));
    z-index: 2;
    display: inline-flex;
    min-height: 46px;
    align-items: center;
    justify-content: center;
    padding: 0 15px;
    color: var(--cf-ink);
    background: rgba(255, 248, 236, 0.92);
    border: 1px solid rgba(232, 196, 150, 0.45);
    border-radius: 999px;
    box-shadow: var(--cf-shadow);
    backdrop-filter: blur(18px);
    transition: color 180ms ease, background 180ms ease, border-color 180ms ease, transform 180ms ease;
    cursor: pointer;
}

.cf-menu-back {
    left: max(20px, env(safe-area-inset-left));
    gap: 8px;
    text-decoration: none;
}

.cf-menu-back > span:first-child { font-size: 17px; }

.cf-menu-music {
    right: max(20px, env(safe-area-inset-right));
    min-width: 112px;
    gap: 10px;
}

.cf-menu-back:hover,
.cf-menu-back:focus-visible,
.cf-menu-music:hover,
.cf-menu-music:focus-visible {
    color: var(--cf-ink);
    background: #fff4e4;
    border-color: #ad4f2e;
    transform: translateY(-1px);
}

.cf-menu-back:focus-visible,
.cf-menu-music:focus-visible {
    outline: 3px solid #ad4f2e;
    outline-offset: 3px;
}

.cf-menu-music[aria-pressed="false"] {
    color: var(--cf-muted);
    border-color: var(--cf-line);
}

.cf-music-bars {
    display: flex;
    width: 18px;
    height: 16px;
    align-items: end;
    justify-content: center;
    gap: 2px;
}

.cf-music-bars i {
    width: 3px;
    height: 45%;
    background: currentColor;
    animation: cf-music-bar 680ms ease-in-out infinite alternate;
}

.cf-music-bars i:nth-child(2) { height: 100%; animation-delay: -420ms; }
.cf-music-bars i:nth-child(3) { height: 68%; animation-delay: -220ms; }
.cf-menu-music[aria-pressed="false"] .cf-music-bars i { height: 3px; animation-play-state: paused; }

.cf-app:has(.cf-main-menu:not([hidden])) .cf-topbar,
.cf-app:has(.cf-main-menu:not([hidden])) .cf-world-hud,
.cf-app:has(.cf-main-menu:not([hidden])) .cf-captain,
.cf-app:has(.cf-main-menu:not([hidden])) .cf-spot-layer,
.cf-app:has(.cf-main-menu:not([hidden])) .cf-event-banner,
.cf-app:has(.cf-main-menu:not([hidden])) .cf-event-choice,
.cf-app:has(.cf-main-menu:not([hidden])) .cf-console {
    visibility: hidden;
}

.cf-app:has(.cf-main-menu:not([hidden])) .cf-spot-marker {
    opacity: 0;
    visibility: hidden;
}

.cf-menu-content { display: grid; width: min(100%, 780px); min-width: 0; justify-items: center; text-align: center; }
.cf-menu-copy { min-width: 0; }
.cf-menu-copy h1 { margin: 0; font-size: clamp(58px, 7.2vw, 96px); font-weight: 800; letter-spacing: -0.07em; line-height: .9; text-wrap: balance; text-shadow: 0 2px 0 rgba(255, 248, 236, 0.9), 0 14px 34px rgba(255, 236, 210, 0.5); }
.cf-menu-copy > p { margin: 15px 0 0; color: #7f3f29; font-size: clamp(16px, 1.7vw, 20px); font-weight: 650; line-height: 1.45; text-wrap: balance; }

.cf-cat-stage { position: relative; display: grid; width: min(410px, 66vw); height: clamp(250px, 36vh, 350px); place-items: end center; margin-top: 4px; }
.cf-menu-cat { display: block; width: 100%; height: 100%; object-fit: contain; object-position: center bottom; filter: drop-shadow(0 16px 16px rgba(58, 50, 37, .18)); transform-origin: 50% 92%; animation: cf-cat-float 3.4s ease-in-out infinite; }
.cf-menu-cat.is-meowing { animation: cf-cat-meow 420ms cubic-bezier(.2,.8,.3,1); }
.cf-cat-stage > p { position: absolute; right: 0; bottom: 0; left: 0; z-index: 5; margin: 0; color: #7b4a36; font-size: 11px; font-weight: 700; letter-spacing: .06em; }

.cf-entry-card { box-sizing: border-box; width: min(100%, 740px); min-width: 0; padding: 17px 22px 20px; background: rgba(255, 248, 236, .74); border: 1px solid rgba(232, 196, 150, .46); border-radius: 22px; box-shadow: 0 18px 44px rgba(83, 66, 45, .13), inset 0 1px rgba(255,255,255,.68); backdrop-filter: blur(18px); }
.cf-character-select { width: 100%; min-width: 0; }
.cf-character-select h2 { margin: 0 0 4px; font-size: 20px; letter-spacing: -0.025em; }
.cf-character-hint { margin: 0 0 12px; color: var(--cf-muted); font-size: 11px; line-height: 1.5; }
.cf-coat-list { display: grid; width: 100%; min-width: 0; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 9px; }
.cf-coat-list button { display: grid; min-width: 0; min-height: 76px; grid-template-columns: 46px minmax(0,1fr); align-items: center; gap: 8px; padding: 7px; background: rgba(255,255,255,.58); border: 1px solid var(--cf-line); border-radius: 14px; text-align: left; cursor: pointer; }
.cf-coat-thumb { display: block; width: 46px; height: 46px; overflow: hidden; background: rgba(255, 248, 236, .78); border: 1px solid rgba(232, 196, 150, .42); border-radius: 50%; }
.cf-coat-thumb img { display: block; width: 100%; height: 100%; object-fit: contain; object-position: center bottom; }
.cf-coat-list button > span:not(.cf-coat-thumb) { display: grid; gap: 2px; }
.cf-coat-list button strong { font-size: 13px; }
.cf-coat-list button small { color: var(--cf-muted); font-size: 9px; }
.cf-coat-list button { transition: transform 180ms ease, background 180ms ease, border-color 180ms ease; }
.cf-coat-list button:hover { transform: translateY(-2px); background: #fff; }
.cf-coat-list button:active { transform: translateY(0) scale(.985); }
.cf-coat-list button[aria-pressed="true"] { background: #fff4e4; border-color: #ad4f2e; box-shadow: inset 0 -3px #ad4f2e, 0 8px 18px rgba(173, 79, 46, .16); }
.cf-coat-list button:focus-visible { outline: 2px solid #ad4f2e; outline-offset: 2px; }
.cf-menu-boarding { width: 100%; margin-top: 13px; padding-top: 13px; border-top: 1px solid var(--cf-line); }
.cf-menu-actions { display: grid; grid-template-columns: minmax(0, 1fr) 112px; gap: 8px; }
.cf-start-button, .cf-menu-help { min-height: 58px; padding: 0 17px; border-radius: 999px; cursor: pointer; }
.cf-app .cf-start-button { color: #fff8ec; background: #ad4f2e; border: 0; font-size: 15px; font-weight: 800; letter-spacing: .02em; transition: transform 180ms ease, background 180ms ease, box-shadow 180ms ease; }
.cf-app .cf-start-button:hover:not(:disabled) { background: #9c4327; box-shadow: 0 12px 24px rgba(173, 79, 46, .28); transform: translateY(-2px); }
.cf-app .cf-start-button:active:not(:disabled) { transform: translateY(0) scale(.985); }
.cf-start-button:focus-visible, .cf-menu-help:focus-visible { outline: 2px solid #ad4f2e; outline-offset: 3px; }
.cf-start-button:disabled { opacity: .4; cursor: wait; }
.cf-menu-help { color: var(--cf-ink); background: transparent; border: 1px solid var(--cf-line); transition: background 180ms ease, border-color 180ms ease; }
.cf-menu-boarding .cf-menu-help { min-height: 58px; }
.cf-menu-help:hover { background: rgba(77,184,168,.1); border-color: var(--cf-accent); }

.cf-stage[data-action="aiming"] .cf-skill-meter {
    border-color: rgba(245, 161, 109, .44);
    box-shadow: 0 0 22px rgba(245, 161, 109, .18);
}

.cf-stage[data-action="aiming"] .cf-cast-button {
    animation: cf-charge-breathe 700ms ease-in-out infinite alternate;
}

.cf-loading {
    position: absolute;
    inset: 0;
    z-index: 100;
    display: grid;
    grid-template-columns: auto minmax(180px, 360px) auto;
    align-content: center;
    justify-content: center;
    align-items: center;
    gap: 15px;
    background: #c8ebf4;
    transition: opacity 560ms ease, visibility 560ms ease;
}
.cf-loading[data-ready="true"] { visibility: hidden; opacity: 0; pointer-events: none; }
.cf-loading-mark { position: relative; width: 58px; height: 58px; border: 3px solid rgba(232, 196, 150, .55); border-radius: 50%; background: #fff8ec; }
.cf-loading-mark::before, .cf-loading-mark::after, .cf-loading-mark i { content: ""; position: absolute; inset: 8px; border: 2px solid rgba(77,184,168,.35); border-radius: 50%; animation: cf-sonar 1.8s ease-out infinite; }
.cf-loading-mark::after { inset: 17px; animation-delay: -.55s; }
.cf-loading-mark i:first-child { inset: 25px; background: var(--cf-accent); border: 0; animation: none; }
.cf-loading-mark i:last-child { inset: -1px; border-top-color: var(--cf-warm); animation: cf-spin 1.3s linear infinite; }
.cf-loading-mark span { position: absolute; inset: 50% auto auto 50%; width: 1px; height: 26px; background: var(--cf-accent); transform-origin: 0 0; animation: cf-sweep 1.7s linear infinite; }
.cf-loading-copy { display: grid; gap: 4px; }
.cf-loading-copy span { color: var(--cf-muted); font-size: 12px; letter-spacing: .04em; }
.cf-loading-copy strong { font-size: 14px; }
.cf-loading-progress { grid-column: 2; height: 8px; overflow: hidden; background: rgba(90,140,128,.16); border-radius: 999px; }
.cf-loading-progress i { display: block; width: 0; height: 100%; background: var(--cf-warm); box-shadow: none; transition: width 180ms ease; }
.cf-loading > b { grid-row: 1; grid-column: 3; color: var(--cf-warm); font-size: 12px; font-variant-numeric: tabular-nums; }

.cf-transition { position: absolute; inset: 0; z-index: 25; display: grid; place-content: center; justify-items: center; background: rgba(200, 235, 244, .78); }
.cf-transition span { color: var(--cf-warm); font-size: 12px; font-weight: 700; letter-spacing: .04em; }
.cf-transition strong { margin-top: 6px; font-size: 22px; }
.cf-transition i { width: 220px; height: 2px; margin-top: 14px; overflow: hidden; background: rgba(255,255,255,.12); }
.cf-transition i::after { content: ""; display: block; width: 42%; height: 100%; background: var(--cf-accent); animation: cf-route 1s ease-in-out infinite alternate; }

.cf-toast { position: absolute; top: max(96px, calc(72px + env(safe-area-inset-top))); left: 50%; z-index: 60; width: min(440px, calc(100% - 32px)); padding: 12px 15px; background: var(--cf-panel); border: 1px solid var(--cf-line); border-radius: var(--cf-radius-sm); box-shadow: var(--cf-shadow); transform: translateX(-50%); text-align: center; }
.cf-toast span { font-size: 12px; }
.cf-toast[data-kind="error"] { border-color: rgba(224,106,98,.45); color: #8a3a34; }

.cf-dialog-backdrop { position: absolute; inset: 0; z-index: 70; display: grid; overflow: auto; place-items: center; padding: 24px; background: rgba(5, 31, 34, .62); }
.cf-dialog { position: relative; width: min(670px, 100%); max-height: min(760px, calc(100dvh - 48px)); overflow: auto; padding: 30px; color: var(--cf-ink); background: var(--cf-panel-solid); border: 1px solid rgba(232, 196, 150, 0.45); border-radius: var(--cf-radius); box-shadow: var(--cf-shadow); }
.cf-dialog:focus { outline: none; }
.cf-dialog-close { position: absolute; top: 18px; right: 18px; z-index: 2; min-width: 48px; min-height: 44px; color: var(--cf-muted); background: transparent; border: 1px solid var(--cf-line); border-radius: 999px; cursor: pointer; }
.cf-dialog-close:focus-visible { outline: 2px solid var(--cf-accent); outline-offset: 2px; }
.cf-dialog h2 { margin: 7px 0 18px; font-size: 30px; letter-spacing: -0.045em; }
.cf-rules-dialog { width: min(920px, 100%); }
.cf-rules-heading { padding-right: 88px; }
.cf-rules-heading h2 { margin-bottom: 6px; }
.cf-rules-heading > p { margin: 0 0 20px; color: var(--cf-muted); font-size: 11px; line-height: 1.6; }
.cf-rules-steps { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 0; padding: 0; list-style: none; }
.cf-rules-steps > li { display: grid; grid-template-columns: minmax(142px, .82fr) minmax(0, 1fr); min-height: 158px; overflow: hidden; background: rgba(255,255,255,.55); border: 1px solid var(--cf-line); border-radius: var(--cf-radius-sm); }
.cf-guide-visual { position: relative; min-width: 0; min-height: 156px; overflow: hidden; background: linear-gradient(145deg, rgba(126, 200, 224, .28), rgba(255, 248, 236, .9)); border-right: 1px solid var(--cf-line); }
.cf-guide-copy { align-self: center; min-width: 0; padding: 17px 16px; }
.cf-guide-copy > span { display: block; margin-bottom: 8px; color: var(--cf-warm); font-size: 9px; font-weight: 800; letter-spacing: .13em; }
.cf-guide-copy strong { display: block; font-size: 14px; line-height: 1.35; }
.cf-guide-copy p { margin: 7px 0 0; color: var(--cf-muted); font-size: 11px; line-height: 1.65; }
.cf-guide-spots { background: radial-gradient(circle at 52% 44%, rgba(126,200,224,.35), transparent 32%), linear-gradient(164deg, #b8e4f2 0 47%, #5eb8c8 48%, #7ecde0 100%); }
.cf-guide-spots::before, .cf-guide-spots::after { content: ""; position: absolute; left: -10%; width: 120%; height: 26px; border: 1px solid rgba(185,246,236,.16); border-width: 1px 0 0; border-radius: 50%; }
.cf-guide-spots::before { top: 54%; transform: rotate(-3deg); }
.cf-guide-spots::after { top: 71%; transform: rotate(2deg); }
.cf-guide-waterline { position: absolute; inset: 47% 0 auto; height: 1px; background: linear-gradient(90deg, transparent, rgba(207,255,247,.52), transparent); box-shadow: 0 12px 0 rgba(207,255,247,.1), 0 29px 0 rgba(207,255,247,.08); }
.cf-guide-spots > i { position: absolute; width: 12px; height: 12px; background: var(--cf-accent); border: 2px solid #dffff9; border-radius: 50%; box-shadow: 0 0 0 6px rgba(114,234,217,.12), 0 0 18px rgba(114,234,217,.65); }
.cf-guide-spots > i::after { content: ""; position: absolute; top: 10px; left: 3px; width: 2px; height: 18px; background: linear-gradient(var(--cf-accent), transparent); }
.cf-guide-spots > i[data-spot="near"] { top: 68%; left: 20%; }
.cf-guide-spots > i[data-spot="middle"] { top: 48%; left: 49%; background: var(--cf-warm); border-color: #ffe5d1; box-shadow: 0 0 0 7px rgba(245,161,109,.17), 0 0 20px rgba(245,161,109,.7); }
.cf-guide-spots > i[data-spot="far"] { top: 62%; right: 18%; }
.cf-guide-spots > b { position: absolute; top: 15px; left: 15px; color: #3d4a42; font-size: 10px; letter-spacing: .02em; }
.cf-guide-meter { display: grid; align-content: center; gap: 10px; padding: 18px 16px; }
.cf-guide-meter > span, .cf-guide-meter > small { display: flex; align-items: center; justify-content: space-between; gap: 8px; color: var(--cf-muted); font-size: 8px; }
.cf-guide-meter > span b { color: var(--cf-ink); font-size: 10px; }
.cf-guide-meter > div { position: relative; height: 20px; overflow: hidden; background: repeating-linear-gradient(90deg, rgba(255,255,255,.035) 0 9%, rgba(255,255,255,.1) 9% 10%); border: 1px solid var(--cf-line); }
.cf-guide-meter > div i { position: absolute; inset: 0 auto 0 58%; width: 22%; background: rgba(245,161,109,.65); box-shadow: 0 0 14px rgba(245,161,109,.22); }
.cf-guide-meter > div em { position: absolute; top: -4px; left: 71%; width: 2px; height: 27px; background: #fff; box-shadow: 0 0 8px #fff; transform: rotate(3deg); }
.cf-guide-meter kbd { padding: 3px 6px; color: var(--cf-ink); background: rgba(255,255,255,.7); border: 1px solid var(--cf-line); border-radius: 8px; font: 700 7px/1 ui-rounded, sans-serif; letter-spacing: .05em; }
.cf-guide-reel { background: linear-gradient(145deg, rgba(77,184,168,.16), rgba(255,248,236,.9)); }
.cf-guide-reel > div i { left: 31%; width: 38%; background: rgba(114,234,217,.65); box-shadow: 0 0 14px rgba(114,234,217,.25); }
.cf-guide-reel > div em { left: 53%; }
.cf-guide-reel > span b { color: var(--cf-accent); }
.cf-guide-reel > small { justify-content: flex-start; }
.cf-guide-reel > small i { width: 6px; height: 6px; background: var(--cf-accent); border-radius: 50%; box-shadow: 0 0 8px var(--cf-accent); }
.cf-guide-event { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-content: center; gap: 7px; padding: 18px 14px; }
.cf-guide-event > span { grid-column: 1 / -1; margin-bottom: 3px; color: var(--cf-warm); font-size: 8px; font-weight: 800; letter-spacing: .09em; }
.cf-guide-event > div { min-width: 0; padding: 10px 8px; background: rgba(255,255,255,.55); border: 1px solid var(--cf-line); border-radius: 12px; }
.cf-guide-event > div:first-of-type { border-color: rgba(114,234,217,.55); background: rgba(114,234,217,.1); }
.cf-guide-event i { display: grid; width: 20px; height: 20px; margin-bottom: 7px; place-items: center; color: #fff8ec; background: var(--cf-accent); border-radius: 50%; font-size: 8px; font-style: normal; font-weight: 900; }
.cf-guide-event div:last-child i { color: var(--cf-ink); background: rgba(255,255,255,.12); }
.cf-guide-event b { display: block; overflow: hidden; font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
.cf-rules-note { display: grid; grid-template-columns: 36px 1fr; gap: 11px; align-items: center; margin-top: 12px; padding: 11px 13px; color: var(--cf-muted); background: rgba(77,184,168,.1); border: 1px solid rgba(77,184,168,.2); border-radius: var(--cf-radius-sm); }
.cf-rules-note > span { display: grid; width: 34px; height: 34px; place-items: center; color: var(--cf-accent); border: 1px solid rgba(114,234,217,.32); border-radius: 50%; font-size: 18px; }
.cf-rules-note p { margin: 0; font-size: 9px; line-height: 1.55; }
.cf-rules-note strong { display: block; margin-bottom: 2px; color: var(--cf-ink); font-size: 10px; }
.cf-journal-dialog { width: min(1120px, 100%); max-height: min(820px, calc(100dvh - 48px)); overflow: hidden; padding: 0; background: #fff8ec; }
.cf-journal-heading { position: relative; display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; padding: 24px 88px 18px 28px; background: linear-gradient(115deg, rgba(126,200,224,.2), rgba(255,248,236,.86) 48%, rgba(245,161,109,.13)); border-bottom: 1px solid var(--cf-line); }
.cf-journal-heading::after { content: ""; position: absolute; inset: auto 28px 0; height: 3px; background: linear-gradient(90deg, var(--cf-accent), var(--cf-warm) 55%, transparent); opacity: .72; }
.cf-journal-heading h2 { margin: 5px 0 4px; }
.cf-journal-heading p { margin: 0; color: var(--cf-muted); font-size: 10px; }
.cf-journal-tabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; padding: 10px 28px 0; background: #fff8ec; }
.cf-journal-tabs button { display: flex; min-height: 48px; align-items: center; justify-content: center; gap: 8px; color: var(--cf-muted); background: rgba(255,255,255,.46); border: 1px solid var(--cf-line); border-bottom-color: rgba(77,184,168,.28); border-radius: 12px 12px 4px 4px; cursor: pointer; font-size: 11px; font-weight: 800; }
.cf-journal-tabs button span { display: grid; width: 22px; height: 22px; place-items: center; color: var(--cf-accent); background: rgba(77,184,168,.1); border-radius: 50%; font-size: 13px; }
.cf-journal-tabs button[aria-selected="true"] { color: #fff8ec; background: #16474a; border-color: #16474a; box-shadow: inset 0 -3px var(--cf-warm); }
.cf-journal-tabs button[aria-selected="true"] span { color: #16474a; background: var(--cf-game-mint); }
.cf-journal-tabs button:focus-visible { outline: 2px solid var(--cf-warm); outline-offset: 2px; }
.cf-journal-page { min-height: 516px; max-height: calc(100dvh - 230px); overflow: auto; padding: 18px 28px 28px; }
.cf-journal-page[hidden] { display: none; }
.cf-chart-page { display: grid; grid-template-columns: minmax(0, 1.42fr) minmax(250px, .58fr); grid-template-rows: 1fr auto; gap: 14px; }
.cf-chart-board { min-width: 0; overflow: hidden; background: #dff1ed; border: 1px solid rgba(77,184,168,.28); border-radius: 16px; box-shadow: inset 0 0 48px rgba(255,255,255,.46); }
.cf-chart-board > header { display: flex; min-height: 44px; align-items: center; justify-content: space-between; gap: 12px; padding: 0 15px; color: #17494b; background: rgba(255,248,236,.66); border-bottom: 1px solid rgba(77,184,168,.22); font-size: 9px; }
.cf-chart-board > header strong { color: var(--cf-warm); font-size: 9px; }
.cf-chart-canvas { position: relative; min-height: 410px; overflow: hidden; background: radial-gradient(circle at 22% 17%, rgba(255,255,255,.7) 0 5%, transparent 5.5%), radial-gradient(circle at 82% 86%, rgba(255,255,255,.44) 0 8%, transparent 8.5%), repeating-radial-gradient(ellipse at 54% 55%, transparent 0 48px, rgba(77,184,168,.08) 49px 50px), linear-gradient(145deg, #dff3ee, #c4e5e4); }
.cf-chart-canvas::before, .cf-chart-canvas::after { content: ""; position: absolute; width: 190px; height: 90px; background: rgba(255,248,236,.52); border: 1px solid rgba(191,159,112,.16); border-radius: 43% 57% 49% 51%; transform: rotate(-12deg); }
.cf-chart-canvas::before { top: -38px; left: 18%; }
.cf-chart-canvas::after { right: -48px; bottom: -34px; transform: rotate(15deg); }
.cf-chart-routes { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.cf-chart-routes path { fill: none; stroke: rgba(23,73,75,.34); stroke-width: .65; stroke-dasharray: 1.7 1.25; vector-effect: non-scaling-stroke; }
.cf-chart-routes path:last-child { stroke: rgba(245,161,109,.55); }
.cf-chart-compass { position: absolute; top: 18px; right: 18px; display: grid; width: 38px; height: 38px; place-items: center; color: #1c6465; border: 1px solid rgba(28,100,101,.3); border-radius: 50%; font-size: 8px; font-weight: 900; }
.cf-chart-compass i { position: absolute; top: 8px; width: 2px; height: 9px; background: var(--cf-warm); transform: translateY(-4px); }
.cf-water-list { position: absolute; inset: 0; margin: 0; padding: 0; list-style: none; }
.cf-water-list li { position: absolute; left: var(--chart-x); top: var(--chart-y); z-index: 2; width: 146px; transform: translate(-50%, -50%); }
.cf-water-button { display: grid; grid-template-columns: 42px minmax(0, 1fr) 14px; width: 100%; min-height: 52px; align-items: center; gap: 6px; padding: 5px 7px 5px 5px; color: #17494b; background: rgba(255,248,236,.86); border: 1px solid rgba(23,73,75,.2); border-radius: 999px 13px 13px 999px; box-shadow: 0 4px 0 rgba(23,73,75,.12), 0 8px 18px rgba(23,73,75,.08); text-align: left; cursor: pointer; transition: transform 160ms ease, box-shadow 160ms ease, opacity 160ms ease; }
.cf-water-button:hover { transform: translateY(-2px); box-shadow: 0 6px 0 rgba(23,73,75,.12), 0 12px 22px rgba(23,73,75,.12); }
.cf-water-button:focus-visible { outline: 3px solid rgba(245,161,109,.65); outline-offset: 3px; }
.cf-water-number { display: grid; width: 42px; height: 42px; place-items: center; color: #fff8ec; background: #4db8a8; border: 3px solid rgba(255,255,255,.72); border-radius: 50%; box-shadow: inset 0 -5px rgba(16,86,83,.12); font-size: 10px; font-weight: 900; }
.cf-water-copy { display: grid; min-width: 0; gap: 2px; }
.cf-water-copy strong, .cf-water-copy small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cf-water-copy strong { font-size: 10px; }
.cf-water-copy small { color: rgba(23,73,75,.62); font-size: 7px; }
.cf-water-state { color: var(--cf-accent); font-size: 13px; font-style: normal; text-align: center; }
.cf-water-button[data-unlocked="false"] { opacity: .52; filter: grayscale(.7); }
.cf-water-button[data-unlocked="false"] .cf-water-number { color: rgba(255,248,236,.72); background: #809c98; }
.cf-water-button[aria-pressed="true"] { border-color: var(--cf-warm); box-shadow: 0 4px 0 rgba(191,99,55,.26), 0 0 0 4px rgba(245,161,109,.14); }
.cf-water-button[aria-current="location"] .cf-water-number { background: var(--cf-warm); animation: cf-map-current 1.8s ease-in-out infinite; }
.cf-chart-detail { display: grid; grid-template-rows: 150px minmax(0, 1fr); min-width: 0; overflow: hidden; background: rgba(255,255,255,.66); border: 1px solid var(--cf-line); border-radius: 16px; }
.cf-chart-detail-visual { position: relative; display: grid; overflow: hidden; place-items: center; color: rgba(255,248,236,.9); background: linear-gradient(145deg, #8acddc, #4db8a8); isolation: isolate; }
.cf-chart-detail-visual::before { content: ""; position: absolute; width: 140px; height: 56px; background: #fff0cf; border-radius: 50%; box-shadow: 0 10px 0 #4db8a8, 54px 22px 0 -10px rgba(255,240,207,.55); transform: translateY(22px) rotate(-7deg); }
.cf-chart-detail-visual::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(255,255,255,.34), transparent 46%), repeating-linear-gradient(0deg, transparent 0 16px, rgba(255,255,255,.08) 17px); }
.cf-chart-detail-visual span { position: relative; z-index: 2; font-size: 44px; font-weight: 900; text-shadow: 0 3px 0 rgba(14,76,76,.18); transform: translateY(-7px); }
.cf-chart-detail-visual i { position: absolute; z-index: 2; bottom: 18px; width: 10px; height: 26px; background: #9e7254; border-radius: 5px; }
.cf-chart-detail-visual i::before { content: ""; position: absolute; left: 5px; bottom: 18px; width: 42px; height: 26px; background: #51a66f; border-radius: 80% 0 80% 0; transform: translateX(-50%) rotate(-8deg); }
.cf-chart-detail-visual[data-theme="magnetic"], .cf-chart-detail-visual[data-theme="abyss"] { background: linear-gradient(145deg, #5e7fa9, #172f59); }
.cf-chart-detail-visual[data-theme="cloud"] { background: linear-gradient(145deg, #9fc9ed, #d5b9e6); }
.cf-chart-detail-copy { display: flex; min-width: 0; padding: 16px; flex-direction: column; }
.cf-chart-detail-copy > span, .cf-page-intro span { color: var(--cf-warm); font-size: 8px; font-weight: 800; letter-spacing: .08em; }
.cf-chart-detail-copy h3 { margin: 5px 0 6px; font-size: 20px; }
.cf-chart-detail-copy > p { margin: 0; color: var(--cf-muted); font-size: 9px; line-height: 1.65; }
.cf-chart-detail-copy dl { display: grid; grid-template-columns: repeat(2, 1fr); gap: 5px; margin: 12px 0; }
.cf-chart-detail-copy dl div { padding: 8px; background: rgba(77,184,168,.08); border-radius: 9px; }
.cf-chart-detail-copy dt { color: var(--cf-muted); font-size: 7px; }
.cf-chart-detail-copy dd { margin: 3px 0 0; font-size: 10px; font-weight: 800; }
.cf-chart-detail-copy button { min-height: 44px; margin-top: auto; color: #fff8ec; background: var(--cf-warm); border: 0; border-radius: 10px; cursor: pointer; font-size: 10px; font-weight: 800; }
.cf-chart-detail-copy button:disabled { color: var(--cf-muted); background: rgba(90,140,128,.12); cursor: default; }
.cf-account-card { align-self: end; padding: 13px 15px; background: rgba(255,255,255,.58); border: 1px solid var(--cf-line); border-radius: 13px; }
.cf-account-card > div:first-child { display: flex; justify-content: space-between; font-size: 9px; }
.cf-account-card strong { color: var(--cf-warm); }
.cf-progress { height: 7px; margin-top: 7px; overflow: hidden; background: rgba(90,140,128,.14); border-radius: 999px; }
.cf-progress i { display: block; width: 0; height: 100%; background: linear-gradient(90deg, var(--cf-accent), var(--cf-warm)); transition: width 400ms ease; }
.cf-account-card p { margin: 6px 0 0; color: var(--cf-muted); font-size: 8px; }
.cf-page-intro { display: flex; align-items: end; justify-content: space-between; gap: 30px; margin-bottom: 15px; }
.cf-page-intro h3 { margin: 4px 0 0; font-size: 21px; letter-spacing: -.03em; }
.cf-page-intro > p { max-width: 430px; margin: 0; color: var(--cf-muted); font-size: 9px; line-height: 1.6; }
.cf-catalog-tabs { display: flex; gap: 6px; overflow-x: auto; margin-bottom: 14px; padding-bottom: 6px; scroll-snap-type: x proximity; overscroll-behavior-x: contain; }
.cf-catalog-tab { display: flex; min-width: max-content; min-height: 44px; align-items: center; gap: 11px; padding: 0 13px; color: var(--cf-muted); background: transparent; border: 1px solid var(--cf-line); border-radius: 999px; cursor: pointer; scroll-snap-align: start; }
.cf-catalog-tab small { color: var(--cf-muted); font-size: 11px; font-variant-numeric: tabular-nums; }
.cf-catalog-tab[aria-selected="true"] { color: #fff8ec; background: var(--cf-warm); border-color: var(--cf-warm); }
.cf-catalog-tab[aria-selected="true"] small { color: rgba(255,248,236,.8); }
.cf-catalog-tab:focus-visible { outline: 2px solid var(--cf-warm); outline-offset: 2px; }
.cf-fish-grid { display: grid; grid-template-columns: minmax(280px, .72fr) minmax(0, 1.28fr); gap: 12px; }
.cf-fish-index { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-content: start; gap: 8px; }
.cf-fish-index-card {
    --cf-fish-highlight: var(--cf-accent);
    display: grid;
    grid-template-columns: 58px minmax(0, 1fr) 18px;
    min-height: 72px;
    align-items: center;
    gap: 8px;
    overflow: hidden;
    padding: 6px;
    color: var(--cf-ink);
    background: rgba(255,255,255,.62);
    border: 1px solid var(--cf-line);
    border-radius: 12px;
    text-align: left;
    cursor: pointer;
}
.cf-fish-index-card[aria-pressed="true"] { background: rgba(77,184,168,.11); border-color: var(--cf-fish-highlight); box-shadow: 0 0 0 3px color-mix(in srgb, var(--cf-fish-highlight) 14%, transparent); }
.cf-fish-index-card:focus-visible { outline: 2px solid var(--cf-warm); outline-offset: 2px; }
.cf-fish-index-card > span { display: grid; min-width: 0; gap: 3px; }
.cf-fish-index-card small { color: var(--cf-muted); font-size: 7px; }
.cf-fish-index-card strong { overflow: hidden; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.cf-fish-index-card > i { color: var(--cf-fish-highlight); font-size: 11px; font-style: normal; }
.cf-fish-index-visual { width: 58px; height: 58px; overflow: hidden; background: #d8f2f6; border-radius: 9px; }
.cf-fish-index-visual img { display: block; width: 100%; height: 100%; object-fit: cover; }
.cf-fish-index-card[data-caught="false"] .cf-fish-index-visual img { filter: grayscale(1) saturate(.15) brightness(.78) blur(1px); transform: scale(1.05); }
.cf-fish-detail { --cf-fish-highlight: var(--cf-accent); display: grid; grid-template-columns: minmax(250px, 1.1fr) minmax(220px, .9fr); min-height: 330px; overflow: hidden; background: linear-gradient(130deg, rgba(126,200,224,.16), rgba(255,255,255,.7)); border: 1px solid var(--cf-line); border-radius: 15px; }
.cf-fish-index-card[data-rarity="uncommon"], .cf-fish-detail[data-rarity="uncommon"] { --cf-fish-highlight: #6aa7d7; }
.cf-fish-index-card[data-rarity="rare"], .cf-fish-detail[data-rarity="rare"] { --cf-fish-highlight: var(--cf-warm); }
.cf-fish-index-card[data-rarity="legendary"], .cf-fish-detail[data-rarity="legendary"] { --cf-fish-highlight: #d1a63c; }
.cf-fish-visual { position: relative; min-width: 0; min-height: 330px; overflow: hidden; background: radial-gradient(circle at 50% 35%, rgba(126,200,224,.28), transparent 58%), #d8f2f6; border-right: 1px solid var(--cf-line); isolation: isolate; }
.cf-fish-visual::before { content: ""; position: absolute; inset: -45% -20%; z-index: 1; pointer-events: none; background: linear-gradient(112deg, transparent 35%, rgba(218,255,249,.13) 47%, transparent 58%); transform: translateX(-45%); transition: transform 720ms ease; }
.cf-fish-visual::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; border: 1px solid rgba(255,255,255,.08); box-shadow: inset 0 -48px 42px rgba(1,11,14,.3), inset 0 0 34px rgba(114,234,217,.06); }
.cf-fish-visual img { display: block; width: 100%; height: 100%; object-fit: cover; transition: filter 220ms ease, transform 520ms cubic-bezier(.2,.75,.25,1); }
.cf-fish-scan { position: absolute; bottom: 9px; left: 9px; z-index: 2; padding: 4px 8px; color: #fff8ec; background: var(--cf-fish-highlight); border-radius: 999px; font-size: 10px; font-weight: 700; letter-spacing: .02em; }
.cf-fish-copy { display: flex; min-width: 0; padding: 14px; flex-direction: column; }
.cf-fish-copy header { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.cf-fish-copy header span { overflow: hidden; color: var(--cf-fish-highlight); font-size: 8px; font-weight: 800; letter-spacing: .06em; text-overflow: ellipsis; white-space: nowrap; }
.cf-fish-copy header b { padding: 3px 5px; color: var(--cf-muted); border: 1px solid var(--cf-line); font-size: 7px; font-weight: 700; }
.cf-fish-detail h3 { margin: 9px 0 6px; font-size: 24px; letter-spacing: -.03em; }
.cf-fish-detail p { margin: 0; color: var(--cf-muted); font-size: 10px; line-height: 1.7; }
.cf-fish-detail footer { display: flex; justify-content: space-between; gap: 8px; margin-top: auto; padding-top: 12px; border-top: 1px solid var(--cf-line); font-size: 9px; }
.cf-fish-detail footer span { color: var(--cf-muted); }
.cf-fish-detail footer strong { color: var(--cf-fish-highlight); font-variant-numeric: tabular-nums; }
.cf-fish-detail[data-caught="true"]:hover .cf-fish-visual::before { transform: translateX(45%); }
.cf-fish-detail[data-caught="true"]:hover .cf-fish-visual img { transform: scale(1.035) translateY(-1%); }
.cf-fish-detail[data-caught="false"] .cf-fish-visual img { filter: grayscale(1) saturate(.18) brightness(.82) contrast(1.05) blur(2px); transform: scale(1.025); }
.cf-fish-detail[data-caught="false"] .cf-fish-scan { color: var(--cf-muted); background: rgba(255,248,236,.86); border: 1px solid var(--cf-line); }
.cf-fish-detail[data-caught="false"] .cf-fish-copy { opacity: .65; }
.cf-log-layout { display: grid; grid-template-columns: minmax(0, .88fr) minmax(320px, 1.12fr); gap: 12px; }
.cf-log-layout .cf-run-summary, .cf-log-layout .cf-voyage-note { margin-top: 0; }
.cf-log-layout > div, .cf-log-layout .cf-voyage-note { min-height: 336px; padding: 16px; background: rgba(255,255,255,.58); border: 1px solid var(--cf-line); border-radius: 15px; }
.cf-log-layout > div .cf-run-summary { background: rgba(77,184,168,.08); }
.cf-log-layout .cf-voyage-note { background: linear-gradient(145deg, rgba(255,255,255,.72), rgba(245,161,109,.08)); }
.cf-log-page .cf-total-summary { gap: 9px; }
.cf-log-page .cf-total-summary div { padding: 12px 14px; border: 1px solid var(--cf-line); }
.cf-result-dialog { width: min(610px, 100%); color: var(--cf-game-cream); background: #0d3437; border: 2px solid rgba(255,240,207,.76); border-radius: 14px; box-shadow: 0 7px 0 rgba(4,34,36,.96), 0 24px 64px rgba(3,26,29,.46); text-align: center; }
.cf-result-dialog .cf-dialog-close { color: var(--cf-game-cream); border-color: rgba(255,240,207,.32); }
.cf-result-visual { position: relative; width: min(248px, 70vw); aspect-ratio: 1; margin: 14px auto 16px; overflow: hidden; background: radial-gradient(circle at 50% 45%, rgba(114,234,217,.2), rgba(6,42,46,.94) 72%); border: 3px solid rgba(255,141,88,.74); border-radius: 12px; box-shadow: 0 5px 0 rgba(5,36,39,.9); isolation: isolate; }
.cf-result-visual::before { content: ""; position: absolute; inset: 0; z-index: 2; pointer-events: none; background: linear-gradient(180deg, rgba(255,248,236,.2), transparent 24%, transparent 72%, rgba(255,236,210,.28)); box-shadow: inset 0 0 28px rgba(126,200,224,.12); }
.cf-result-visual img { position: relative; z-index: 1; display: block; width: 100%; height: 100%; object-fit: cover; animation: cf-fish-catch-in 680ms cubic-bezier(.16,.78,.26,1) both, cf-fish-swim 4.2s ease-in-out 680ms infinite; }
.cf-result-visual[data-kind="caught"] .cf-result-signal { opacity: .28; transform: translate(-50%, -50%) scale(1.62); }
.cf-result-signal { position: absolute; top: 50%; left: 50%; z-index: 0; width: 86px; height: 86px; margin: 0; border: 1px solid rgba(114,234,217,.3); border-radius: 50%; transform: translate(-50%, -50%); transition: opacity 220ms ease, transform 520ms ease; }
.cf-result-signal::before, .cf-result-signal::after, .cf-result-signal i { content: ""; position: absolute; inset: 12px; border: 1px solid rgba(114,234,217,.28); border-radius: 50%; animation: cf-sonar 1.8s ease-out infinite; }
.cf-result-signal::after { inset: 27px; animation-delay: -.5s; }
.cf-result-signal i { inset: 39px; background: var(--cf-warm); border: 0; animation: none; }
.cf-result-scanline { position: absolute; inset: -35% 0 auto; z-index: 3; height: 36%; pointer-events: none; background: linear-gradient(180deg, transparent, rgba(207,255,247,.12), transparent); animation: cf-fish-scan 3.4s ease-in-out 720ms infinite; mix-blend-mode: screen; }
.cf-result-dialog h2 { margin-bottom: 8px; }
.cf-result-dialog > p { color: rgba(255,240,207,.68); font-size: 11px; line-height: 1.65; }
.cf-result-event, .cf-result-journal, .cf-result-unlock { margin-top: 12px; padding: 12px; background: rgba(255,240,207,.06); border: 1px solid rgba(255,240,207,.18); border-radius: 9px; text-align: left; }
.cf-result-event span, .cf-result-journal span { color: var(--cf-warm); font-size: 8px; }
.cf-result-event strong { display: block; margin-top: 3px; font-size: 11px; }
.cf-result-event p, .cf-result-journal p { margin: 4px 0 0; color: rgba(255,240,207,.66); font-size: 9px; }
.cf-result-commentary { display: grid; grid-template-columns: 44px 1fr; gap: 10px; align-items: center; margin: 12px 0 0; padding: 12px; color: #173f42; text-align: left; border: 2px solid #d3a56d; border-radius: 9px; background: #fff0cf; }
.cf-result-commentary span { color: var(--cf-accent); font-size: 9px; font-weight: 800; }
.cf-result-commentary p { margin: 0; font-size: 10px; }
.cf-result-dialog .cf-start-button { width: 100%; margin-top: 16px; }

.cf-dialog-backdrop:has(.cf-economy-dialog) { background: rgba(25, 69, 65, .58); backdrop-filter: blur(4px) saturate(.86); }
.cf-economy-dialog {
    width: min(1040px, 100%);
    max-height: min(820px, calc(100dvh - 48px));
    overflow: hidden;
    padding: 0;
    background:
        radial-gradient(circle at 16px 16px, rgba(108, 171, 141, .08) 0 2px, transparent 2.5px) 0 0 / 30px 30px,
        #fffaf0;
    border: 3px solid rgba(255, 245, 222, .94);
    border-radius: 34px 28px 38px 30px;
    box-shadow: 0 10px 0 rgba(59, 101, 83, .28), 0 30px 80px rgba(19, 58, 54, .34);
}
.cf-economy-heading {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 24px;
    padding: 25px 96px 21px 28px;
    background:
        radial-gradient(circle at 84% 30%, rgba(245, 207, 117, .28) 0 52px, transparent 53px),
        linear-gradient(120deg, #dcefdc, #f8efce 58%, #f8d9c1);
    border-bottom: 2px dashed rgba(84, 133, 110, .28);
}
.cf-economy-heading-copy { display: flex; min-width: 0; align-items: center; gap: 15px; }
.cf-economy-emblem { position: relative; display: block; width: 54px; height: 54px; flex: 0 0 54px; background: var(--cf-clay); border: 4px solid rgba(255,255,255,.7); border-radius: 48% 52% 45% 55%; box-shadow: 0 4px 0 rgba(117, 78, 53, .16); transform: rotate(-4deg); }
.cf-economy-emblem::before, .cf-economy-emblem::after { content: ""; position: absolute; top: 11px; width: 20px; height: 13px; background: #fff8e7; border-radius: 100% 0 100% 0; transform-origin: 100% 100%; }
.cf-economy-emblem::before { left: 6px; transform: rotate(32deg); }
.cf-economy-emblem::after { right: 6px; transform: scaleX(-1) rotate(32deg); }
.cf-economy-emblem i { position: absolute; top: 25px; left: 50%; width: 7px; height: 15px; background: #fff8e7; border-radius: 99px; transform: translateX(-50%); }
.cf-economy-heading h2 { margin: 4px 0 5px; color: #345d50; font-size: 31px; line-height: 1.08; text-wrap: balance; }
.cf-economy-heading p { margin: 0; color: rgba(61, 74, 66, .7); font-size: 12px; line-height: 1.55; }
.cf-economy-heading .cf-dialog-code { display: inline-block; padding: 3px 9px; color: #fffaf0; background: var(--cf-clay); border-radius: 9px 13px 9px 12px; font-size: 10px; }
.cf-economy-heading .cf-dialog-close { top: 19px; right: 20px; color: #456e60; background: rgba(255,250,240,.82); border: 2px solid rgba(255,255,255,.72); box-shadow: 0 3px 0 rgba(63, 112, 93, .18); font-size: 12px; font-weight: 800; transition: transform 180ms ease, box-shadow 180ms ease, background 180ms ease; }
.cf-economy-heading .cf-dialog-close:hover { background: #fffaf0; transform: rotate(3deg) translateY(-1px); }
.cf-economy-heading .cf-dialog-close:active { box-shadow: none; transform: translateY(1px) scale(.98); }
.cf-wallet { display: grid; min-width: 120px; padding: 11px 16px; color: #604c2e; background: #ffe7a8; border: 2px dashed rgba(141, 105, 49, .32); border-radius: 22px 17px 24px 19px; box-shadow: 0 4px 0 rgba(142, 105, 49, .16); text-align: right; transform: rotate(1deg); }
.cf-wallet span { color: rgba(96, 76, 46, .68); font-size: 10px; font-weight: 800; }
.cf-wallet strong { margin-top: 1px; font-size: 24px; font-variant-numeric: tabular-nums; }
.cf-wallet strong::before { content: "●"; margin-right: 7px; color: #d89b38; font-size: 16px; vertical-align: 2px; }
.cf-economy-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; padding: 14px 28px 0; }
.cf-economy-tabs button { display: inline-flex; min-height: 52px; align-items: center; justify-content: center; gap: 9px; color: #547164; background: rgba(221, 239, 220, .68); border: 2px solid transparent; border-radius: 21px 24px 15px 17px; cursor: pointer; font-size: 12px; font-weight: 850; transition: transform 180ms ease, background 180ms ease, box-shadow 180ms ease, color 180ms ease; }
.cf-economy-tabs button:nth-child(2) { background: rgba(255, 229, 185, .7); border-radius: 24px 20px 17px 14px; }
.cf-economy-tabs button::before { display: grid; width: 30px; height: 30px; place-items: center; color: #fffaf0; background: var(--cf-leaf); border-radius: 50%; font-size: 11px; font-weight: 900; }
.cf-economy-tabs button:first-child::before { content: "袋"; }
.cf-economy-tabs button:nth-child(2)::before { content: "饵"; color: #79542e; background: var(--cf-sun); }
.cf-economy-tabs button:hover { transform: translateY(-2px); }
.cf-economy-tabs button[aria-selected="true"] { color: #fffaf0; background: var(--cf-leaf); border-color: rgba(255,255,255,.72); box-shadow: 0 5px 0 #467d6d; transform: translateY(-2px); }
.cf-economy-tabs button[aria-selected="true"]::before { color: var(--cf-leaf-deep); background: #fff7df; }
.cf-economy-tabs button:focus-visible { outline: 3px solid rgba(233, 141, 99, .68); outline-offset: 2px; }
.cf-economy-page { min-height: 490px; max-height: calc(100dvh - 238px); overflow: auto; padding: 21px 28px 30px; scrollbar-color: rgba(108, 171, 141, .72) transparent; }
.cf-bait-shelf { padding: 17px; background: rgba(220, 239, 220, .74); border: 3px solid rgba(255,255,255,.68); border-radius: 27px 22px 30px 24px; box-shadow: 0 5px 0 rgba(83, 133, 109, .16); }
.cf-bait-shelf > header, .cf-catch-shelf > header { display: flex; align-items: end; justify-content: space-between; gap: 12px; }
.cf-bait-shelf > header span, .cf-catch-shelf > header span { color: var(--cf-leaf-deep); font-size: 11px; font-weight: 850; }
.cf-bait-shelf > header small, .cf-catch-shelf > header small { color: var(--cf-muted); font-size: 10px; }
.cf-bait-shelf > div { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-top: 12px; }
.cf-bait-shelf article { display: grid; grid-template-columns: 42px minmax(0, 1fr) auto; gap: 3px 9px; align-items: center; padding: 10px 12px 11px 9px; background: rgba(255, 250, 240, .92); border: 0; border-radius: 18px 23px 17px 21px; box-shadow: 0 3px 0 rgba(68, 116, 95, .14); }
.cf-bait-shelf article::before { grid-row: 1 / 3; display: grid; width: 38px; height: 38px; place-items: center; color: #fffaf0; background: #7fbea2; border-radius: 48% 52% 44% 56%; font-size: 13px; font-weight: 900; }
.cf-bait-shelf article:nth-child(1)::before { content: "羽"; }
.cf-bait-shelf article:nth-child(2)::before { content: "铃"; color: #725329; background: #f4cf7e; }
.cf-bait-shelf article:nth-child(3)::before { content: "爪"; background: #e99b79; }
.cf-bait-shelf article > span { grid-column: 2; font-size: 12px; font-weight: 850; }
.cf-bait-shelf article > strong { grid-column: 3; color: var(--cf-clay); font-size: 15px; font-variant-numeric: tabular-nums; }
.cf-bait-shelf article > small { grid-column: 2 / -1; overflow: hidden; color: var(--cf-muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.cf-bait-shelf article[data-empty="true"] { opacity: .56; filter: grayscale(.25); }
.cf-backpack-layout { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(255px, .6fr); gap: 14px; margin-top: 15px; }
.cf-catch-shelf, .cf-backpack-detail { min-height: 300px; padding: 18px; background: rgba(255, 247, 224, .88); border: 3px solid rgba(255,255,255,.65); border-radius: 29px 23px 32px 25px; box-shadow: 0 5px 0 rgba(122, 102, 66, .12); }
.cf-backpack-detail { border-radius: 24px 30px 25px 32px; }
.cf-catch-shelf h3 { margin: 3px 0 0; color: #345d50; font-size: 20px; }
.cf-desktop-hint { margin: 7px 0 11px; color: var(--cf-muted); font-size: 10px; }
.cf-backpack-fish-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
.cf-backpack-fish { display: grid; grid-template-columns: 58px minmax(0, 1fr); min-height: 70px; align-items: center; gap: 9px; padding: 6px 10px 6px 6px; background: rgba(255,255,255,.72); border: 2px solid transparent; border-radius: 17px 22px 16px 20px; box-shadow: 0 3px 0 rgba(96, 105, 75, .1); text-align: left; cursor: pointer; transition: transform 180ms ease, border-color 180ms ease, background 180ms ease, box-shadow 180ms ease; }
.cf-backpack-fish:hover { transform: translateY(-2px) rotate(-.4deg); }
.cf-backpack-fish[aria-pressed="true"] { background: #fff9e9; border-color: var(--cf-clay); box-shadow: 0 4px 0 rgba(197, 105, 66, .2), 0 0 0 3px rgba(233, 141, 99, .1); transform: translateY(-1px); }
.cf-backpack-fish:focus-visible { outline: 3px solid rgba(233, 141, 99, .6); outline-offset: 2px; }
.cf-backpack-fish img { grid-row: 1 / 3; width: 58px; height: 58px; object-fit: cover; border: 3px solid rgba(255,255,255,.7); border-radius: 50% 46% 52% 48%; }
.cf-backpack-fish span { display: grid; min-width: 0; gap: 2px; }
.cf-backpack-fish strong, .cf-backpack-fish small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cf-backpack-fish strong { font-size: 12px; }
.cf-backpack-fish small { color: var(--cf-muted); font-size: 10px; }
.cf-backpack-fish > b { grid-column: 2; color: #bb6846; font-size: 10px; }
.cf-backpack-empty { grid-column: 1 / -1; margin: 0; padding: 48px 20px; color: rgba(61, 74, 66, .64); background: rgba(220, 239, 220, .52); border: 2px dashed rgba(108, 171, 141, .24); border-radius: 22px 18px 24px 20px; text-align: center; font-size: 12px; line-height: 1.65; }
.cf-backpack-empty::before { content: "∿"; display: block; margin-bottom: 8px; color: var(--cf-leaf); font-size: 30px; line-height: 1; }
.cf-backpack-detail { display: flex; align-items: stretch; flex-direction: column; }
.cf-backpack-detail:has(> p:only-child) { align-items: center; justify-content: center; color: var(--cf-muted); text-align: center; }
.cf-backpack-detail:has(> p:only-child)::before { content: "♡"; display: grid; width: 58px; height: 58px; margin-bottom: 12px; place-items: center; color: var(--cf-leaf); background: var(--cf-mint-soft); border-radius: 48% 52% 45% 55%; font-size: 25px; }
.cf-backpack-detail > img { width: 100%; min-height: 155px; max-height: 190px; object-fit: cover; border: 4px solid rgba(255,255,255,.76); border-radius: 23px 18px 25px 20px; }
.cf-backpack-detail > span { margin-top: 10px; color: var(--cf-leaf-deep); font-size: 10px; font-weight: 850; }
.cf-backpack-detail h3 { margin: 3px 0 10px; color: #345d50; font-size: 22px; }
.cf-backpack-detail dl { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin: auto 0 12px; }
.cf-backpack-detail dl div { padding: 9px 11px; background: rgba(220, 239, 220, .62); border-radius: 15px 12px 17px 13px; }
.cf-backpack-detail dt { color: var(--cf-muted); font-size: 10px; }
.cf-backpack-detail dd { margin: 3px 0 0; font-size: 12px; font-weight: 850; }
.cf-backpack-detail button, .cf-shop-grid button { min-height: 46px; color: #fffaf0; background: var(--cf-clay); border: 2px solid rgba(255,255,255,.34); border-radius: 16px 13px 18px 14px; box-shadow: 0 4px 0 #bd6645; cursor: pointer; font-weight: 850; transition: transform 180ms ease, box-shadow 180ms ease, filter 180ms ease; }
.cf-backpack-detail button:hover, .cf-shop-grid button:hover { filter: brightness(1.04); transform: translateY(-2px); }
.cf-backpack-detail button:active, .cf-shop-grid button:active { box-shadow: none; transform: translateY(2px) scale(.99); }
.cf-backpack-detail button:focus-visible, .cf-shop-grid button:focus-visible { outline: 3px solid rgba(233, 141, 99, .55); outline-offset: 2px; }
.cf-backpack-detail button:disabled, .cf-shop-grid button:disabled { box-shadow: 0 3px 0 rgba(91, 101, 81, .16); filter: grayscale(.3); opacity: .55; cursor: not-allowed; transform: none; }
.cf-shop-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 15px; }
.cf-shop-grid article { position: relative; display: flex; min-height: 286px; overflow: hidden; padding: 21px; flex-direction: column; background: #e4f0dc; border: 3px solid rgba(255,255,255,.68); border-radius: 30px 23px 32px 25px; box-shadow: 0 6px 0 rgba(83, 127, 102, .18); isolation: isolate; }
.cf-shop-grid article:nth-child(2) { background: #fff0c9; border-radius: 24px 31px 25px 34px; box-shadow: 0 6px 0 rgba(146, 107, 48, .18); }
.cf-shop-grid article:nth-child(3) { background: #f8ddcd; border-radius: 32px 24px 34px 26px; box-shadow: 0 6px 0 rgba(154, 92, 62, .17); }
.cf-shop-grid article::before { content: "羽"; position: absolute; top: 16px; right: 16px; z-index: -1; display: grid; width: 66px; height: 66px; place-items: center; color: #fffaf0; background: rgba(108, 171, 141, .82); border: 4px solid rgba(255,255,255,.48); border-radius: 48% 52% 45% 55%; font-size: 19px; font-weight: 900; transform: rotate(4deg); }
.cf-shop-grid article:nth-child(2)::before { content: "铃"; color: #76552d; background: rgba(245, 207, 117, .88); transform: rotate(-4deg); }
.cf-shop-grid article:nth-child(3)::before { content: "爪"; background: rgba(233, 141, 99, .82); }
.cf-shop-grid article header { display: grid; gap: 5px; padding-right: 72px; }
.cf-shop-grid article header span { color: var(--cf-leaf-deep); font-size: 10px; font-weight: 850; }
.cf-shop-grid article header strong { color: #345d50; font-size: 22px; line-height: 1.2; text-wrap: balance; }
.cf-shop-grid article > p { min-height: 54px; color: rgba(61, 74, 66, .68); font-size: 12px; line-height: 1.65; }
.cf-shop-grid dl { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin: auto 0 14px; }
.cf-shop-grid dl div { padding: 10px 11px; background: rgba(255,255,255,.54); border-radius: 15px 12px 17px 13px; }
.cf-shop-grid dt { color: var(--cf-muted); font-size: 10px; }
.cf-shop-grid dd { margin: 3px 0 0; font-size: 12px; font-weight: 850; }
.cf-fish-context { position: fixed; z-index: 100; min-width: 220px; padding: 7px; background: #fff8e6; border: 3px solid rgba(255,255,255,.74); border-radius: 19px 15px 21px 17px; box-shadow: 0 6px 0 rgba(48, 94, 79, .25), 0 16px 34px rgba(5,31,34,.25); }
.cf-fish-context button { width: 100%; min-height: 44px; padding: 8px 12px; color: #345d50; background: var(--cf-mint-soft); border: 0; border-radius: 13px 11px 15px 12px; text-align: left; cursor: pointer; font-size: 11px; font-weight: 800; }
.cf-fish-context button:hover, .cf-fish-context button:focus-visible { background: #f4d3b9; outline: none; }

@keyframes cf-rain-lens {
    from { transform: translate3d(1.8%, -7%, 0); }
    to { transform: translate3d(-2.8%, 8%, 0); }
}
@keyframes cf-weather-flash {
    0%, 71%, 74%, 78%, 100% { opacity: 0; }
    72% { opacity: 0.7; }
    72.7% { opacity: 0.08; }
    73.35% { opacity: 0.52; }
    76.8% { opacity: 0.15; }
    77.25% { opacity: 0.36; }
}
@keyframes cf-music-bar {
    from { transform: scaleY(0.42); }
    to { transform: scaleY(1); }
}
@keyframes cf-cat-float { 0%, 100% { transform: translateY(2px) rotate(-.5deg); } 50% { transform: translateY(-7px) rotate(.5deg); } }
@keyframes cf-cat-meow { 0%, 100% { transform: translateY(0) scale(1); } 38% { transform: translateY(-10px) scale(1.035, .975); } 70% { transform: translateY(1px) scale(.99, 1.015); } }
@keyframes cf-sonar { 0% { transform: scale(.45); opacity: 0; } 35% { opacity: 1; } 100% { transform: scale(1.25); opacity: 0; } }
@keyframes cf-fish-catch-in { from { opacity: 0; transform: translate3d(18%, 8%, 0) scale(.72) rotate(3deg); filter: brightness(1.55) saturate(.7); } to { opacity: 1; transform: translate3d(0, 0, 0) scale(1) rotate(0); filter: brightness(1) saturate(1); } }
@keyframes cf-fish-swim { 0%, 100% { transform: translate3d(-1.2%, 0, 0) scale(1.025) rotate(-.35deg); } 50% { transform: translate3d(1.2%, -1.4%, 0) scale(1.04) rotate(.35deg); } }
@keyframes cf-fish-scan { 0%, 14% { transform: translateY(0); opacity: 0; } 35%, 72% { opacity: .7; } 100% { transform: translateY(470%); opacity: 0; } }
@keyframes cf-spin { to { transform: rotate(360deg); } }
@keyframes cf-sweep { to { transform: rotate(360deg); } }
@keyframes cf-route { from { transform: translateX(0); } to { transform: translateX(138px); } }
@keyframes cf-map-current { 0%, 100% { box-shadow: inset 0 -5px rgba(130,58,25,.13), 0 0 0 0 rgba(245,161,109,.34); } 50% { box-shadow: inset 0 -5px rgba(130,58,25,.13), 0 0 0 8px rgba(245,161,109,0); } }
@keyframes cf-charge-breathe { from { box-shadow: inset 0 0 0 rgba(245,161,109,0); } to { box-shadow: inset 0 0 26px rgba(245,161,109,.16), 0 0 22px rgba(245,161,109,.12); } }
@keyframes cf-game-action-pulse { from { filter: brightness(1); } to { filter: brightness(1.12) saturate(1.08); } }

@media (max-width: 1180px) {
    .cf-menu-content { width: min(100%, 720px); }
}

@media (max-width: 1040px) {
    .cf-topbar { grid-template-columns: minmax(58px, 1fr) auto minmax(390px, 1fr); }
    .cf-brand { display: none; }
    .cf-console { grid-template-columns: minmax(220px,.8fr) minmax(250px,1fr) minmax(260px,.85fr); }
    .cf-menu-copy h1 { font-size: clamp(56px, 8vw, 82px); }
}

@media (min-width: 821px) and (max-height: 680px) {
    .cf-main-menu { padding-block: 58px 14px; }
    .cf-menu-copy h1 { font-size: clamp(46px, 8vh, 62px); }
    .cf-menu-copy > p { margin-top: 8px; font-size: 14px; }
    .cf-cat-stage { width: 220px; height: 160px; }
    .cf-entry-card { padding: 9px 14px 12px; }
    .cf-character-select h2 { font-size: 15px; }
    .cf-character-hint { margin-bottom: 6px; }
    .cf-coat-list button { min-height: 50px; grid-template-columns: 34px minmax(0,1fr); padding: 5px 8px; }
    .cf-coat-thumb { width: 34px; height: 34px; }
    .cf-menu-boarding { margin-top: 7px; padding-top: 7px; }
    .cf-start-button, .cf-menu-help, .cf-menu-boarding .cf-menu-help { min-height: 46px; }
}

@media (max-width: 820px), (max-height: 520px) {
    :root {
        --cf-radius: 18px;
        --cf-radius-sm: 12px;
        --cf-shadow: 0 10px 22px rgba(70, 110, 100, 0.12);
    }
    .cf-topbar { inset: max(7px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right)) auto max(8px, env(safe-area-inset-left)); grid-template-columns: auto 1fr auto; min-height: 52px; gap: 4px; padding: 0; background: transparent; border: 0; box-shadow: none; }
    .cf-topbar-start { gap: 0; padding: 3px; border-width: 2px; border-radius: 22px 17px 23px 18px; box-shadow: 0 4px 0 rgba(55, 105, 91, 0.26); }
    .cf-back { width: 44px; min-height: 44px; justify-content: center; overflow: hidden; padding: 0; }
    .cf-back span { font-size: 17px; }
    .cf-back .cf-back-label { display: none; }
    .cf-topbar-status { justify-self: center; padding: 4px 5px; border-width: 2px; box-shadow: 0 4px 0 rgba(55, 105, 91, 0.24); }
    .cf-topbar-status > span { min-width: 62px; padding: 2px 7px; }
    .cf-topbar-status > span:first-child { display: none; }
    .cf-topbar-status small { font-size: 8px; }
    .cf-topbar-status b { font-size: 11px; }
    .cf-topbar-actions { gap: 3px; padding: 3px; border-width: 2px; box-shadow: 0 4px 0 rgba(55, 105, 91, 0.25); }
    .cf-topbar-actions button { display: none; min-width: 44px; min-height: 44px; padding: 0 7px; font-size: 10px; }
    .cf-topbar-actions button::before { width: 24px; height: 24px; font-size: 11px; }
    .cf-topbar-actions .cf-economy-trigger { display: inline-flex; min-width: 86px; }
    .cf-economy-trigger small { display: none; }
    .cf-topbar-actions .cf-journal-trigger { display: inline-flex; min-width: 91px; }
    .cf-topbar-actions .cf-music-toggle { display: inline-flex; min-width: 44px; padding-inline: 6px; }
    .cf-topbar-actions .cf-music-toggle > span { display: none; }
    .cf-world-hud { inset: max(68px, calc(env(safe-area-inset-top) + 62px)) max(10px, env(safe-area-inset-right)) auto max(10px, env(safe-area-inset-left)); display: block; }
    .cf-location-stack { width: min(88vw, 360px); min-width: 0; }
    .cf-location-card { padding: 11px 14px 12px; border-width: 2px; border-radius: 22px 17px 24px 19px; box-shadow: 0 4px 0 rgba(55, 105, 91, 0.27); }
    .cf-location-card h1 { margin-top: 3px; font-size: clamp(20px, 6vw, 25px); }
    .cf-location-card p { display: none; }
    .cf-readouts { display: none; }
    .cf-captain { display: none; }
    .cf-event-banner { padding: 10px 12px; }
    .cf-spot-marker { left: clamp(64px, var(--spot-x), calc(100% - 64px)); min-width: 44px; min-height: 44px; padding-right: 7px; }
    .cf-spot-marker span { min-width: 52px; }
    .cf-spot-marker strong { max-width: 74px; font-size: 9px; }
    .cf-console { inset: auto max(8px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left)); grid-template-columns: minmax(0, 1fr) auto; min-height: 202px; border-width: 3px; border-radius: 24px 20px 30px 26px; background: rgba(31, 88, 82, 0.95); box-shadow: 0 6px 0 rgba(37, 89, 76, 0.72), 0 14px 28px rgba(4,38,41,.24); }
    .cf-console::after { display: none; }
    .cf-loadout { grid-column: 1 / -1; display: grid; grid-template-columns: 108px minmax(0, 1fr); align-items: end; gap: 9px; padding: 11px 10px 6px; border-right: 0; border-bottom: 1px dashed rgba(255, 240, 207, 0.24); }
    .cf-lure-fieldset { margin: 0; }
    .cf-lure-button { min-height: 44px; padding: 4px 5px; }
    .cf-lure-button small { display: none; }
    .cf-technique { padding: 9px 10px; border-right: 1px dashed rgba(255, 240, 207, 0.24); }
    .cf-cast-zone { width: 142px; padding: 8px; }
    .cf-cast-button { min-height: 82px; gap: 7px; padding: 8px; }
    .cf-cast-key { display: none; }
    .cf-cast-button strong { font-size: 12px; }
    .cf-cast-button small { font-size: 8px; }
    .cf-technique > p span { max-width: calc(100vw - 200px); }
    .cf-action-feedback { right: auto; bottom: calc(220px + env(safe-area-inset-bottom)); left: 50%; width: min(340px, calc(100vw - 20px)); transform: translate(-50%, 12px) scale(.98); }
    .cf-action-feedback[data-visible="true"] { transform: translate(-50%, 0) scale(1); }
    .cf-event-choice { top: auto; bottom: max(8px, env(safe-area-inset-bottom)); transform: translateX(-50%); padding: 16px; }
    .cf-event-choice h2 { font-size: 20px; }
    .cf-main-menu { align-content: center; align-items: center; justify-content: center; gap: 0; padding: max(66px, calc(env(safe-area-inset-top) + 58px)) 14px max(12px, env(safe-area-inset-bottom)); background: radial-gradient(circle at 50% 40%, rgba(255,250,231,.15), transparent 48%), linear-gradient(180deg, rgba(255,248,236,.04), rgba(255,236,210,.25) 52%, rgba(255,236,210,.58)); box-shadow: inset 0 -34vh 22vh rgba(255,236,210,.38); }
    .cf-menu-back { top: max(12px, env(safe-area-inset-top)); left: max(12px, env(safe-area-inset-left)); min-height: 44px; padding-inline: 12px; }
    .cf-menu-music { top: max(12px, env(safe-area-inset-top)); right: max(12px, env(safe-area-inset-right)); min-width: 104px; min-height: 44px; padding-inline: 12px; }
    .cf-menu-content { width: min(100%, 540px); }
    .cf-menu-copy { width: 100%; }
    .cf-menu-copy h1 { font-size: clamp(45px, 13vw, 66px); line-height: .92; }
    .cf-menu-copy > p { display: block; margin-top: 9px; font-size: 15px; }
    .cf-cat-stage { width: min(250px, 64vw); height: clamp(150px, 25vh, 210px); }
    .cf-entry-card { width: 100%; padding: 12px; }
    .cf-character-select { width: 100%; }
    .cf-character-select h2 { margin-bottom: 2px; font-size: 18px; }
    .cf-character-hint { margin-bottom: 9px; }
    .cf-coat-list button { min-height: 58px; grid-template-columns: 36px minmax(0,1fr); padding: 6px; }
    .cf-coat-thumb { width: 36px; height: 36px; }
    .cf-menu-boarding { width: 100%; margin-top: 9px; padding-top: 9px; }
    .cf-start-button, .cf-menu-help, .cf-menu-boarding .cf-menu-help { min-height: 48px; }
    .cf-toast { top: calc(72px + env(safe-area-inset-top)); width: min(440px, calc(100% - 20px)); }
    .cf-dialog-backdrop { padding: 10px max(10px, env(safe-area-inset-right)) max(10px, env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left)); align-items: end; }
    .cf-dialog { width: min(670px, 100%); max-width: none; max-height: calc(100dvh - 20px - env(safe-area-inset-top) - env(safe-area-inset-bottom)); padding: 22px 18px; }
    .cf-journal-dialog, .cf-economy-dialog { width: 100%; max-height: calc(100dvh - 20px - env(safe-area-inset-top) - env(safe-area-inset-bottom)); padding: 0; }
    .cf-economy-dialog { border-radius: 30px 25px 22px 22px; }
    .cf-journal-heading { padding: 19px 76px 14px 18px; }
    .cf-journal-tabs { padding: 8px 18px 0; }
    .cf-journal-page { min-height: 0; max-height: calc(100dvh - 190px - env(safe-area-inset-top) - env(safe-area-inset-bottom)); padding: 14px 18px 20px; }
    .cf-economy-heading { padding: 19px 76px 16px 18px; }
    .cf-economy-heading p { display: none; }
    .cf-wallet { min-width: 92px; }
    .cf-economy-tabs { padding: 10px 18px 0; }
    .cf-economy-page { min-height: 0; max-height: calc(100dvh - 198px - env(safe-area-inset-top) - env(safe-area-inset-bottom)); padding: 16px 18px 22px; }
    .cf-backpack-layout { grid-template-columns: 1fr; }
    .cf-backpack-detail { min-height: 250px; }
    .cf-chart-page { grid-template-columns: 1fr; grid-template-rows: auto auto auto; }
    .cf-chart-canvas { min-height: 370px; }
    .cf-chart-detail { grid-template-columns: 180px minmax(0, 1fr); grid-template-rows: auto; min-height: 210px; }
    .cf-chart-detail-visual { min-height: 210px; }
    .cf-account-card { align-self: auto; }
    .cf-page-intro { align-items: start; }
    .cf-fish-grid { grid-template-columns: 1fr; }
    .cf-fish-index { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .cf-fish-index-card { grid-template-columns: 52px minmax(0, 1fr); min-height: 64px; }
    .cf-fish-index-card > i { display: none; }
    .cf-fish-index-visual { width: 52px; height: 52px; }
    .cf-log-layout { grid-template-columns: 1fr; }
    .cf-log-layout > div, .cf-log-layout .cf-voyage-note { min-height: 0; }
    .cf-dialog h2 { font-size: 25px; }
    .cf-rules-steps { grid-template-columns: 1fr; }
    .cf-rules-steps > li { grid-template-columns: 180px minmax(0, 1fr); }
    .cf-fish-copy { padding: 12px; }
    .cf-loading { grid-template-columns: auto minmax(160px, 250px) auto; gap: 10px; padding: 20px; }
    .cf-loading-mark { width: 48px; height: 48px; }
}

@media (max-width: 960px) and (max-height: 680px) {
    .cf-main-menu { padding-top: 58px; }
    .cf-menu-copy h1 { font-size: clamp(34px, 7vh, 48px); }
    .cf-character-hint { display: none; }
}

@media (max-width: 430px) {
    .cf-topbar-status > span:nth-child(2) { display: none; }
    .cf-topbar-actions .cf-journal-trigger { min-width: 57px; padding-inline: 5px; font-size: 9px; line-height: 1.1; }
    .cf-topbar-actions .cf-economy-trigger { min-width: 57px; padding-inline: 5px; }
    .cf-topbar-actions .cf-economy-trigger::before, .cf-topbar-actions .cf-journal-trigger::before { display: none; }
    .cf-journal-trigger small { display: none; }
    .cf-console { min-height: 208px; }
    .cf-technique > p span { display: none; }
    .cf-menu-copy h1 { font-size: clamp(42px, 13vw, 56px); }
    .cf-character-select h2 { margin-bottom: 9px; font-size: 17px; }
    .cf-character-hint { display: none; }
    .cf-coat-list { grid-template-columns: none; grid-auto-columns: 116px; grid-auto-flow: column; overflow-x: auto; padding: 2px 2px 5px; scroll-snap-type: x proximity; overscroll-behavior-x: contain; }
    .cf-coat-list button { min-height: 56px; padding-block: 6px; }
    .cf-coat-list button { scroll-snap-align: start; }
    .cf-coat-thumb { width: 32px; height: 32px; }
    .cf-coat-list button strong { font-size: 10px; }
    .cf-coat-list button small { font-size: 7px; }
    .cf-event-choice-list { grid-template-columns: 1fr; }
    .cf-event-choice-button { min-height: 90px; }
    .cf-rules-heading { padding-right: 64px; }
    .cf-rules-heading > p { margin-bottom: 14px; font-size: 10px; }
    .cf-rules-steps > li { grid-template-columns: 116px minmax(0, 1fr); min-height: 140px; }
    .cf-guide-visual { min-height: 138px; }
    .cf-guide-copy { padding: 13px 12px; }
    .cf-guide-copy > span { margin-bottom: 6px; }
    .cf-guide-copy strong { font-size: 13px; }
    .cf-guide-copy p { margin-top: 5px; font-size: 10px; line-height: 1.55; }
    .cf-guide-meter { padding-inline: 10px; }
    .cf-guide-meter > span, .cf-guide-meter > small { font-size: 7px; }
    .cf-guide-event { padding-inline: 9px; }
    .cf-guide-event > div { padding-inline: 6px; }
    .cf-rules-note { grid-template-columns: 30px 1fr; }
    .cf-rules-note > span { width: 30px; height: 30px; }
    .cf-journal-heading { padding: 16px 64px 12px 14px; }
    .cf-journal-heading p { display: none; }
    .cf-journal-tabs { gap: 4px; padding: 7px 10px 0; }
    .cf-journal-tabs button { min-height: 44px; gap: 4px; font-size: 9px; }
    .cf-journal-tabs button span { width: 18px; height: 18px; font-size: 10px; }
    .cf-journal-page { max-height: calc(100dvh - 158px - env(safe-area-inset-top) - env(safe-area-inset-bottom)); padding: 11px 10px 16px; }
    .cf-economy-heading { grid-template-columns: minmax(0, 1fr) auto; gap: 8px; padding: 16px 62px 14px 14px; }
    .cf-economy-heading-copy { gap: 10px; }
    .cf-economy-emblem { width: 40px; height: 40px; flex-basis: 40px; border-width: 3px; }
    .cf-economy-emblem::before, .cf-economy-emblem::after { top: 8px; width: 15px; height: 10px; }
    .cf-economy-emblem i { top: 19px; height: 12px; }
    .cf-economy-heading h2 { font-size: 20px; }
    .cf-economy-heading .cf-dialog-code { font-size: 8px; }
    .cf-wallet { min-width: 74px; padding: 7px 9px; }
    .cf-wallet strong { font-size: 17px; }
    .cf-wallet strong::before { margin-right: 4px; font-size: 11px; }
    .cf-economy-tabs { gap: 6px; padding: 8px 10px 0; }
    .cf-economy-tabs button { min-height: 46px; gap: 6px; font-size: 10px; }
    .cf-economy-tabs button::before { width: 25px; height: 25px; font-size: 9px; }
    .cf-economy-page { max-height: calc(100dvh - 174px - env(safe-area-inset-top) - env(safe-area-inset-bottom)); padding: 12px 10px 17px; }
    .cf-bait-shelf { padding: 11px; border-width: 2px; }
    .cf-bait-shelf > header small { display: none; }
    .cf-bait-shelf > div { grid-template-columns: 1fr; gap: 6px; }
    .cf-bait-shelf article { min-height: 58px; align-content: center; }
    .cf-backpack-layout { margin-top: 8px; }
    .cf-catch-shelf, .cf-backpack-detail { min-height: 0; padding: 12px; border-width: 2px; }
    .cf-desktop-hint { display: none; }
    .cf-backpack-fish-list { grid-template-columns: 1fr; margin-top: 9px; }
    .cf-backpack-fish { min-height: 68px; }
    .cf-backpack-detail > img { min-height: 205px; max-height: 235px; }
    .cf-shop-grid { grid-template-columns: 1fr; gap: 8px; }
    .cf-shop-grid article { min-height: 230px; padding: 16px; border-width: 2px; }
    .cf-shop-grid article::before { top: 13px; right: 13px; width: 54px; height: 54px; font-size: 15px; }
    .cf-shop-grid article > p { min-height: 0; }
    .cf-page-intro { display: block; margin-bottom: 11px; }
    .cf-page-intro h3 { font-size: 17px; }
    .cf-page-intro > p { margin-top: 5px; }
    .cf-chart-board > header { padding-inline: 11px; }
    .cf-chart-canvas { min-height: 330px; }
    .cf-water-list li { width: 48px; }
    .cf-water-button { display: grid; width: 48px; min-height: 48px; grid-template-columns: 1fr; padding: 3px; border-radius: 50%; }
    .cf-water-number { width: 40px; height: 40px; }
    .cf-water-copy, .cf-water-state { display: none; }
    .cf-chart-detail { grid-template-columns: 118px minmax(0, 1fr); min-height: 194px; }
    .cf-chart-detail-visual { min-height: 194px; }
    .cf-chart-detail-copy { padding: 13px; }
    .cf-chart-detail-copy h3 { font-size: 17px; }
    .cf-chart-detail-copy dl { margin-block: 8px; }
    .cf-catalog-tabs { margin-bottom: 9px; }
    .cf-fish-index { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .cf-fish-index-card { grid-template-columns: 46px minmax(0, 1fr); }
    .cf-fish-index-visual { width: 46px; height: 46px; }
    .cf-fish-detail { grid-template-columns: 1fr; min-height: 0; }
    .cf-fish-visual { min-height: 248px; border-right: 0; border-bottom: 1px solid var(--cf-line); }
    .cf-fish-copy { padding: 11px 12px; }
    .cf-fish-detail h3 { margin-top: 7px; font-size: 19px; }
    .cf-fish-detail p { font-size: 9px; }
    .cf-fish-detail footer { padding-top: 9px; }
    .cf-action-feedback { bottom: calc(220px + env(safe-area-inset-bottom)); grid-template-columns: 30px minmax(0, 1fr); padding: 8px 10px; }
    .cf-action-feedback > i { width: 28px; height: 28px; }
    .cf-action-feedback > i::before { inset: 7px; }
    .cf-action-feedback > i::after { inset: 12px; }
    .cf-result-visual { width: min(210px, 61vw); margin-block: 10px 12px; }
    .cf-loading { grid-template-columns: auto 1fr auto; }
    .cf-loading-mark { width: 42px; height: 42px; }
    .cf-loading-copy strong { font-size: 11px; }
}

@media (max-width: 768px) {
    .cf-main-menu { padding-inline: 14px; }
    .cf-location-card h1 { font-size: 22px; }
}

@media (max-width: 360px) {
    .cf-console { min-height: 198px; }
    .cf-loadout { grid-template-columns: 92px minmax(0, 1fr); gap: 8px; }
    .cf-cast-zone { width: 118px; padding: 8px; }
    .cf-cast-button { min-height: 76px; }
    .cf-menu-copy h1 { font-size: clamp(38px, 12vw, 48px); }
    .cf-entry-card { padding-inline: 12px; }
    .cf-menu-actions { grid-template-columns: minmax(0, 1fr) 94px; }
    .cf-coat-list button strong { font-size: 9px; }
}

@media (max-height: 520px) {
    .cf-world-hud { inset: 54px 8px auto; }
    .cf-location-card { padding: 8px 10px; }
    .cf-location-card h1 { font-size: 18px; }
    .cf-console { min-height: 0; }
    .cf-loadout { padding: 8px 10px 6px; }
    .cf-technique { padding: 8px 10px; }
    .cf-cast-zone { width: 128px; padding: 8px; }
    .cf-cast-button { min-height: 64px; }
    .cf-main-menu { gap: 0; padding: 56px 14px max(8px, env(safe-area-inset-bottom)); }
    .cf-menu-copy h1 { margin: 0 0 4px; font-size: clamp(26px, 7vh, 40px); }
    .cf-menu-copy > p { display: block; margin-top: 3px; font-size: 11px; }
    .cf-cat-stage { width: 170px; height: 104px; }
    .cf-entry-card { padding: 10px 12px; }
    .cf-character-select h2 { margin-bottom: 6px; font-size: 15px; }
    .cf-coat-list button { min-height: 64px; padding: 6px; }
    .cf-coat-thumb { width: 28px; height: 28px; }
    .cf-menu-boarding { margin-top: 8px; padding-top: 8px; }
    .cf-start-button, .cf-menu-help { min-height: 44px; }
}

@media (min-width: 821px) and (max-height: 520px) {
    .cf-main-menu { align-content: center; gap: 0; padding-inline: 18px; }
    .cf-menu-content { width: min(100%, 560px); }
}

@media (prefers-reduced-motion: reduce) {
    .cf-app *,
    .cf-app *::before,
    .cf-app *::after {
        scroll-behavior: auto !important;
        animation-duration: 1ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 1ms !important;
    }
}
