:root {
    --desk-canvas: #f5f8f5;
    --desk-panel: #ffffff;
    --desk-line: #d4dfdc;
    --desk-member: #51a8b8;
    --desk-board: #e3ad45;
    --desk-admin: #e0653d;
}

main .member-shell,
main .board-shell,
main .admin-shell {
    width: min(82rem, calc(100% - clamp(2rem, 4vw, 3rem)));
    padding-block: clamp(0.75rem, 2vw, 1.5rem) 6rem;
}

.trail-desk {
    --desk-accent: var(--desk-member);
    position: relative;
    display: grid;
    grid-template-columns: minmax(14rem, 1fr) auto;
    grid-template-areas: "identity modes" "tasks tasks";
    gap: 1rem 2rem;
    overflow: hidden;
    padding: 1.45rem 1.6rem 0;
    color: #eef6f4;
    background-color: var(--ridge-deep);
    background-image: linear-gradient(90deg, rgb(7 26 43 / 98%), rgb(9 44 54 / 91%)), url("../images/terrain-lines.svg");
    background-position: center;
    background-size: cover;
    border: 1px solid rgb(255 255 255 / 12%);
    border-radius: 1.1rem;
}

.trail-desk--board { --desk-accent: var(--desk-board); }
.trail-desk--admin { --desk-accent: var(--desk-admin); }

.trail-desk__route {
    position: absolute;
    top: 1.45rem;
    right: 1.6rem;
    display: grid;
    grid-template-columns: 2.8rem 0.7rem 2.8rem;
    align-items: center;
    opacity: 0.72;
}

.trail-desk__route span { height: 1px; background: rgb(255 255 255 / 44%); }
.trail-desk__route i { width: 0.58rem; height: 0.58rem; background: var(--desk-accent); transform: rotate(45deg); }

.trail-desk__identity { grid-area: identity; display: flex; align-items: end; gap: 1rem; min-width: 0; }
.trail-desk__label,
.trail-desk__role {
    display: block;
    color: #a8c2c0;
    font-family: var(--utility);
    font-size: 0.8rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    text-transform: none;
}

.trail-desk__title {
    display: block;
    margin-top: 0.16rem;
    color: white;
    font-family: var(--display);
    font-size: clamp(1.65rem, 3vw, 2.35rem);
    font-weight: 600;
    letter-spacing: -0.025em;
    line-height: 1;
    text-decoration: none;
    text-transform: none;
}

.trail-desk__role { padding-bottom: 0.2rem; color: var(--desk-accent); white-space: nowrap; }

.trail-desk__modes {
    grid-area: modes;
    display: flex;
    align-self: end;
    justify-self: end;
    gap: 0.18rem;
    padding-right: 7.3rem;
}

.trail-desk__modes a {
    padding: 0.45rem 0.66rem;
    color: #b9cfcd;
    font-family: var(--utility);
    font-size: 0.85rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    text-decoration: none;
    text-transform: none;
}

.trail-desk__modes a { border-radius: 0.5rem; min-height: 2.75rem; display: flex; align-items: center; }
.trail-desk__modes a[aria-current="page"] { color: var(--ridge-deep); background: var(--desk-accent); }

.trail-desk__tasks {
    grid-area: tasks;
    display: flex;
    gap: 0;
    min-width: 0;
    overflow-x: auto;
    scrollbar-width: thin;
}

.trail-desk__tasks a {
    position: relative;
    flex: 0 0 auto;
    padding: 0.8rem 0.78rem 0.92rem;
    color: #d4e2df;
    border-top: 1px solid rgb(255 255 255 / 14%);
    font-size: 0.94rem;
    font-weight: 600;
    text-decoration: none;
}

.trail-desk__tasks a::after {
    content: "";
    position: absolute;
    right: 0.78rem;
    bottom: 0;
    left: 0.78rem;
    height: 0.24rem;
    background: var(--desk-accent);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 160ms ease;
}

.trail-desk__tasks a:hover,
.trail-desk__tasks a:focus-visible,
.trail-desk__tasks a[aria-current="page"] { color: white; background: rgb(255 255 255 / 7%); }
.trail-desk__tasks a:hover::after,
.trail-desk__tasks a:focus-visible::after,
.trail-desk__tasks a[aria-current="page"]::after { transform: scaleX(1); }

main .member-hero,
main .board-page-heading,
main .admin-hero,
main .member-page-heading,
main .admin-page-heading {
    padding-top: clamp(3.2rem, 7vw, 6.2rem);
}

main .member-hero h1,
main .member-page-heading h1,
main .board-page-heading h1,
main .admin-hero h1,
main .admin-page-heading h1 {
    max-width: 24ch;
    font-size: clamp(2.3rem, 4.5vw, 4rem);
    font-family: var(--display);
    font-weight: 400;
    letter-spacing: -0.045em;
    line-height: 1.12;
    text-transform: none;
}

main .member-card,
main .board-card,
main .admin-metric-grid a,
main .board-table-wrap,
main .editor-form fieldset,
main .admin-work-card {
    background: var(--desk-panel);
    border-color: var(--desk-line);
    border-radius: 0.65rem;
}

main .member-card,
main .board-card,
main .admin-metric-grid a { border: 1px solid var(--desk-line); }
main .board-card { border-top-color: var(--desk-board); }
main .admin-metric-grid a { border-top-color: var(--desk-admin); }

.member-hero__status {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem 1.2rem;
    max-width: 55rem;
    margin-top: 1.5rem;
    padding: 1rem 0;
    border-block: 1px solid var(--desk-line);
    color: var(--ink-muted);
    font-family: var(--utility);
    font-size: 0.95rem;
}

.member-hero__status strong { color: var(--ridge-deep); }

main .member-dashboard-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
main .member-dashboard-grid .member-card { min-height: 15rem; }
main .member-dashboard-grid .member-card--wide { grid-column: span 2; }

.member-card__signal,
.board-card__flag {
    color: var(--river-current);
    font-family: var(--utility);
    font-size: 0.65rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    text-transform: none;
}

main .member-card strong { align-self: end; }
main .member-card b,
main .board-card b { align-self: end; color: var(--ridge-deep); font-size: 0.84rem; }

main .board-card {
    display: grid;
    grid-template-rows: auto auto 1fr auto;
    min-height: 16rem;
}

.board-card__flag { color: #8b6419 !important; }
main .board-card strong { margin: 1.6rem 0 0.55rem; }
main .board-card b { margin-top: 1.4rem; }

main .admin-metric-grid a { min-height: 12.5rem; }
main .admin-metric-grid strong { color: var(--ridge-deep); font-family: var(--utility); font-size: clamp(2rem, 4vw, 3.6rem); }

@media (max-width: 60rem) {
    .trail-desk { grid-template-columns: 1fr; grid-template-areas: "identity" "modes" "tasks"; }
    .trail-desk__modes { justify-self: start; padding-right: 0; }
    .trail-desk__route { top: 1.25rem; }
    main .member-dashboard-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 38rem) {
    .trail-desk { padding-inline: 1rem; }
    .trail-desk__identity { align-items: flex-start; flex-direction: column; gap: 0.35rem; padding-right: 5rem; }
    .trail-desk__role { white-space: normal; }
    .trail-desk__modes { width: 100%; flex-wrap: wrap; overflow-x: visible; }
    .trail-desk__tasks { margin-inline: -1rem; padding-inline: 0.25rem; }
    main .member-dashboard-grid { grid-template-columns: 1fr; }
    main .member-dashboard-grid .member-card--wide { grid-column: auto; }
}

@media (prefers-reduced-motion: reduce) {
    .trail-desk__tasks a::after { transition: none; }
}

/* Shared portal rhythm: calm headings, useful groupings, and open activity rows. */
.trail-desk__tasks a { font-size: 0.94rem; }
.trail-desk__route { opacity: 0.3; }
main :is(.member-shell, .board-shell, .admin-shell) h2 {
    font-family: var(--display);
    font-weight: 600;
    font-size: clamp(1.4rem, 2.2vw, 1.85rem);
    letter-spacing: -0.025em;
    line-height: 1.25;
}
main :is(.member-shell, .board-shell, .admin-shell) .eyebrow {
    font-size: 0.85rem;
    font-weight: 400;
    letter-spacing: 0;
    text-transform: none;
}
main :is(.member-hero, .member-page-heading, .board-page-heading, .admin-hero, .admin-page-heading) {
    padding-block: clamp(2.5rem, 5vw, 4rem) 2rem;
}
main :is(.member-shell, .board-shell, .admin-shell) :is(input, select, textarea) {
    font: inherit;
    min-height: 2.75rem;
    border-radius: 0.5rem;
    border-color: #9caeaa;
}
main :is(.member-shell, .board-shell, .admin-shell) input:is([type="checkbox"], [type="radio"]) { min-height: auto; }
main :is(.member-shell, .board-shell, .admin-shell) :is(.form-field > span, legend, th) {
    font-family: var(--body);
    font-weight: 600;
    letter-spacing: 0;
    text-transform: none;
}
main .editor-form fieldset { padding: clamp(1rem, 3vw, 2rem); border-radius: 0.85rem; }
main :is(.member-empty, .registration-card, .member-card, .board-card, .admin-work-card) {
    border-radius: 0.85rem;
    box-shadow: none;
}
main .registration-card { border-width: 0 0 1px; border-radius: 0; padding-block: 1.5rem; background: transparent; }
main .board-card { min-height: 13rem; border-top: 1px solid var(--desk-line); padding: 1.65rem; }
main .board-card strong { margin-top: 0.8rem; }
main .admin-metric-grid a { min-height: 11rem; padding: 1.4rem; border-top-color: var(--desk-line); }
main .admin-metric-grid strong { font-family: var(--body); font-size: 2.65rem; font-weight: 400; }
main :is(.board-card, .admin-metric-grid a, .member-account-links a):hover { background: #edf4f1; }
.member-overview { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(15rem, 1fr); gap: clamp(2rem, 6vw, 5rem); }
.member-overview h2 { margin: 0 0 1.5rem; }
.member-outing-list { border-top: 1px solid var(--desk-line); }
.member-outing {
    display: grid;
    grid-template-columns: 3.5rem 1fr auto;
    align-items: center;
    gap: 1.2rem;
    padding: 1.7rem 0.5rem;
    border-bottom: 1px solid var(--desk-line);
    color: var(--ridge-night);
    text-decoration: none;
}
.member-outing:hover { background: #eaf3ef; }
.member-outing__count { font-size: 2.6rem; font-weight: 400; color: #326c65; }
.member-outing strong { display: block; font-weight: 600; font-size: 1.3rem; }
.member-outing span span { display: block; margin-top: 0.25rem; color: var(--ink-muted); font-size: 0.95rem; }
.member-outing__arrow { font-size: 1.5rem; color: #326c65; }
.member-discover { padding-block: 1.2rem; }
.member-discover .text-link { display: inline-block; margin: 0.8rem 1.2rem; }
.member-account { padding-left: clamp(0rem, 3vw, 2rem); border-left: 1px solid var(--desk-line); }
.member-account-links { display: grid; }
.member-account-links a { display: grid; gap: 0.3rem; padding: 1rem 0.7rem; border-radius: 0.5rem; color: var(--ridge-night); text-decoration: none; }
.member-account-links strong { font-weight: 600; }
.member-account-links span { color: var(--ink-muted); font-size: 0.92rem; }
.member-explore { display: flex; align-items: center; justify-content: space-between; gap: 2rem; margin-top: 3.5rem; padding: clamp(1.5rem, 4vw, 2.8rem); border-radius: 1.1rem; background: #e6efea url("../images/terrain-lines.svg") center / cover; }
.member-explore h2 { margin-top: 0; }
.member-explore p { margin-bottom: 0; max-width: 48ch; }
.member-explore .button { flex-shrink: 0; }
.ski-world-teaser {
    position: relative;
    overflow: hidden;
    padding-block: clamp(4rem, 9vw, 8rem);
    color: white;
    background: var(--ridge-night);
}
.ski-world-teaser::before {
    position: absolute;
    inset: 0;
    content: "";
    pointer-events: none;
    background: radial-gradient(circle at 76% 18%, rgb(58 135 126 / 38%), transparent 34%), linear-gradient(115deg, transparent 55%, rgb(255 255 255 / 4%) 55% 56%, transparent 56%);
}
.ski-world-teaser__grid { position: relative; display: grid; grid-template-columns: minmax(17rem, 0.78fr) minmax(24rem, 1.22fr); align-items: center; gap: clamp(2.5rem, 7vw, 7rem); }
.ski-world-teaser__copy { max-width: 38rem; }
.ski-world-teaser .section-kicker { color: #9ed6cd; }
.living-scene-view .ski-world-teaser .section-kicker { color: #9ed6cd; }
.ski-world-teaser__status { display: inline-block; margin: 0 0 1.2rem; padding: 0.45rem 0.75rem; border: 1px solid rgb(255 255 255 / 32%); border-radius: 999px; color: #d9eee9; font-size: 0.82rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.ski-world-teaser h1 { max-width: 9ch; margin: 0; color: white; font-family: var(--display); font-size: clamp(3.4rem, 7vw, 7.2rem); font-weight: 500; line-height: 0.92; letter-spacing: -0.045em; }
.ski-world-teaser__lead { max-width: 35rem; margin: 1.8rem 0 0; color: #d8e7e7; font-size: clamp(1.05rem, 1.7vw, 1.3rem); line-height: 1.65; }
.ski-world-teaser__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.4rem; margin-top: 2rem; }
.ski-world-teaser__actions .text-link { color: white; text-decoration-color: #9ed6cd; }
.ski-world-map { overflow: hidden; border: 1px solid rgb(255 255 255 / 20%); border-radius: 1rem; background: #edf5f2; box-shadow: 0 2rem 5rem rgb(0 0 0 / 32%); transform: rotate(1.5deg); }
.ski-world-map__bar { display: flex; justify-content: space-between; gap: 1rem; padding: 0.85rem 1rem; color: white; background: #163b43; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; }
.ski-world-map svg { display: block; width: 100%; height: auto; background: linear-gradient(145deg, #f5faf8, #dcebe6); }
.ski-world-map__contour { fill: none; stroke: #a8c7bc; stroke-width: 1.6; opacity: 0.7; }
.ski-world-map__ridge { fill: #d4e4df; stroke: #8bb3a6; stroke-width: 2; }
.ski-world-map__run { fill: none; stroke-width: 10; stroke-linecap: round; stroke-dasharray: 2 18; }
.ski-world-map__run--green { stroke: #2f7d55; }
.ski-world-map__run--blue { stroke: #2977a8; }
.ski-world-map__run--black { stroke: #172c31; }
.ski-world-map__lift { fill: none; stroke: #d85f35; stroke-width: 4; }
.ski-world-map__lift-towers { fill: #f5faf8; stroke: #d85f35; stroke-width: 4; }
.ski-world-map__labels { fill: #254c50; font-size: 15px; font-weight: 800; letter-spacing: 0.08em; }
.ski-world-map__legend { display: flex; flex-wrap: wrap; gap: 0.7rem 1.2rem; padding: 0.9rem 1rem; color: #254c50; background: white; font-size: 0.78rem; font-weight: 700; }
.ski-world-map__legend span { display: inline-flex; align-items: center; gap: 0.45rem; }
.ski-world-map__legend i { width: 0.7rem; height: 0.7rem; border-radius: 50%; background: currentColor; }
.ski-world-map__legend .legend-green { color: #2f7d55; }
.ski-world-map__legend .legend-blue { color: #2977a8; }
.ski-world-map__legend .legend-black { color: #172c31; }
.ski-world-map__legend .legend-lift { width: 1rem; height: 0.22rem; border-radius: 0; color: #d85f35; }
.ski-world-notes { display: grid; grid-template-columns: minmax(15rem, 0.75fr) minmax(24rem, 1.25fr); gap: clamp(2rem, 7vw, 7rem); padding-block: clamp(3.5rem, 8vw, 7rem); }
.ski-world-notes h2 { max-width: 11ch; margin-top: 0; font-family: var(--display); font-size: clamp(2.3rem, 5vw, 4.5rem); font-weight: 500; line-height: 1; }
.ski-world-notes__list { border-top: 1px solid var(--desk-line); }
.ski-world-notes__list article { display: grid; grid-template-columns: 3rem minmax(9rem, 0.65fr) 1fr; gap: 1rem; padding: 1.5rem 0; border-bottom: 1px solid var(--desk-line); }
.ski-world-notes__list span { color: var(--trail-blaze); font-size: 0.78rem; font-weight: 800; letter-spacing: 0.08em; }
.ski-world-notes__list h3 { margin: 0; font-size: 1.08rem; }
.ski-world-notes__list p { margin: 0; color: var(--ink-muted); }
@media (max-width: 48rem) {
    .ski-world-teaser__grid, .ski-world-notes { grid-template-columns: 1fr; }
    .ski-world-teaser h1 { font-size: clamp(3.3rem, 16vw, 5.4rem); }
    .ski-world-map { transform: none; }
    .ski-world-notes__list article { grid-template-columns: 2.5rem 1fr; }
    .ski-world-notes__list p { grid-column: 2; }
    .member-overview { grid-template-columns: 1fr; gap: 2.5rem; }
    .member-account { padding-left: 0; border-left: 0; }
    .member-explore { align-items: flex-start; flex-direction: column; }
    .member-outing { grid-template-columns: 2.5rem 1fr auto; gap: 0.8rem; }
    .trail-desk__tasks { flex-wrap: wrap; overflow: visible; padding-bottom: 0.5rem; }
    .trail-desk__tasks a { padding: 0.7rem; border-top: 0; }
}
