
.fc-button {
    align-items: center;
    border: 1px solid transparent;
    border-radius: 12px;
    cursor: pointer;
    display: inline-flex;
    font: inherit;
    font-weight: 750;
    gap: .55rem;
    justify-content: center;
    min-height: 48px;
    padding: .78rem 1.1rem;
    text-decoration: none;
    transition: transform .18s ease, border-color .18s ease, background-color .18s ease, box-shadow .18s ease;
}
.fc-button:hover,
.fc-button:focus-visible {
    transform: translateY(-1px);
}
.fc-button--coral {
    background: linear-gradient(135deg, #ff806b, #f5614d);
    box-shadow: 0 12px 30px rgba(245, 97, 77, .25);
    color: #fff;
}
.fc-button--coral:hover,
.fc-button--coral:focus-visible {
    box-shadow: 0 16px 38px rgba(245, 97, 77, .34);
    color: #fff;
}
.fc-button--outline {
    background: rgba(8, 30, 47, .5);
    border-color: rgba(93, 222, 221, .55);
    color: #dffdfc;
}
.fc-eyebrow {
    color: #65dedb;
    display: inline-block;
    font-size: .73rem;
    font-weight: 800;
    letter-spacing: .15em;
    text-transform: uppercase;
}

/* Search */
.fc-search {
    align-items: end;
    background: rgba(7, 25, 42, .78);
    border: 1px solid rgba(139, 211, 222, .18);
    border-radius: 20px;
    box-shadow: 0 24px 80px rgba(1, 8, 17, .3);
    display: grid;
    gap: 14px;
    grid-template-columns: minmax(180px, 1.2fr) minmax(170px, 1fr) auto;
    padding: 18px;
}
.fc-search--expanded {
    grid-template-columns: repeat(2, minmax(180px, 1fr));
}
.fc-search__field {
    display: grid;
    gap: 7px;
}
.fc-search label,
.fc-calculator label,
.fc-support__form label {
    color: #a9c2cf;
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .02em;
}
.fc-search select,
.fc-search input,
.fc-calculator input,
.fc-support__form input,
.fc-support__form select,
.fc-support__form textarea {
    background: rgba(5, 20, 34, .85);
    border: 1px solid rgba(153, 209, 220, .22);
    border-radius: 10px;
    color: #f4fbfd;
    font: inherit;
    min-height: 48px;
    padding: .75rem .85rem;
    width: 100%;
}
.fc-search select:focus,
.fc-search input:focus,
.fc-calculator input:focus,
.fc-support__form input:focus,
.fc-support__form select:focus,
.fc-support__form textarea:focus {
    border-color: #54d2d0;
    box-shadow: 0 0 0 3px rgba(84, 210, 208, .14);
    outline: none;
}
.fc-search__custom-dates {
    display: contents;
}
.fc-search__custom-dates[hidden] {
    display: none !important;
}
.fc-search__date-help {
    color: #7f9ba8;
    font-size: .72rem;
    grid-column: 1 / -1;
    margin: -2px 0 0;
}
.fc-search__submit {
    white-space: nowrap;
}
.fc-search__note {
    color: #809aa8;
    font-size: .75rem;
    grid-column: 1 / -1;
    margin: -2px 0 0;
}
.fc-search__error {
    background: rgba(255, 105, 87, .13);
    border: 1px solid rgba(255, 105, 87, .4);
    border-radius: 10px;
    color: #ffd6cf;
    grid-column: 1 / -1;
    padding: .75rem .9rem;
}

/* Map */
.fc-map-shell {
    align-items: stretch;
    display: grid;
    gap: 22px;
    grid-template-columns: minmax(0, 1.65fr) minmax(260px, .72fr);
}
.fc-map-shell__visual {
    background:
        radial-gradient(circle at 78% 42%, rgba(26, 126, 139, .22), transparent 34%),
        linear-gradient(160deg, rgba(9, 40, 57, .95), rgba(3, 17, 30, .98));
    border: 1px solid rgba(119, 205, 213, .15);
    border-radius: 24px;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .035), 0 26px 70px rgba(1, 8, 16, .28);
    min-height: 520px;
    overflow: hidden;
    position: relative;
}
.fc-map-shell__visual::before,
.fc-map-shell__visual::after {
    border: 1px solid rgba(86, 209, 208, .075);
    border-radius: 50%;
    content: "";
    height: 540px;
    left: 55%;
    position: absolute;
    top: 40%;
    transform: translate(-50%, -50%);
    width: 540px;
}
.fc-map-shell__visual::after {
    height: 700px;
    width: 700px;
}
.fc-map {
    display: block;
    height: 100%;
    min-height: 520px;
    position: relative;
    width: 100%;
    z-index: 1;
}
.fc-map__state {
    stroke: rgba(183, 237, 239, .56);
    stroke-width: 2;
}
.fc-map__coast-highlight {
    fill: none;
    opacity: .28;
    stroke: #8ce7e6;
    stroke-dasharray: 2 9;
    stroke-linecap: round;
    stroke-width: 5;
}
.fc-map__routes path {
    fill: none;
    stroke: #ff826c;
    stroke-dasharray: 7 10;
    stroke-linecap: round;
    stroke-opacity: .55;
    stroke-width: 2;
}
.fc-port-marker {
    cursor: pointer;
    outline: none;
}
.fc-port-marker__glow {
    fill: rgba(255, 112, 89, .14);
    opacity: .45;
    transition: opacity .18s ease, transform .18s ease;
}
.fc-port-marker__outer {
    fill: #ff735d;
    stroke: #ffe8e2;
    stroke-width: 2;
}
.fc-port-marker__inner {
    fill: #fff;
}
.fc-port-marker__label {
    fill: #eefbfc;
    font-size: 17px;
    font-weight: 750;
    paint-order: stroke;
    pointer-events: none;
    stroke: rgba(2, 15, 26, .98);
    stroke-linejoin: round;
    stroke-width: 6px;
}
.fc-port-marker:hover .fc-port-marker__glow,
.fc-port-marker:focus .fc-port-marker__glow,
.fc-port-marker.is-active .fc-port-marker__glow {
    opacity: 1;
    transform: scale(1.4);
}
.fc-port-marker:hover .fc-port-marker__outer,
.fc-port-marker:focus .fc-port-marker__outer,
.fc-port-marker.is-active .fc-port-marker__outer {
    fill: #5ce1de;
}
.fc-map__compass circle {
    fill: rgba(5, 22, 37, .45);
    stroke: rgba(183, 229, 232, .26);
}
.fc-map__compass path {
    fill: #dfbd78;
    opacity: .9;
}
.fc-map__compass text {
    fill: #aac2ca;
    font-size: 15px;
}
.fc-map-card {
    align-self: center;
    position: relative;
    background:
        linear-gradient(165deg, rgba(16, 52, 68, .92), rgba(5, 22, 37, .98));
    border: 1px solid rgba(125, 214, 218, .2);
    border-radius: 24px;
    box-shadow: 0 24px 70px rgba(0, 8, 17, .3);
    padding: clamp(24px, 4vw, 40px);
}
.fc-map-card h3 {
    color: #f6fbfc;
    font-family: ui-serif, Georgia, Cambria, "Times New Roman", serif;
    font-size: clamp(2rem, 4vw, 3.6rem);
    letter-spacing: -.035em;
    line-height: .98;
    margin: .55rem 0 .4rem;
}
.fc-map-card p {
    color: #b2c8d1;
    line-height: 1.6;
}
.fc-map-card__city {
    color: #6ee0dd !important;
    font-size: .85rem;
    font-weight: 800;
    letter-spacing: .04em;
    margin: 0 0 1.2rem;
    text-transform: uppercase;
}
.fc-map-card__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 1.5rem;
}
.fc-map-card__hint {
    border-top: 1px solid rgba(132, 194, 203, .14);
    font-size: .78rem;
    margin: 1.5rem 0 0 !important;
    padding-top: 1rem;
}

/* Calculator */
.fc-calculator {
    background:
        radial-gradient(circle at 100% 0, rgba(64, 199, 202, .12), transparent 36%),
        linear-gradient(155deg, rgba(15, 49, 64, .95), rgba(5, 21, 35, .98));
    border: 1px solid rgba(123, 206, 214, .18);
    border-radius: 24px;
    display: grid;
    gap: 26px;
    grid-template-columns: .8fr 1.35fr .65fr;
    padding: clamp(24px, 4vw, 44px);
}
.fc-calculator__intro h2 {
    color: #f7fbfc;
    font-family: ui-serif, Georgia, Cambria, "Times New Roman", serif;
    font-size: clamp(2rem, 4vw, 3.3rem);
    letter-spacing: -.04em;
    line-height: 1;
    margin: .7rem 0 1rem;
}
.fc-calculator__intro p {
    color: #a9c0ca;
    line-height: 1.65;
}
.fc-calculator__form {
    display: grid;
    gap: 12px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
.fc-calculator__form label {
    display: grid;
    gap: 6px;
}
.fc-money-input {
    align-items: center;
    display: grid;
    grid-template-columns: auto 1fr;
}
.fc-money-input > span {
    color: #6bdedb;
    margin-right: -1.6rem;
    padding-left: .8rem;
    position: relative;
    z-index: 2;
}
.fc-money-input input {
    padding-left: 1.65rem;
}
.fc-calculator__result {
    align-content: center;
    background: rgba(2, 15, 26, .56);
    border: 1px solid rgba(102, 221, 217, .22);
    border-radius: 18px;
    color: #a9c4cc;
    display: grid;
    gap: .45rem;
    padding: 24px;
}
.fc-calculator__result strong {
    color: #66e6e2;
    font-size: clamp(2.3rem, 5vw, 4rem);
    letter-spacing: -.05em;
    line-height: 1;
    margin: .4rem 0 1rem;
}

/* Support */
.fc-support {
    margin-inline: auto;
    max-width: 920px;
}
.fc-support h1 {
    color: #f7fbfc;
    font-family: ui-serif, Georgia, Cambria, "Times New Roman", serif;
    font-size: clamp(2.6rem, 6vw, 5rem);
    letter-spacing: -.045em;
    margin: .5rem 0 1rem;
}
.fc-support > p {
    color: #aac0ca;
    line-height: 1.7;
}
.fc-support__form {
    background: rgba(8, 31, 49, .72);
    border: 1px solid rgba(126, 205, 213, .16);
    border-radius: 22px;
    display: grid;
    gap: 16px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-top: 2rem;
    padding: clamp(22px, 4vw, 38px);
}
.fc-support__form label {
    display: grid;
    gap: 7px;
}
.fc-support__wide,
.fc-support__form button {
    grid-column: 1 / -1;
}
.fc-notice {
    border-radius: 12px;
    margin: 1.5rem 0;
    padding: 1rem 1.1rem;
}
.fc-notice--success {
    background: rgba(45, 190, 154, .12);
    border: 1px solid rgba(45, 190, 154, .35);
    color: #c8fff0;
}
.fc-notice--error {
    background: rgba(255, 105, 87, .12);
    border: 1px solid rgba(255, 105, 87, .35);
    color: #ffd7d0;
}

@media (max-width: 980px) {
    .fc-map-shell,
    .fc-calculator {
        grid-template-columns: 1fr;
    }
    .fc-map-card {
        align-self: auto;
    }
    .fc-calculator__form {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
@media (max-width: 720px) {
    .fc-search,
    .fc-search--expanded,
    .fc-support__form,
    .fc-calculator__form {
        grid-template-columns: 1fr;
    }
    .fc-search__custom-dates {
        display: grid;
        gap: 12px;
    }
    .fc-search__custom-dates[hidden] {
        display: none;
    }
    .fc-support__wide,
    .fc-support__form button {
        grid-column: auto;
    }
    .fc-map-shell__visual,
    .fc-map {
        min-height: 390px;
    }
    .fc-port-marker__label {
        font-size: 20px;
    }
}

/* Version 0.2: Midnight Atlas map and search refinements */
.fc-inline-search-link {
    color: #bff8f6;
    font-size: .78rem;
    font-weight: 800;
    text-decoration: none;
    white-space: nowrap;
}
.fc-inline-search-link:hover,
.fc-inline-search-link:focus-visible {
    color: #fff;
    text-decoration: underline;
    text-underline-offset: 4px;
}

.fc-search {
    backdrop-filter: blur(18px);
    background:
        linear-gradient(160deg, rgba(10, 35, 53, .9), rgba(4, 20, 34, .92));
    border-color: rgba(133, 222, 226, .22);
    box-shadow: 0 28px 85px rgba(0, 8, 17, .38), inset 0 1px 0 rgba(255,255,255,.04);
    gap: 12px;
    padding: 15px;
}
.fc-search__field {
    min-width: 0;
}
.fc-search label {
    color: #9db9c4;
    font-size: .7rem;
    letter-spacing: .075em;
    text-transform: uppercase;
}
.fc-search select,
.fc-search input {
    background: rgba(3, 18, 31, .84);
    border-color: rgba(160, 222, 229, .2);
    min-height: 52px;
}
.fc-search__submit {
    min-height: 52px;
}
.fc-search__note {
    margin-top: 0;
}

.fc-map-shell__visual {
    background: #031522;
    isolation: isolate;
    min-height: 610px;
}
.fc-map-shell__visual::before,
.fc-map-shell__visual::after {
    display: none;
}
.fc-map-shell__legend {
    left: 24px;
    position: absolute;
    top: 24px;
    z-index: 3;
}
.fc-map-shell__legend span {
    color: rgba(239, 251, 252, .82);
    display: block;
    font-family: ui-serif, Georgia, Cambria, "Times New Roman", serif;
    font-size: 1.35rem;
    letter-spacing: -.03em;
}
.fc-map-shell__legend small {
    color: rgba(135, 176, 188, .72);
    display: block;
    font-size: .64rem;
    font-weight: 750;
    letter-spacing: .12em;
    margin-top: .15rem;
    text-transform: uppercase;
}
.fc-map {
    min-height: 610px;
}
.fc-map__contours path {
    fill: none;
    stroke: rgba(120, 206, 213, .08);
    stroke-width: 1.4;
}
.fc-map__routes path {
    animation: fc-route-flow 16s linear infinite;
    stroke: #ff806b;
    stroke-dasharray: 4 10;
    stroke-opacity: .62;
    stroke-width: 2;
}
.fc-map__destination-labels text {
    fill: rgba(189, 222, 226, .62);
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .13em;
    text-transform: uppercase;
}
.fc-map__state {
    stroke: rgba(202, 244, 245, .62);
    stroke-width: 2.2;
}
.fc-map__coast-highlight {
    opacity: .34;
    stroke: rgba(108, 229, 224, .86);
    stroke-dasharray: 1 8;
    stroke-width: 4;
}
.fc-map__state-label {
    fill: rgba(222, 245, 246, .2);
    font-size: 28px;
    font-weight: 700;
    letter-spacing: .28em;
}
.fc-port-marker__leader {
    stroke: rgba(214, 242, 243, .58);
    stroke-width: 1;
}
.fc-port-marker__label {
    font-size: 16px;
    letter-spacing: .01em;
    stroke-width: 7px;
}
.fc-map__compass-cross {
    fill: none !important;
    stroke: rgba(203, 229, 231, .26);
    stroke-width: 1;
}
.fc-map-port-tabs {
    bottom: 16px;
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    left: 18px;
    max-width: calc(100% - 36px);
    position: absolute;
    z-index: 5;
}
.fc-map-port-tabs button {
    backdrop-filter: blur(12px);
    background: rgba(4, 22, 36, .74);
    border: 1px solid rgba(128, 204, 213, .18);
    border-radius: 999px;
    color: #a7c1ca;
    cursor: pointer;
    font: inherit;
    font-size: .68rem;
    font-weight: 760;
    padding: .48rem .7rem;
    transition: background-color .18s ease, border-color .18s ease, color .18s ease;
}
.fc-map-port-tabs button:hover,
.fc-map-port-tabs button:focus-visible,
.fc-map-port-tabs button.is-active {
    background: rgba(26, 109, 121, .68);
    border-color: rgba(99, 227, 222, .5);
    color: #fff;
    outline: none;
}
.fc-map-card {
    background:
        radial-gradient(circle at 100% 0, rgba(81, 211, 207, .1), transparent 36%),
        linear-gradient(165deg, rgba(14, 51, 67, .95), rgba(4, 19, 32, .98));
}
.fc-map-card[hidden] {
    display: none !important;
}
.fc-map-card__close {
    align-items: center;
    background: rgba(2, 15, 25, .72);
    border: 1px solid rgba(143, 218, 223, .28);
    border-radius: 999px;
    color: #dffbfb;
    cursor: pointer;
    display: inline-flex;
    font-size: 1.45rem;
    height: 38px;
    justify-content: center;
    line-height: 1;
    padding: 0 0 2px;
    position: absolute;
    right: 16px;
    top: 16px;
    transition: background-color .18s ease, border-color .18s ease, transform .18s ease;
    width: 38px;
}
.fc-map-card__close:hover,
.fc-map-card__close:focus-visible {
    background: rgba(27, 102, 113, .78);
    border-color: rgba(112, 236, 232, .64);
    outline: none;
    transform: scale(1.04);
}
.fc-map-card__facts {
    border-bottom: 1px solid rgba(132, 194, 203, .14);
    border-top: 1px solid rgba(132, 194, 203, .14);
    display: grid;
    gap: 0;
    margin: 1.35rem 0 0;
}
.fc-map-card__facts > div {
    display: grid;
    gap: .35rem;
    grid-template-columns: 100px 1fr;
    padding: .7rem 0;
}
.fc-map-card__facts > div + div {
    border-top: 1px solid rgba(132, 194, 203, .1);
}
.fc-map-card__facts dt {
    color: #78dedb;
    font-size: .66rem;
    font-weight: 850;
    letter-spacing: .09em;
    text-transform: uppercase;
}
.fc-map-card__facts dd {
    color: #c7d7dc;
    font-size: .8rem;
    margin: 0;
}

@keyframes fc-route-flow {
    to { stroke-dashoffset: -140; }
}

@media (prefers-reduced-motion: reduce) {
    .fc-map__routes path { animation: none; }
}

@media (max-width: 900px) {
    .fc-map-shell__visual,
    .fc-map {
        min-height: 540px;
    }
    .fc-map-shell__legend {
        left: 18px;
        top: 18px;
    }
    .fc-map-port-tabs {
        overflow-x: auto;
        flex-wrap: nowrap;
        padding-bottom: 2px;
        scrollbar-width: none;
    }
    .fc-map-port-tabs::-webkit-scrollbar { display: none; }
}

@media (max-width: 620px) {
    .fc-search,
    .fc-search--expanded {
        grid-template-columns: 1fr;
    }
    .fc-search__custom-dates {
        display: grid;
        gap: 12px;
        grid-column: 1 / -1;
        grid-template-columns: 1fr;
    }
    .fc-map-shell__visual,
    .fc-map {
        min-height: 470px;
    }
    .fc-map-shell__legend small { display: none; }
    .fc-port-marker__label { font-size: 14px; }
    .fc-map-card__facts > div { grid-template-columns: 1fr; }
}


/* V3 map polish */
.fc-map-shell { --fc-map-coral:#ff745e; --fc-map-aqua:#5ce0dd; }
.fc-map-shell__visual::after {
    background: linear-gradient(90deg, rgba(0,0,0,.18), transparent 32%, transparent 72%, rgba(0,0,0,.12));
    content:""; inset:0; pointer-events:none; position:absolute;
}
.fc-map__state { filter: drop-shadow(0 26px 28px rgba(0,0,0,.58)); }
.fc-map__coast-highlight { fill:none; stroke:#8be9e5; stroke-opacity:.44; stroke-width:2.1; }
.fc-map__routes path { stroke:var(--fc-map-coral); stroke-dasharray:7 9; stroke-linecap:round; stroke-opacity:.72; stroke-width:1.7; }
.fc-map__destination-labels text { fill:#82b9c4; font-size:12px; font-weight:800; letter-spacing:.16em; text-transform:uppercase; }
.fc-port-marker__label {
    fill:#f8ffff; font-size:14px; font-weight:850; letter-spacing:.015em;
    paint-order:stroke; stroke:rgba(3,17,27,.98); stroke-linejoin:round; stroke-width:7px;
}
.fc-port-marker__leader { stroke:#98ece9; stroke-opacity:.68; stroke-width:1.3; }
.fc-port-marker__outer { fill:#ff745e; stroke:#ffd2c9; stroke-width:2.5; }
.fc-port-marker__inner { fill:#fff; }
.fc-port-marker__glow { fill:rgba(255,116,94,.34); }
.fc-port-marker { cursor:pointer; }
.fc-port-marker:focus-visible .fc-port-marker__outer, .fc-port-marker:hover .fc-port-marker__outer, .fc-port-marker.is-active .fc-port-marker__outer { stroke:#fff; stroke-width:4; }
.fc-map__contours path { stroke:#69bbc4; stroke-opacity:.13; }

/* 0.3.1: let the atlas use the full canvas until a port is selected. */
.fc-map-shell:not(.is-details-open) {
    grid-template-columns: minmax(0, 1fr);
}
.fc-map-shell:not(.is-details-open) .fc-map-shell__visual {
    grid-column: 1 / -1;
}

/* Version 0.4 functional beta */
.fc-tool-heading { max-width: 860px; margin-bottom: clamp(24px,4vw,44px); }
.fc-tool-heading h1,
.fc-port-hub h1,
.fc-editorial-guide h1,
.fc-match h1 { color:#f7fbfc; font-family:ui-serif,Georgia,Cambria,"Times New Roman",serif; font-size:clamp(2.7rem,6vw,5.4rem); letter-spacing:-.055em; line-height:.96; margin:.6rem 0 1rem; }
.fc-tool-heading p,
.fc-editorial-guide header > p { color:#abc2cc; font-size:clamp(1rem,1.8vw,1.18rem); line-height:1.72; max-width:760px; }

/* Keep all map labels inside the atlas at every desktop width. */
.fc-map-shell--hero .fc-map-shell__visual { min-height:680px; }
.fc-map-shell--hero .fc-map { min-height:680px; }
.fc-map-shell__visual { contain:paint; }
.fc-map { overflow:visible; }
.fc-port-marker__label { font-size:15px; }
.fc-map__destination-labels text { font-size:11px; }
.fc-map-shell.is-details-open { grid-template-columns:minmax(0,1fr); }
.fc-map-shell.is-details-open .fc-map-card {
    backdrop-filter:blur(18px); bottom:28px; max-height:calc(100% - 56px); max-width:370px;
    overflow:auto; position:absolute; right:28px; top:auto; width:calc(100% - 56px); z-index:8;
}
.fc-map-shell { position:relative; }
.fc-map-card__actions .fc-button { flex:1; }

/* Port comparison */
.fc-port-compare { margin-inline:auto; max-width:1500px; }
.fc-compare-filters { display:flex; flex-wrap:wrap; gap:10px; margin:0 0 16px; }
.fc-compare-filters button { background:rgba(5,24,39,.8); border:1px solid rgba(122,207,214,.22); border-radius:999px; color:#a9c4cd; cursor:pointer; font:inherit; font-size:.82rem; font-weight:780; padding:.72rem 1rem; }
.fc-compare-filters button:hover,
.fc-compare-filters button:focus-visible,
.fc-compare-filters button.is-active { background:rgba(30,116,126,.65); border-color:rgba(94,229,224,.58); color:#fff; outline:none; }
.fc-compare-summary { color:#8caab5; margin:0 0 24px; }
.fc-compare-grid { display:grid; gap:18px; grid-template-columns:repeat(5,minmax(220px,1fr)); }
.fc-compare-card { background:linear-gradient(165deg,rgba(13,47,63,.92),rgba(4,19,32,.98)); border:1px solid rgba(126,205,213,.17); border-radius:22px; display:flex; flex-direction:column; min-width:0; padding:24px; position:relative; transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease; }
.fc-compare-card.is-best-match { border-color:rgba(94,229,224,.68); box-shadow:0 22px 60px rgba(0,8,17,.3), inset 0 1px 0 rgba(255,255,255,.04); transform:translateY(-4px); }
.fc-compare-card__rank { color:#ff8b78; font-size:.7rem; font-weight:850; letter-spacing:.1em; position:absolute; right:20px; text-transform:uppercase; top:20px; }
.fc-compare-card h2 { color:#f7fbfc; font-family:ui-serif,Georgia,Cambria,"Times New Roman",serif; font-size:2rem; letter-spacing:-.04em; line-height:1; margin:.65rem 0 .35rem; }
.fc-compare-card__city { color:#62dedb!important; font-size:.78rem; font-weight:800; margin:0 0 1rem!important; text-transform:uppercase; }
.fc-compare-card > p { color:#a9c1cb; line-height:1.58; }
.fc-compare-card dl { border-top:1px solid rgba(132,194,203,.12); margin:1rem 0 1.4rem; }
.fc-compare-card dl div { border-bottom:1px solid rgba(132,194,203,.1); padding:.75rem 0; }
.fc-compare-card dt { color:#72dedb; font-size:.64rem; font-weight:850; letter-spacing:.09em; text-transform:uppercase; }
.fc-compare-card dd { color:#c4d4da; font-size:.82rem; line-height:1.45; margin:.28rem 0 0; }
.fc-compare-card__actions { display:grid; gap:9px; margin-top:auto; }
.fc-compare-card__actions .fc-button { width:100%; }
.fc-port-compare--compact .fc-compare-card dl { display:none; }

/* Comparison calculator */
.fc-calculator--compare { display:block; }
.fc-calculator__scenarios { display:grid; gap:18px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.fc-cost-scenario { background:rgba(2,15,26,.5); border:1px solid rgba(111,210,214,.18); border-radius:20px; margin:0; min-width:0; padding:22px; transition:border-color .2s ease,box-shadow .2s ease; }
.fc-cost-scenario.is-lower-cost { border-color:rgba(94,229,224,.65); box-shadow:0 16px 48px rgba(14,133,137,.14); }
.fc-cost-scenario legend { color:#f7fbfc; font-family:ui-serif,Georgia,Cambria,"Times New Roman",serif; font-size:1.65rem; font-weight:700; padding:0 .35rem; }
.fc-cost-scenario__name { display:grid; gap:6px; margin-bottom:12px; }
.fc-cost-scenario__grid { display:grid; gap:10px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.fc-cost-scenario__grid label { display:grid; gap:6px; }
.fc-cost-scenario__result { border-top:1px solid rgba(120,196,204,.16); color:#a7c2ca; display:grid; gap:.35rem; margin-top:18px; padding-top:16px; }
.fc-cost-scenario__result strong { color:#64e4e0; font-size:2.6rem; letter-spacing:-.05em; line-height:1; }
.fc-cost-scenario__result small { line-height:1.5; }
.fc-cost-comparison { background:linear-gradient(135deg,rgba(25,101,111,.34),rgba(5,26,41,.72)); border:1px solid rgba(99,225,222,.25); border-radius:14px; color:#e7ffff; font-weight:760; margin-top:18px; padding:1rem 1.1rem; text-align:center; }
.fc-calculator--compact { grid-template-columns:.75fr 1.5fr; }
.fc-calculator--compact .fc-calculator__scenarios { grid-template-columns:1fr; }
.fc-calculator--compact .fc-cost-scenario { padding:18px; }

/* Port hubs */
.fc-port-hub { margin-inline:auto; max-width:1440px; }
.fc-port-hub__hero { align-items:center; display:grid; gap:clamp(28px,5vw,72px); grid-template-columns:minmax(0,1.25fr) minmax(310px,.65fr); padding:clamp(20px,4vw,50px) 0 clamp(55px,8vw,100px); }
.fc-port-hub__hero > div > p { color:#abc2cc; font-size:clamp(1.05rem,1.8vw,1.25rem); line-height:1.7; max-width:750px; }
.fc-port-hub__actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:1.7rem; }
.fc-port-hub__snapshot { background:linear-gradient(165deg,rgba(14,51,67,.92),rgba(4,19,32,.98)); border:1px solid rgba(125,214,218,.2); border-radius:24px; box-shadow:0 24px 70px rgba(0,8,17,.28); padding:28px; }
.fc-port-hub__snapshot > span { color:#6de0dd; font-size:.7rem; font-weight:850; letter-spacing:.12em; text-transform:uppercase; }
.fc-port-hub__snapshot dl { margin:1rem 0 0; }
.fc-port-hub__snapshot dl div { border-top:1px solid rgba(128,196,204,.13); display:grid; gap:.5rem; grid-template-columns:100px 1fr; padding:.85rem 0; }
.fc-port-hub__snapshot dt { color:#7b9ca8; font-size:.68rem; font-weight:800; text-transform:uppercase; }
.fc-port-hub__snapshot dd { color:#d2e0e4; margin:0; }
.fc-port-hub__decision { align-items:start; border-bottom:1px solid rgba(126,204,212,.12); border-top:1px solid rgba(126,204,212,.12); display:grid; gap:40px; grid-template-columns:.8fr 1.2fr; padding:clamp(44px,7vw,80px) 0; }
.fc-port-hub__decision h2,
.fc-port-hub__search h2,
.fc-port-hub__faq h2 { color:#f7fbfc; font-family:ui-serif,Georgia,Cambria,"Times New Roman",serif; font-size:clamp(2.2rem,4vw,4rem); letter-spacing:-.045em; line-height:1; margin:.7rem 0 1rem; }
.fc-port-hub__decision p,
.fc-port-hub__search p,
.fc-port-hub__faq p { color:#a9c0ca; line-height:1.7; }
.fc-port-hub__proscons { display:grid; gap:14px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.fc-port-hub__proscons article { background:rgba(8,31,49,.62); border:1px solid rgba(126,205,213,.14); border-radius:18px; padding:24px; }
.fc-port-hub__proscons h3 { color:#eefafa; font-size:1.05rem; margin:0 0 .55rem; }
.fc-port-hub__planning { display:grid; gap:16px; grid-template-columns:repeat(4,minmax(0,1fr)); padding:clamp(48px,7vw,88px) 0; }
.fc-port-hub__planning article { background:linear-gradient(165deg,rgba(13,47,63,.78),rgba(4,19,32,.94)); border:1px solid rgba(126,205,213,.14); border-radius:20px; padding:24px; }
.fc-port-hub__planning article > span { color:#ff806b; font-size:.75rem; font-weight:850; }
.fc-port-hub__planning h2 { color:#f5fbfc; font-family:ui-serif,Georgia,Cambria,"Times New Roman",serif; font-size:1.7rem; line-height:1.05; margin:1rem 0 .75rem; }
.fc-port-hub__planning p { color:#9fb8c2; line-height:1.65; }
.fc-port-hub__search { align-items:center; background:linear-gradient(145deg,rgba(18,61,76,.72),rgba(3,18,31,.94)); border:1px solid rgba(111,210,214,.18); border-radius:26px; display:grid; gap:32px; grid-template-columns:.7fr 1.3fr; padding:clamp(26px,5vw,48px); }
.fc-port-hub__faq { margin:clamp(55px,8vw,100px) auto 0; max-width:950px; }
.fc-port-hub__faq details { border-bottom:1px solid rgba(126,205,213,.16); padding:1.1rem 0; }
.fc-port-hub__faq summary { color:#eaf8f9; cursor:pointer; font-size:1.05rem; font-weight:750; }

/* Cruise match */
.fc-match { margin-inline:auto; max-width:1100px; }
.fc-match__form { display:grid; gap:16px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.fc-match__form fieldset { background:rgba(8,31,49,.66); border:1px solid rgba(126,205,213,.16); border-radius:20px; display:grid; gap:9px; margin:0; padding:22px; }
.fc-match__form legend { color:#effbfc; font-weight:800; padding:0 .35rem; }
.fc-match__form label { align-items:center; background:rgba(3,18,31,.55); border:1px solid transparent; border-radius:11px; color:#bcd0d6; cursor:pointer; display:flex; gap:10px; padding:.75rem .85rem; }
.fc-match__form label:has(input:checked) { background:rgba(27,112,122,.38); border-color:rgba(94,229,224,.48); color:#fff; }
.fc-match__form button { grid-column:1/-1; justify-self:start; }
.fc-match__result { background:linear-gradient(150deg,rgba(18,66,80,.86),rgba(4,19,32,.98)); border:1px solid rgba(94,229,224,.35); border-radius:24px; margin-top:24px; padding:clamp(25px,5vw,44px); }
.fc-match__result h2 { color:#f7fbfc; font-family:ui-serif,Georgia,Cambria,"Times New Roman",serif; font-size:clamp(2.4rem,5vw,4.4rem); letter-spacing:-.05em; margin:.6rem 0 1rem; }
.fc-match__result p { color:#bad0d6; line-height:1.7; max-width:760px; }
.fc-match__result > div { display:flex; flex-wrap:wrap; gap:10px; margin-top:1.5rem; }

/* Editorial guides */
.fc-guide-grid { display:grid; gap:16px; grid-template-columns:repeat(4,minmax(0,1fr)); }
.fc-guide-card { background:linear-gradient(155deg,rgba(14,50,66,.76),rgba(4,19,32,.95)); border:1px solid rgba(126,205,213,.15); border-radius:20px; color:inherit; padding:24px; text-decoration:none; transition:transform .2s ease,border-color .2s ease; }
.fc-guide-card:hover,.fc-guide-card:focus-visible { border-color:rgba(94,229,224,.48); transform:translateY(-3px); }
.fc-guide-card h3 { color:#f5fbfc; font-family:ui-serif,Georgia,Cambria,"Times New Roman",serif; font-size:1.7rem; letter-spacing:-.035em; line-height:1.05; margin:.8rem 0; }
.fc-guide-card p { color:#9fb8c2; line-height:1.6; }
.fc-guide-card > span:last-child { color:#78e2df; font-size:.82rem; font-weight:800; }
.fc-editorial-guide { margin-inline:auto; max-width:1200px; }
.fc-editorial-guide header { max-width:850px; padding-bottom:clamp(40px,7vw,80px); }
.fc-editorial-guide__sections { display:grid; gap:16px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.fc-editorial-guide__sections section { background:rgba(8,31,49,.64); border:1px solid rgba(126,205,213,.14); border-radius:20px; padding:28px; }
.fc-editorial-guide__sections section > span { color:#ff806b; font-size:.74rem; font-weight:850; }
.fc-editorial-guide__sections h2 { color:#f5fbfc; font-family:ui-serif,Georgia,Cambria,"Times New Roman",serif; font-size:2rem; letter-spacing:-.04em; margin:1rem 0 .75rem; }
.fc-editorial-guide__sections p { color:#a1bac4; line-height:1.68; }
.fc-editorial-guide__cta { align-items:center; background:linear-gradient(135deg,rgba(23,89,99,.5),rgba(4,20,33,.9)); border:1px solid rgba(94,229,224,.22); border-radius:22px; display:flex; gap:24px; justify-content:space-between; margin-top:28px; padding:28px; }
.fc-editorial-guide__cta h2 { color:#f5fbfc; font-family:ui-serif,Georgia,Cambria,"Times New Roman",serif; font-size:2rem; margin:0; }

.fc-honeypot { height:0!important; left:-9999px!important; overflow:hidden!important; position:absolute!important; width:0!important; }
.fc-support__privacy { color:#819da8; font-size:.75rem; grid-column:1/-1; margin:0; }

@media (max-width:1250px) {
    .fc-compare-grid { grid-template-columns:repeat(3,minmax(230px,1fr)); }
    .fc-port-hub__planning,.fc-guide-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:900px) {
    .fc-map-shell--hero .fc-map-shell__visual,.fc-map-shell--hero .fc-map { min-height:570px; }
    .fc-map-shell.is-details-open .fc-map-card { bottom:18px; max-width:calc(100% - 36px); right:18px; width:calc(100% - 36px); }
    .fc-port-marker__label { font-size:13px; }
    .fc-compare-grid { grid-template-columns:repeat(2,minmax(220px,1fr)); }
    .fc-calculator__scenarios,.fc-port-hub__hero,.fc-port-hub__decision,.fc-port-hub__search { grid-template-columns:1fr; }
    .fc-cost-scenario__grid { grid-template-columns:1fr; }
    .fc-match__form { grid-template-columns:1fr; }
    .fc-port-hub__proscons { grid-template-columns:1fr; }
}
@media (max-width:650px) {
    .fc-map-shell--hero .fc-map-shell__visual,.fc-map-shell--hero .fc-map { min-height:460px; }
    .fc-map__destination-labels,.fc-map__compass { display:none; }
    .fc-port-marker__label { display:none; }
    .fc-compare-grid,.fc-port-hub__planning,.fc-guide-grid,.fc-editorial-guide__sections { grid-template-columns:1fr; }
    .fc-calculator { padding:20px; }
    .fc-editorial-guide__cta { align-items:flex-start; flex-direction:column; }
    .fc-port-hub__snapshot dl div { grid-template-columns:1fr; }
}

/* Version 0.5.0: calculator sample presets */
.fc-cost-presets {
    background: rgba(9, 39, 57, .62);
    border: 1px solid rgba(112, 210, 215, .16);
    border-radius: 15px;
    display: grid;
    gap: 10px;
    margin: 0 0 16px;
    padding: 14px;
}
.fc-cost-presets > span {
    color: #75dfdc;
    font-size: .68rem;
    font-weight: 850;
    letter-spacing: .1em;
    text-transform: uppercase;
}
.fc-cost-presets > div {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
}
.fc-cost-presets button {
    background: rgba(3, 19, 32, .78);
    border: 1px solid rgba(126, 205, 213, .2);
    border-radius: 999px;
    color: #c7dadd;
    cursor: pointer;
    font-size: .72rem;
    font-weight: 760;
    padding: .56rem .72rem;
}
.fc-cost-presets button:hover,
.fc-cost-presets button:focus-visible {
    background: rgba(27, 111, 122, .54);
    border-color: rgba(94, 229, 224, .56);
    color: #fff;
    outline: none;
}
.fc-cost-presets small {
    color: #7897a3;
    line-height: 1.45;
}

/* Version 0.5.0: deeper port hubs */
.fc-port-hub__cost-link,
.fc-port-hub__official {
    align-items: center;
    background: linear-gradient(145deg, rgba(15, 55, 72, .72), rgba(3, 18, 31, .94));
    border: 1px solid rgba(111, 210, 214, .17);
    border-radius: 24px;
    display: grid;
    gap: 28px;
    grid-template-columns: minmax(0, 1.25fr) minmax(240px, .75fr);
    margin-bottom: 22px;
    padding: clamp(24px, 4vw, 42px);
}
.fc-port-hub__cost-link h2,
.fc-port-hub__official h2 {
    color: #f7fbfc;
    font-family: ui-serif, Georgia, Cambria, "Times New Roman", serif;
    font-size: clamp(2rem, 3.5vw, 3.2rem);
    letter-spacing: -.045em;
    line-height: 1;
    margin: .65rem 0 .85rem;
}
.fc-port-hub__cost-link p,
.fc-port-hub__official p {
    color: #a7c0ca;
    line-height: 1.68;
    margin: 0;
}
.fc-port-hub__official-links {
    display: grid;
    gap: 9px;
}
.fc-port-hub__official-links a {
    align-items: center;
    background: rgba(3, 19, 32, .7);
    border: 1px solid rgba(126, 205, 213, .16);
    border-radius: 12px;
    color: #d9e9ec;
    display: flex;
    font-size: .86rem;
    font-weight: 760;
    gap: 12px;
    justify-content: space-between;
    padding: .82rem .9rem;
    text-decoration: none;
}
.fc-port-hub__official-links a:hover,
.fc-port-hub__official-links a:focus-visible {
    border-color: rgba(94, 229, 224, .55);
    color: #fff;
}
.fc-guide-grid--expanded { grid-template-columns: repeat(3, minmax(0, 1fr)); }

@media (max-width: 980px) {
    .fc-port-hub__cost-link,
    .fc-port-hub__official { grid-template-columns: 1fr; }
    .fc-guide-grid--expanded { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 650px) {
    .fc-guide-grid--expanded { grid-template-columns: 1fr; }
}


/* Version 0.5.2: contextual Amazon affiliate product cards */
.fc-amazon-products {
    background: linear-gradient(145deg, rgba(15, 55, 72, .72), rgba(3, 18, 31, .94));
    border: 1px solid rgba(111, 210, 214, .18);
    border-radius: 24px;
    margin: 2rem 0;
    padding: clamp(24px, 4vw, 42px);
}
.fc-amazon-products h2 {
    color: #f7fbfc;
    font-family: ui-serif, Georgia, Cambria, "Times New Roman", serif;
    font-size: clamp(2rem, 3.6vw, 3.1rem);
    letter-spacing: -.045em;
    line-height: 1.02;
    margin: .65rem 0 .75rem;
}
.fc-amazon-products__intro {
    color: #a7c0ca;
    line-height: 1.7;
    max-width: 860px;
}
.fc-amazon-products__grid {
    display: grid;
    gap: 14px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-top: 1.35rem;
}
.fc-amazon-product {
    background: rgba(3, 19, 32, .72);
    border: 1px solid rgba(126, 205, 213, .16);
    border-radius: 16px;
    color: inherit;
    display: block;
    padding: 1.15rem;
    text-decoration: none;
    transition: border-color .2s ease, transform .2s ease, background .2s ease;
}
.fc-amazon-product:hover,
.fc-amazon-product:focus-visible {
    background: rgba(10, 43, 59, .88);
    border-color: rgba(94, 229, 224, .55);
    outline: none;
    transform: translateY(-2px);
}
.fc-amazon-product__label {
    color: #ff8a76;
    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .12em;
    text-transform: uppercase;
}
.fc-amazon-product h3 {
    color: #f7fbfc;
    font-size: 1.08rem;
    margin: .55rem 0 .45rem;
}
.fc-amazon-product p {
    color: #9fb7c1;
    line-height: 1.6;
    margin: 0 0 .8rem;
}
.fc-amazon-product__cta {
    color: #5ee5e0;
    font-size: .84rem;
    font-weight: 780;
}
@media (max-width: 720px) {
    .fc-amazon-products__grid { grid-template-columns: 1fr; }
}


/* Version 0.5.4: dedicated privacy policy and request form */
.fc-privacy-policy { margin-inline:auto; max-width:1080px; }
.fc-privacy-policy__header { border-bottom:1px solid rgba(126,205,213,.18); margin-bottom:30px; padding-bottom:30px; }
.fc-privacy-policy__header h1 { color:#f7fbfc; font-family:ui-serif,Georgia,Cambria,"Times New Roman",serif; font-size:clamp(3rem,7vw,5.8rem); letter-spacing:-.055em; line-height:.95; margin:.55rem 0 1rem; }
.fc-privacy-policy__header > p:not(.fc-privacy-policy__updated) { color:#abc2ca; font-size:1.05rem; line-height:1.75; max-width:820px; }
.fc-privacy-policy__updated { color:#75dfdc; font-size:.78rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.fc-privacy-policy__summary { display:grid; gap:14px; grid-template-columns:repeat(3,minmax(0,1fr)); margin:0 0 32px; }
.fc-privacy-policy__summary > div { background:linear-gradient(150deg,rgba(16,58,72,.72),rgba(5,22,35,.9)); border:1px solid rgba(126,205,213,.17); border-radius:18px; padding:22px; }
.fc-privacy-policy__summary strong { color:#f4fbfc; display:block; font-size:1rem; margin-bottom:.5rem; }
.fc-privacy-policy__summary span { color:#9fb8c1; display:block; font-size:.88rem; line-height:1.55; }
.fc-privacy-policy > section { background:rgba(7,29,45,.62); border:1px solid rgba(126,205,213,.13); border-radius:20px; margin:0 0 16px; padding:clamp(22px,4vw,34px); }
.fc-privacy-policy > section h2 { color:#f5fbfc; font-family:ui-serif,Georgia,Cambria,"Times New Roman",serif; font-size:clamp(1.65rem,3vw,2.25rem); letter-spacing:-.035em; margin:0 0 1rem; }
.fc-privacy-policy > section h3 { color:#dff5f6; font-size:1rem; margin:1.35rem 0 .45rem; }
.fc-privacy-policy > section p,.fc-privacy-policy > section li { color:#a8bec6; line-height:1.72; }
.fc-privacy-policy > section ul { margin:0; padding-left:1.25rem; }
.fc-privacy-request { margin-top:24px; }
.fc-privacy-request__form { display:grid; gap:14px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.fc-privacy-request__form label { display:grid; gap:7px; }
.fc-privacy-request__form label > span { color:#9fb8c1; font-size:.76rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.fc-privacy-request__form input,.fc-privacy-request__form select,.fc-privacy-request__form textarea { background:#051a2a; border:1px solid rgba(126,205,213,.2); border-radius:11px; color:#f3fbfc; font:inherit; padding:.82rem .9rem; width:100%; }
.fc-privacy-request__form input:focus,.fc-privacy-request__form select:focus,.fc-privacy-request__form textarea:focus { border-color:#5ee5e0; outline:2px solid rgba(94,229,224,.18); outline-offset:1px; }
.fc-form-notice { border-radius:12px; font-weight:700; margin-bottom:16px; padding:13px 15px; }
.fc-form-notice--success { background:rgba(52,170,126,.16); border:1px solid rgba(79,211,158,.4); color:#baf4d6; }
.fc-form-notice--error { background:rgba(255,109,93,.13); border:1px solid rgba(255,128,107,.4); color:#ffd0c8; }
@media (max-width:760px) {
    .fc-privacy-policy__summary,.fc-privacy-request__form { grid-template-columns:1fr; }
}
