/* FCN 教學 (/fcn-guide): the three animated lessons drawn in WebGL by js/usmarket_fcn_guide_live.js.
   Without WebGL or JavaScript each stage shows its description, and the default scenario's steps and result. */

.fcn-guide-lessons {
    gap: 16px;
}

.fcn-guide-lessons__terms {
    margin: -4px 0 2px;
    color: var(--ds-muted);
    font-size: 13px;
    line-height: 1.55;
}

.fcn-guide-lesson {
    --guide-paper: var(--ds-surface);
    display: grid;
    grid-template-columns: minmax(250px, 330px) minmax(0, 1fr);
    grid-template-rows: auto auto 1fr auto auto;
    grid-template-areas:
        "head stage"
        "controls stage"
        "story stage"
        "take take"
        "caption caption";
    gap: 0 26px;
    padding: 20px;
    border: 1px solid var(--ds-border);
    border-radius: var(--ds-radius-md);
    background: var(--guide-paper);
    color: var(--ds-on-surface);
    font-variant-numeric: tabular-nums;
}

/* scenario lists and cards set display, so `hidden` needs restating */
.fcn-guide-lesson [hidden] {
    display: none;
}

.fcn-guide-lesson__head {
    grid-area: head;
    min-width: 0;
}

.fcn-guide-lesson__kicker {
    color: var(--ds-muted);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.04em;
}

.fcn-guide-lesson__head h3 {
    margin: 4px 0 0;
    color: var(--ds-on-surface);
    font-size: 21px;
    font-weight: 700;
    line-height: 1.3;
}

.fcn-guide-lesson__head p {
    margin: 8px 0 0;
    color: var(--ds-muted);
    font-size: 14px;
    line-height: 1.6;
}

/* ---- the stage ---- */
.fcn-guide-lesson__stage {
    grid-area: stage;
    position: relative;
    min-width: 0;
    aspect-ratio: 16 / 10;
    overflow: hidden;
    border-radius: 10px;
    background:
        radial-gradient(120% 90% at 30% 20%, color-mix(in srgb, var(--ds-primary) 5%, transparent), transparent 70%),
        color-mix(in srgb, var(--ds-surface-2) 55%, var(--guide-paper));
}

.fcn-guide-lesson__canvas {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    display: block;
}

.fcn-guide-lesson__fallback {
    position: absolute;
    inset: auto 16px 16px;
    margin: 0;
    color: var(--ds-muted);
    font-size: 13px;
    line-height: 1.55;
}

/* what the line is: the basket's weakest stock, so a single line is not read as one stock */
.fcn-guide-lesson__legend {
    position: absolute;
    top: 10px;
    left: 10px;
    max-width: calc(100% - 20px);
    margin: 0;
    padding: 4px 9px;
    border: 1px solid var(--ds-border);
    border-radius: var(--ds-radius-full);
    background: color-mix(in srgb, var(--guide-paper) 88%, transparent);
    color: var(--ds-on-surface);
    font-size: 12px;
    font-weight: 600;
    line-height: 1.4;
    pointer-events: none;
}

.fcn-guide-lesson[data-guide-state="live"] .fcn-guide-lesson__fallback {
    display: none;
}

.fcn-guide-lesson__labels {
    position: absolute;
    inset: 0;
    pointer-events: none;
}

.fcn-guide-lesson__label {
    position: absolute;
    top: 0;
    left: 0;
    padding: 2px 6px;
    border-radius: 6px;
    background: color-mix(in srgb, var(--guide-paper) 84%, transparent);
    color: var(--ds-muted);
    font-size: 12px;
    font-weight: 600;
    line-height: 1.35;
    white-space: nowrap;
    will-change: transform, opacity;
}

.fcn-guide-lesson__label.is-ko,
.fcn-guide-lesson__label.is-exit {
    color: var(--ds-risk-low);
}

.fcn-guide-lesson__label.is-ki {
    color: var(--ds-risk-high);
}

.fcn-guide-lesson__label.is-strike,
.fcn-guide-lesson__label.is-price,
.fcn-guide-lesson__label.is-worst {
    color: var(--ds-primary);
}

.fcn-guide-lesson__label.is-time {
    background: transparent;
    font-weight: 500;
}

/* the sweep's day sits over the paths, so it keeps a backing */
.fcn-guide-lesson__label.is-time.is-sweep {
    background: color-mix(in srgb, var(--guide-paper) 84%, transparent);
}

.fcn-guide-lesson__label.is-price,
.fcn-guide-lesson__label.is-worst,
.fcn-guide-lesson__label.is-stack {
    font-weight: 700;
}

.fcn-guide-lesson__label.is-stack {
    color: var(--ds-on-surface);
}

.fcn-guide-lesson__label.is-callout {
    padding: 4px 9px;
    border: 1px solid currentColor;
    background: color-mix(in srgb, var(--guide-paper) 92%, transparent);
    font-size: 13px;
    font-weight: 700;
}

/* ---- controls ---- */
.fcn-guide-lesson__controls {
    grid-area: controls;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-top: 16px;
}

.fcn-guide-lesson__scenarios {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 4px;
    padding: 3px;
    border: 1px solid var(--ds-border);
    border-radius: var(--ds-radius-full);
    background: var(--ds-surface-2);
}

.fcn-guide-lesson__scenarios button,
.fcn-guide-lesson__replay {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    min-height: 34px;
    padding: 0 14px;
    border: 0;
    border-radius: var(--ds-radius-full);
    background: transparent;
    color: var(--ds-on-surface);
    font: inherit;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 0.16s ease, color 0.16s ease;
}

.fcn-guide-lesson__scenarios button[aria-pressed="true"] {
    background: var(--ds-primary);
    color: var(--ds-on-primary);
}

.fcn-guide-lesson__scenarios button:not([aria-pressed="true"]):hover {
    background: color-mix(in srgb, var(--ds-primary) 9%, transparent);
}

.fcn-guide-lesson__replay {
    border: 1px solid var(--ds-border);
    color: var(--ds-muted);
}

.fcn-guide-lesson__replay:hover {
    color: var(--ds-on-surface);
}

.fcn-guide-lesson__scenarios button:focus-visible,
.fcn-guide-lesson__replay:focus-visible {
    outline: 2px solid var(--ds-focus-ring, var(--ds-interactive));
    outline-offset: 2px;
}

@media (pointer: coarse) {
    .fcn-guide-lesson__scenarios button,
    .fcn-guide-lesson__replay {
        min-height: 44px;
    }
}

/* ---- the story: steps, tallies, result ---- */
.fcn-guide-lesson__story {
    grid-area: story;
    display: grid;
    align-content: start;
    gap: 14px;
    min-width: 0;
    margin-top: 16px;
}

.fcn-guide-lesson__steps {
    display: grid;
    gap: 2px;
    margin: 0;
    padding: 0;
    list-style: none;
    counter-reset: guide-step;
}

.fcn-guide-lesson__steps li {
    position: relative;
    padding: 6px 0 6px 30px;
    color: var(--ds-muted);
    font-size: 14px;
    line-height: 1.5;
    counter-increment: guide-step;
    transition: color 0.2s ease;
}

.fcn-guide-lesson__steps li::before {
    content: counter(guide-step);
    position: absolute;
    top: 7px;
    left: 0;
    display: grid;
    place-items: center;
    width: 20px;
    height: 20px;
    border: 1px solid var(--ds-border);
    border-radius: 50%;
    background: var(--guide-paper);
    color: var(--ds-muted);
    font-size: 11px;
    font-weight: 700;
    transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.fcn-guide-lesson__steps li.is-current {
    color: var(--ds-on-surface);
    font-weight: 600;
}

.fcn-guide-lesson__steps li.is-current::before {
    border-color: var(--ds-primary);
    background: var(--ds-primary);
    color: var(--ds-on-primary);
}

.fcn-guide-lesson__steps li.is-done::before {
    border-color: color-mix(in srgb, var(--ds-primary) 45%, var(--ds-border));
    color: var(--ds-primary);
}

.fcn-guide-lesson__tally-title {
    margin: 4px 0 -6px;
    color: var(--ds-muted);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.02em;
}

.fcn-guide-lesson__tally {
    display: grid;
    gap: 8px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.fcn-guide-lesson__tally li {
    display: grid;
    gap: 4px;
    --row: var(--ds-muted);
}

.fcn-guide-lesson__tally li.is-exit {
    --row: var(--ds-risk-low);
}

.fcn-guide-lesson__tally li.is-conv {
    --row: var(--ds-risk-high);
}

.fcn-guide-lesson__tally div {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    font-size: 13px;
}

.fcn-guide-lesson__tally strong {
    color: var(--row);
    font-size: 15px;
}

.fcn-guide-lesson__tally i {
    display: block;
    height: 6px;
    overflow: hidden;
    border-radius: 3px;
    background: var(--ds-surface-2);
}

.fcn-guide-lesson__tally b {
    display: block;
    height: 100%;
    background: var(--row);
    transform-origin: left center;
}

.fcn-guide-lesson__tally small {
    color: var(--ds-muted);
    font-size: 12px;
}

.fcn-guide-lesson__result {
    padding: 12px 14px;
    border: 1px solid var(--ds-border);
    border-radius: 10px;
    background: var(--ds-surface-2);
    opacity: 0.38;
    transition: opacity 0.35s ease;
}

.fcn-guide-lesson__result.is-shown,
.fcn-guide-lesson:not([data-guide-state="live"]) .fcn-guide-lesson__result {
    opacity: 1;
}

.fcn-guide-lesson__result dl {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 8px;
    margin: 0;
}

.fcn-guide-lesson__result dl div {
    min-width: 0;
}

.fcn-guide-lesson__result dt {
    color: var(--ds-muted);
    font-size: 12px;
}

.fcn-guide-lesson__result dd {
    margin: 2px 0 0;
    color: var(--ds-on-surface);
    font-size: 17px;
    font-weight: 700;
}

.fcn-guide-lesson__result dl div:last-child dd {
    color: var(--ds-primary);
}

.fcn-guide-lesson__result p {
    margin: 8px 0 0;
    color: var(--ds-muted);
    font-size: 13px;
    line-height: 1.55;
}

.fcn-guide-lesson__result dl + p {
    margin-top: 10px;
}

.fcn-guide-lesson__takeaway {
    grid-area: take;
    margin: 16px 0 0;
    padding-top: 14px;
    border-top: 1px solid var(--ds-border);
    color: var(--ds-on-surface);
    font-size: 15px;
    font-weight: 600;
    line-height: 1.55;
}

.fcn-guide-lesson__caption {
    grid-area: caption;
    margin: 6px 0 0;
    color: var(--ds-muted);
    font-size: 12px;
    line-height: 1.55;
}

/* ---- phones and narrow tablets: one column, the stage under the title ---- */
@media (max-width: 860px) {
    .fcn-guide-lesson {
        grid-template-columns: minmax(0, 1fr);
        grid-template-rows: none;
        grid-template-areas:
            "head"
            "stage"
            "controls"
            "story"
            "take"
            "caption";
        padding: 16px;
    }

    .fcn-guide-lesson__stage {
        margin-top: 14px;
        aspect-ratio: 4 / 3.3;
    }
}

@media (max-width: 480px) {
    .fcn-guide-lesson {
        padding: 14px 12px;
    }

    .fcn-guide-lesson__head h3 {
        font-size: 19px;
    }

    .fcn-guide-lesson__stage {
        margin-inline: -4px;
        aspect-ratio: 4 / 3.4;
    }

    .fcn-guide-lesson__label {
        font-size: 11px;
    }

    .fcn-guide-lesson__label.is-callout {
        font-size: 12px;
    }

    .fcn-guide-lesson__result dl {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (prefers-reduced-motion: reduce) {
    .fcn-guide-lesson__steps li,
    .fcn-guide-lesson__steps li::before,
    .fcn-guide-lesson__result,
    .fcn-guide-lesson__scenarios button {
        transition: none;
    }
}
