/* =========================================================
   AIVELLE · THE EDITORIAL VIEW
   The Distance Between Dressed and Distinctive
========================================================= */

.editorial-view-page {
    --view-paper: #f5f1e8;
    --view-ink: #111111;
    --view-soft-ink: #4e4a45;

    --pastel-blue: #cbdbe6;
    --pastel-sage: #d7dfcf;
    --pastel-blush: #ead4d5;
    --pastel-lilac: #ddd4e7;
    --pastel-ivory: #f3ead7;
    --pastel-yellow: #f1e6ad;
    --pastel-orange: #edd0b2;
    --pastel-green: #cfe0c9;
    --pastel-purple: #d8cce7;

    --aivelle-gold: #c8a25a;
}


/* =========================================================
   Image placeholders
========================================================= */

.image-placeholder {
    position: relative;
    overflow: hidden;

    background:
        linear-gradient(
            145deg,
            rgba(255,255,255,.06),
            transparent 35%
        ),
        linear-gradient(
            135deg,
            #2e2e2e,
            #111111 55%,
            #090909
        );

    border: 1px solid rgba(255,255,255,.08);
}

.image-placeholder::before {
    content: "";

    position: absolute;
    inset: 0;

    background:
        linear-gradient(
            120deg,
            transparent 0 44%,
            rgba(255,255,255,.04) 44.2% 44.5%,
            transparent 44.8%
        ),
        linear-gradient(
            30deg,
            transparent 0 62%,
            rgba(200,162,90,.12) 62.2% 62.7%,
            transparent 63%
        );
}

.placeholder-label {
    position: absolute;
    left: 24px;
    bottom: 22px;
    z-index: 2;

    max-width: 72%;

    color: rgba(255,255,255,.54);

    text-transform: uppercase;
    letter-spacing: .14em;
    font-size: 9px;
    line-height: 1.55;
}

.placeholder-landscape {
    aspect-ratio: 4 / 3;
}

.placeholder-portrait {
    aspect-ratio: 3 / 4;
}

.placeholder-tall {
    aspect-ratio: 2 / 3;
}

.placeholder-detail {
    aspect-ratio: 4 / 5;
}

.placeholder-small-landscape {
    aspect-ratio: 4 / 3;
}

.placeholder-cinema {
    aspect-ratio: 21 / 10;
}


/* =========================================================
   Shared editorial typography
========================================================= */

.view-kicker,
.view-index,
.view-section-number,
.view-section-label,
.view-eyebrow,
.palette-label,
.view-observation-label {
    text-transform: uppercase;
    letter-spacing: .18em;
    font-size: 10px;
    line-height: 1.4;
}

.view-kicker {
    margin: 0 0 14px;
    color: var(--aivelle-gold);
}

.view-section-number {
    margin: 0 0 18px;
    color: var(--aivelle-gold);
}


/* =========================================================
   Hero
========================================================= */

.view-hero {
    padding:
        calc(var(--header-height) + 54px)
        var(--page-gutter)
        clamp(80px, 10vw, 150px);

    background: var(--black);
}

.view-hero-grid {
    width: min(100%, 1600px);
    margin: 0 auto;

    display: grid;
    grid-template-columns: 1.08fr .92fr;
    gap: clamp(42px, 7vw, 120px);

    align-items: start;
}

.view-hero-copy {
    padding-bottom: clamp(10px, 4vw, 60px);
}

.view-index {
    margin: 0 0 44px;
    color: #77746f;
}

.view-hero h1 {
    margin: 0;
    max-width: 770px;

    font-size: clamp(58px, 7.1vw, 124px);
    font-weight: 400;
    letter-spacing: -.06em;
    line-height: .87;
}

.view-hero h1 span {
    display: block;
    color: var(--pastel-blue);
}

.view-standfirst {
    max-width: 620px;
    margin: 42px 0 0;

    color: var(--paper);

    font-size: clamp(20px, 2vw, 31px);
    line-height: 1.35;
}

.view-byline {
    max-width: 620px;
    margin: 26px 0 0;

    color: var(--muted);

    font-size: 13px;
    line-height: 1.7;
}

.view-scroll-link {
    display: inline-flex;
    align-items: center;
    gap: 18px;

    margin-top: 40px;

    color: var(--paper);

    text-transform: uppercase;
    letter-spacing: .18em;
    font-size: 10px;
}

.view-scroll-link span {
    color: var(--aivelle-gold);
    font-size: 18px;

    transition: transform .35s var(--ease);
}

.view-scroll-link:hover span,
.view-scroll-link:focus-visible span {
    transform: translateY(5px);
}


/* =========================================================
   Core article grid
========================================================= */

.view-opening,
.view-section {
    padding:
        clamp(100px, 12vw, 180px)
        var(--page-gutter);
}

.view-reading-grid {
    width: min(100%, 1500px);
    margin: 0 auto;

    display: grid;
    grid-template-columns:
        110px
        minmax(0, .9fr)
        minmax(420px, 1.1fr);

    gap: clamp(30px, 5vw, 84px);

    align-items: start;
}

.view-section-label {
    color: var(--aivelle-gold);
}

.view-section-label span {
    display: block;

    font-size: 28px;
    letter-spacing: -.02em;
}

.view-section-label p {
    margin: 8px 0 0;
}


/* =========================================================
   Dressed
========================================================= */

.view-opening {
    background: #0a0a0a;
}

.view-opening-copy {
    grid-column: 2 / -1;
    max-width: 1040px;
}

.view-opening-copy h2,
.view-section-copy h2,
.view-split-copy h2,
.restraint-copy h2,
.palette-heading h2,
.trace-heading h2,
.aivelle-edit-heading h2 {
    margin: 0;

    font-size: clamp(42px, 5.6vw, 88px);
    font-weight: 400;
    letter-spacing: -.05em;
    line-height: .96;
}

.view-opening-copy p,
.view-section-copy p,
.view-split-copy p,
.restraint-copy p,
.restraint-follow-copy p,
.palette-copy p,
.view-full-copy p,
.aivelle-edit-copy p,
.closing-prose p {
    color: var(--mist);

    font-size: clamp(16px, 1.4vw, 20px);
    line-height: 1.8;
}

.view-opening-copy .view-lead {
    margin-top: 38px;

    color: var(--paper);

    font-size: clamp(22px, 2.2vw, 34px);
    line-height: 1.45;
}

.view-opening-copy blockquote {
    max-width: 900px;
    margin: clamp(50px, 7vw, 90px) 0;
    padding-left: 26px;

    border-left: 2px solid var(--aivelle-gold);

    color: var(--white);

    font-size: clamp(30px, 3.7vw, 58px);
    line-height: 1.12;
    letter-spacing: -.035em;
}


/* =========================================================
   Light editorial sections
========================================================= */

.view-paper {
    background: var(--view-paper);
    color: var(--view-ink);
}

.view-paper .view-section-label,
.view-paper .view-section-number {
    color: #806f58;
}

.view-paper .view-section-copy p,
.view-paper .view-split-copy p {
    color: var(--view-soft-ink);
}

.view-section-copy {
    max-width: 760px;
}

.view-section-copy h2 {
    color: var(--view-ink);
}

.view-eyebrow {
    margin: 0 0 16px;
}

.pastel-blue {
    color: #678195;
}

/* =========================================================
   Line section layout
========================================================= */

.line-copy-column {
    grid-column: 2;
    grid-row: 1;

    min-width: 0;
}

.line-copy-column .view-section-copy {
    width: 100%;
    max-width: 760px;
}

#line .view-observation {
    grid-column: auto;
    grid-row: auto;

    width: 100%;
    max-width: 760px;

    margin-top: 28px;
}




/* =========================================================
   Annotated image
========================================================= */

/* Image remains independently on the right */

.annotated-image {
    position: relative;
    overflow: hidden;

    grid-column: 3;
    grid-row: 1;

    min-height: 720px;
}

.annotated-image img {
    display: block;

    width: 100%;
    height: 100%;

    object-fit: cover;
    object-position: center;

    position: relative;
    z-index: 1;
}

.annotation {
    position: absolute;
    z-index: 5;

    padding: 7px 10px;

    background: rgba(245,241,232,.92);
    color: #111111;

    border-left: 2px solid var(--pastel-blue);

    text-transform: uppercase;
    letter-spacing: .13em;
    font-size: 8px;
}

.annotation-a {
    left: 7%;
    top: 18%;
}

.annotation-b {
    right: 6%;
    top: 34%;
}

.annotation-c {
    left: 10%;
    bottom: 16%;
}


/* =========================================================
   AIVELLE Observations
   Shared typography and spacing for every observation panel
========================================================= */

.view-observation {
    grid-column: 2;
    margin-top: 50px;
    padding: 34px;
    border-radius: 2px;
}

.view-observation .view-observation-label {
    margin: 0 0 13px;
    font-size: 10px;
    line-height: 1.4;
    letter-spacing: .18em;
    text-transform: uppercase;
}

.view-observation h3 {
    margin: 0;
    font-size: clamp(25px, 2.2vw, 36px);
    font-weight: 400;
    line-height: 1.2;
    letter-spacing: -.025em;
}

.view-observation p {
    margin: 18px 0 0;
    font-size: 16px;
    line-height: 1.7;
}

.view-observation p strong {
    font-size: inherit;
    line-height: inherit;
    font-weight: 500;
}


/* Observation 01 — Powder Blue */

.pastel-panel-blue {
    background: #dfe9ef;
    color: #26323a;
}

.pastel-panel-blue .view-observation-label {
    color: #5c7483;
}

.pastel-panel-blue h3,
.pastel-panel-blue strong {
    color: #26323a;
}

.pastel-panel-blue p {
    color: #46545d;
}


/* Observation 02 — Dust Blush */

.pastel-panel-blush {
    background: var(--pastel-blush);
    color: #4d3639;
}

.pastel-panel-blush .view-observation-label {
    color: #8a6268;
}

.pastel-panel-blush h3,
.pastel-panel-blush strong {
    color: #3f2e31;
}

.pastel-panel-blush p {
    color: #60494d;
}


/* Observation 03 option — Soft Yellow */

.pastel-panel-yellow {
    background: var(--pastel-yellow);
    color: #51491e;
}

.pastel-panel-yellow .view-observation-label {
    color: #83762f;
}

.pastel-panel-yellow h3,
.pastel-panel-yellow strong {
    color: #403918;
}

.pastel-panel-yellow p {
    color: #625928;
}


/* Observation 03 / 04 option — Soft Orange */

.pastel-panel-orange {
    background: var(--pastel-orange);
    color: #5a3f2d;
}

.pastel-panel-orange .view-observation-label {
    color: #8b674b;
}

.pastel-panel-orange h3,
.pastel-panel-orange strong {
    color: #493223;
}

.pastel-panel-orange p {
    color: #6a4c37;
}


/* Observation 03 / 04 option — Pale Green */

.pastel-panel-green {
    background: var(--pastel-green);
    color: #344733;
}

.pastel-panel-green .view-observation-label {
    color: #627a60;
}

.pastel-panel-green h3,
.pastel-panel-green strong {
    color: #293b28;
}

.pastel-panel-green p {
    color: #465f44;
}


/* Observation 03 / 04 option — Soft Purple */

.pastel-panel-purple {
    background: var(--pastel-purple);
    color: #463951;
}

.pastel-panel-purple .view-observation-label {
    color: #766287;
}

.pastel-panel-purple h3,
.pastel-panel-purple strong {
    color: #382d42;
}

.pastel-panel-purple p {
    color: #564664;
}


/* Observation panels inside split-copy layouts */

.view-split-copy .view-observation {
    grid-column: auto;
    width: 100%;
    margin-top: 48px;
}


/* =========================================================
   Rhythm
========================================================= */

.view-dark {
    background: #080808;
}

.view-wide-heading {
    width: min(100%, 1500px);
    margin: 0 auto clamp(60px, 8vw, 110px);

    display: grid;
    grid-template-columns: 1.2fr .8fr;
    gap: clamp(40px, 7vw, 120px);

    align-items: start;
}

.view-wide-heading h2 {
    margin: 0;
    max-width: 900px;

    font-size: clamp(52px, 6.2vw, 100px);
    font-weight: 400;
    letter-spacing: -.055em;
    line-height: .92;
}

.view-wide-heading > p {

    margin-top: 54px;
    color: var(--mist);

    font-size: 17px;
    line-height: 1.75;
}

.detail-triptych {
    width: min(100%, 1500px);
    margin: 0 auto;

    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: clamp(16px, 2vw, 30px);
}

.view-full-copy {
    width: min(100%, 1100px);
    margin: clamp(48px, 6vw, 90px) auto 0;
}

#rhythm .view-full-copy {
    width: 100%;
    margin: clamp(48px, 6vw, 90px) 0 0;

    text-align: left;
}

#rhythm .view-full-copy > p {
    max-width: 980px;
    margin: 0;

    text-align: left;
}

.rhythm-list {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 38px;
}

#rhythm .rhythm-list {
    width: 100%;
    justify-content: flex-start;
    margin-top: 18px;
}

.rhythm-list span {
    padding: 10px 14px;

    border: 1px solid #2c2c2c;

    color: var(--paper);

    font-size: 10px;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.rhythm-list span:nth-child(1) {
    border-color: var(--pastel-blue);
}

.rhythm-list span:nth-child(2) {
    border-color: var(--pastel-sage);
}

.rhythm-list span:nth-child(3) {
    border-color: var(--pastel-blush);
}

.rhythm-list span:nth-child(4) {
    border-color: var(--pastel-lilac);
}

.rhythm-list span:nth-child(5) {
    border-color: var(--aivelle-gold);
}

/* =========================================================
   Rhythm detail imagery
========================================================= */

.rhythm-detail {
    margin: 0;
    min-width: 0;
}

.rhythm-detail-image {
    position: relative;
    overflow: hidden;

    width: 100%;
    aspect-ratio: 4 / 5;

    background: #111111;
}

.rhythm-detail-image img {
    display: block;

    width: 100%;
    height: 100%;

    object-fit: cover;
}


/* ---------------------------------------------------------
   Detail 01
   Crop tightly around wrist / cuff / watch
--------------------------------------------------------- */

.rhythm-detail-wrist .rhythm-detail-image img {
    transform: scale(2.05);

    transform-origin: 42% 70%;

    object-position: 42% 70%;
}


/* ---------------------------------------------------------
   Detail 02
   Same source image, cropped around collar / neckline
--------------------------------------------------------- */

.rhythm-detail-collar .rhythm-detail-image img {
    transform: scale(1.95);

    transform-origin: 32% 0%;

    object-position: 52% 22%;
}


/* ---------------------------------------------------------
   Detail captions
--------------------------------------------------------- */

.rhythm-detail figcaption {
    margin-top: 14px;

    color: #777777;

    font-size: 9px;
    line-height: 1.5;
    letter-spacing: .14em;

    text-transform: uppercase;
}

/* =========================================================
   Interruption
========================================================= */

.view-split-layout {
    width: min(100%, 1450px);
    margin: 0 auto;

    display: grid;
    grid-template-columns:
        minmax(0, 1.02fr)
        minmax(0, .98fr);

    gap: clamp(44px, 7vw, 110px);

    align-items: start;
}


/* ---------------------------------------------------------
   Interruption image
   Top aligns with "Perfection..."
--------------------------------------------------------- */

.interruption-image {
    position: relative;
    overflow: hidden;

    width: 100%;
    margin: 0;

    aspect-ratio: 5 / 8;

    align-self: start;

    background: #111111;
}

.interruption-image img {
    display: block;

    width: 100%;
    height: 100%;

    object-fit: cover;
    object-position: center;

    position: relative;
    z-index: 1;
}


/* ---------------------------------------------------------
   Annotation over image
--------------------------------------------------------- */

.interruption-marker {
    position: absolute;

    left: 10%;
    right: auto;
    top: 78%;

    z-index: 5;

    display: flex;
    flex-direction: row-reverse;
    align-items: center;
    gap: 14px;

    color: var(--white);

    font-size: 8px;
    letter-spacing: .14em;
    text-transform: uppercase;

    pointer-events: none;
}


.interruption-marker span {
    display: block;

    width: 70px;
    height: 1px;

    background: var(--pastel-blush);
}

.interruption-marker p {
    margin: 0;
    padding: 8px 11px;

    background: rgba(245, 241, 232, .94);
    color: #111111;

    border-left: 2px solid var(--pastel-blush);

    line-height: 1.45;
}

.interruption-marker small {
    color: #6f6663;

    font-size: 7px;
    line-height: 1.5;
}


/* ---------------------------------------------------------
   Interruption copy
--------------------------------------------------------- */

#interruption .view-split-copy {
    align-self: start;
}

#interruption .view-split-copy h2 {
    margin-top: 0;
}

.dark-number {
    color: #806f58;
}

.view-split-copy h2 {
    color: var(--view-ink);
}



/* =========================================================
   Restraint
========================================================= */

.restraint-section {
    display: block;

    background: #fbfaf6;
    color: #111111;
}


/* ---------------------------------------------------------
   Main restraint composition
   Copy left · image right
--------------------------------------------------------- */

.restraint-layout {
    width: 100%;

    display: grid;
    grid-template-columns:
        minmax(0, .95fr)
        minmax(420px, 1.05fr);

    column-gap: clamp(60px, 8vw, 130px);
    row-gap: clamp(34px, 4vw, 58px);

    align-items: start;
}


/* ---------------------------------------------------------
   Main copy
--------------------------------------------------------- */

.restraint-copy {
    width: 100%;
    max-width: 760px;

    margin: 0;
    padding: 0;
}

.restraint-copy h2 {
    margin: 0;

    color: #111111;

    font-size: clamp(42px, 5.6vw, 88px);
    font-weight: 400;
    letter-spacing: -.05em;
    line-height: .96;
}

.restraint-copy p {
    color: #514d48;
}

.restraint-question {
    margin-top: 42px;

    color: #514d48;

    font-size: clamp(22px, 2.3vw, 34px) !important;
    line-height: 1.5 !important;
}

.restraint-question strong {
    color: #3f3b37;
}


/* ---------------------------------------------------------
   Image
   Top aligned with main heading
--------------------------------------------------------- */

.restraint-image {
    width: 100%;
    max-width: 680px;

    margin: 0;

    justify-self: end;
    align-self: start;
}

.restraint-image-frame {
    position: relative;
    overflow: hidden;

    width: 100%;
    aspect-ratio: 1 / 0.92;

    background: #111111;
}

.restraint-image-frame img {
    display: block;

    width: 100%;
    height: 100%;

    object-fit: cover;
    object-position: center;
}


/* ---------------------------------------------------------
   Image caption
--------------------------------------------------------- */

.restraint-image figcaption {
    margin-top: 13px;

    color: #817a72;

    font-size: 9px;
    line-height: 1.5;
    letter-spacing: .14em;

    text-transform: uppercase;
}


/* ---------------------------------------------------------
   Lower composition
   Edit table left · closing thought right
--------------------------------------------------------- */

.editor-markup {
    grid-column: 1;

    width: 100%;
    margin: 0;
    padding: 32px 0;

    border-top: 1px solid rgba(17,17,17,.15);
    border-bottom: 1px solid rgba(17,17,17,.15);
}

.editor-markup div {
    display: grid;
    grid-template-columns: 120px 1fr;
    gap: 30px;

    padding: 13px 0;
}

.editor-markup span {
    color: #8a8073;

    font-size: 10px;
    letter-spacing: .16em;
    text-transform: uppercase;
}

.editor-markup del {
    color: #a48282;
}

.editor-markup strong {
    color: #111111;
}


/* ---------------------------------------------------------
   Closing restraint thought
--------------------------------------------------------- */

.restraint-follow-copy {
    grid-column: 2;

    width: 100%;
    max-width: 560px;

    margin: 0;

    align-self: center;
    justify-self: start;
}

.restraint-follow-copy p {
    margin: 0;

    color: #514d48;

    font-size: clamp(18px, 1.55vw, 22px);
    line-height: 1.7;
}

/* =========================================================
   Colour study
========================================================= */

.palette-section {
    background: #efeae1;
    color: #111111;

    padding:
        clamp(80px, 8vw, 120px)
        var(--page-gutter);
}


/* ---------------------------------------------------------
   Heading
--------------------------------------------------------- */

.palette-heading {
    width: min(100%, 1400px);
    margin: 0 auto clamp(42px, 5vw, 70px);
}

.palette-heading .view-section-number {
    margin: 0 0 18px;

    color: #b18f53;

    font-size: 13px;
    line-height: 1.4;
    letter-spacing: .18em;
}

.palette-heading h2 {
    max-width: 1250px;
    margin: 0;

    color: #111111;

    font-size: clamp(46px, 6vw, 92px);
    font-weight: 400;
    line-height: .96;
    letter-spacing: -.05em;
}


/* ---------------------------------------------------------
   Main composition
   Copy left · image right
--------------------------------------------------------- */

.palette-layout {
    width: min(100%, 1400px);
    margin: 0 auto;

    display: grid;
    grid-template-columns:
        minmax(0, .9fr)
        minmax(420px, 1.1fr);

    gap: clamp(50px, 7vw, 110px);

    align-items: start;
}


/* ---------------------------------------------------------
   Copy
--------------------------------------------------------- */

.palette-copy {
    align-self: start;
}

.palette-copy p {
    max-width: 620px;
    margin: 0 0 22px;

    color: #514d48;

    font-size: clamp(16px, 1.35vw, 19px);
    line-height: 1.75;
}


/* =========================================================
   Colour study
========================================================= */

.palette-section {
    background: #efeae1;
    color: #111111;

    padding:
        clamp(80px, 8vw, 120px)
        var(--page-gutter);
}


/* Main magazine spread */

.palette-layout {
    width: min(100%, 1400px);
    margin: 0 auto;

    display: grid;
    grid-template-columns:
        minmax(0, 1fr)
        minmax(420px, .9fr);

    gap: clamp(60px, 7vw, 110px);

    align-items: start;
}


/* Left side */

.palette-left {
    min-width: 0;
}

.palette-heading {
    width: 100%;
    margin: 0;
}

.palette-heading .view-section-number {
    margin: 0 0 20px;

    color: #b18f53;

    font-size: 13px;
    line-height: 1.4;
    letter-spacing: .18em;
}

.palette-heading h2 {
    max-width: 760px;
    margin: 0;

    color: #111111;

    font-size: clamp(46px, 4.9vw, 78px);
    font-weight: 400;
    line-height: .96;
    letter-spacing: -.05em;
}

.palette-copy {
    width: 100%;
    margin-top: 42px;
}

.palette-copy p {
    max-width: 620px;
    margin: 0 0 22px;

    color: #514d48;

    font-size: clamp(16px, 1.35vw, 19px);
    line-height: 1.75;
}


/* Image */

.palette-image {
    width: 100%;
    max-width: 620px;

    margin-top: 38px;

    justify-self: end;
    align-self: start;
}

.palette-image.placeholder-portrait {
    aspect-ratio: 5 / 8;
}

/* ---------------------------------------------------------
   Palette groups
--------------------------------------------------------- */

.palette-groups {
    display: grid;
    gap: 34px;

    margin-top: 38px;
}

.palette-label {
    margin: 0 0 14px;

    color: #7a7065;

    font-size: 10px;
    line-height: 1.4;
    letter-spacing: .18em;
    text-transform: uppercase;
}

.swatches {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px 22px;
}

.swatch {
    display: flex;
    align-items: center;
    gap: 11px;

    color: #4b4742;

    font-size: 11px;
    line-height: 1.4;
}

.swatch i {
    flex: 0 0 auto;

    display: inline-block;

    width: 30px;
    height: 30px;

    border: 1px solid rgba(17,17,17,.15);
}


/* Base colours */

.swatch-ink i {
    background: #101010;
}

.swatch-bone i {
    background: #eee8dc;
}

.swatch-charcoal i {
    background: #4b4b4b;
}

.swatch-white i {
    background: #ffffff;
}


/* Trace colours */

.swatch-blush i {
    background: var(--pastel-blush);
}

.swatch-sage i {
    background: var(--pastel-sage);
}

.swatch-blue i {
    background: var(--pastel-blue);
}

.swatch-lilac i {
    background: var(--pastel-lilac);
}

.swatch-gold i {
    background: var(--aivelle-gold);
}

.swatch-orange i {
    background: var(--pastel-orange);
}


/* =========================================================
   Trace
========================================================= */

.trace-heading {
    width: 100%;
    margin: 0 0 80px;
}

.trace-heading h2 {
    max-width: 1200px;
}


/* ---------------------------------------------------------
   Image pair
--------------------------------------------------------- */

.trace-pair {
    width: 100%;
    margin: 0;

    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));

    gap: clamp(24px, 4vw, 70px);
}

.trace-card {
    min-width: 0;
    margin: 0;
}

.trace-image {
    position: relative;
    overflow: hidden;

    width: 100%;
    aspect-ratio: 3 / 4;

    background: #111111;
}

.trace-image img {
    display: block;

    width: 100%;
    height: 100%;

    object-fit: cover;
    object-position: center;
}

.trace-card figcaption {
    margin-top: 12px;

    color: #777777;

    text-transform: uppercase;
    letter-spacing: .14em;
    font-size: 8px;
    line-height: 1.5;
}


/* ---------------------------------------------------------
   Trace notes
   Left aligned to Image A
--------------------------------------------------------- */

#trace .trace-notes {
    width: 100%;
    margin: 38px 0 0;

    display: flex;
    flex-wrap: wrap;

    justify-content: flex-start;
    gap: 10px;
}

.trace-notes span {
    padding: 9px 12px;

    background: rgba(255,255,255,.04);
    color: #aaaaaa;

    border-top: 1px solid;

    font-size: 9px;
    letter-spacing: .13em;
    text-transform: uppercase;
}

.trace-notes span:nth-child(1) {
    border-color: var(--pastel-blue);
}

.trace-notes span:nth-child(2) {
    border-color: var(--pastel-sage);
}

.trace-notes span:nth-child(3) {
    border-color: var(--pastel-blush);
}

.trace-notes span:nth-child(4) {
    border-color: var(--pastel-lilac);
}

.trace-notes span:nth-child(5) {
    border-color: var(--aivelle-gold);
}


/* ---------------------------------------------------------
   Closing Trace copy
   Same left edge as Image A
--------------------------------------------------------- */

#trace .view-full-copy {
    width: 100%;
    max-width: 1000px;

    margin: 38px 0 0;

    text-align: left;
}

#trace .view-full-copy > p {
    margin: 0;
    text-align: left;
}

/* =========================================================
   Signature Distance
========================================================= */

.signature-distance {
    padding:
        clamp(100px, 12vw, 180px)
        var(--page-gutter);

    background: #050505;

    text-align: center;
}

.signature-distance h2 {
    margin: 0;

    font-size: clamp(58px, 8vw, 120px);
    font-weight: 400;
    letter-spacing: -.06em;
    line-height: .9;
}

.signature-flow {
    width: min(100%, 760px);
    margin: 80px auto 0;

    display: grid;
    justify-items: center;
}

.signature-step {
    width: min(100%, 560px);
    padding: 24px;

    border: 1px solid #292929;
}

.signature-step span {
    display: block;

    color: var(--white);

    font-size: 16px;
    letter-spacing: .2em;
    text-transform: uppercase;
}

.signature-step small {
    display: block;

    margin-top: 8px;

    color: #777777;

    font-size: 14px;
}

.signature-start,
.signature-end {
    background: var(--white);
}

.signature-start span,
.signature-end span {
    color: #111111;
}

.signature-arrow {
    padding: 14px 0;

    color: #777777;
}

.pastel-border-blue {
    border-color: var(--pastel-blue);
}

.pastel-border-sage {
    border-color: var(--pastel-sage);
}

.pastel-border-blush {
    border-color: var(--pastel-blush);
}

.pastel-border-lilac {
    border-color: var(--pastel-lilac);
}

.pastel-border-gold {
    border-color: var(--aivelle-gold);
}

.pastel-border-yellow {
    border-color: var(--pastel-yellow);
}

.pastel-border-orange {
    border-color: var(--pastel-orange);
}

.pastel-border-green {
    border-color: var(--pastel-green);
}

.pastel-border-purple {
    border-color: var(--pastel-purple);
}


/* =========================================================
   The AIVELLE Edit
========================================================= */

.aivelle-edit {
    background: #f8f5ef;
    color: #111111;
}

.aivelle-edit-heading {
    width: min(100%, 1180px);
    margin: 0 auto 70px;
}

.aivelle-edit-grid {
    width: min(100%, 1250px);
    margin: 0 auto;

    display: grid;
    grid-template-columns: .95fr 1.05fr;
    gap: clamp(50px, 8vw, 120px);
}

.aivelle-edit-copy p {
    color: #514d48;
}

.aivelle-edit-copy ol {
    margin: 34px 0;
    padding-left: 26px;

    color: #24211f;

    font-size: clamp(18px, 1.7vw, 24px);
    line-height: 1.8;
}

.edit-conclusion strong {
    color: #111111;
}

.seven-day-grid {
    min-height: 500px;

    display: grid;
    grid-template-columns: repeat(7, 1fr);
    align-items: stretch;
}

.seven-day-grid span {
    display: grid;
    place-items: end center;

    padding-bottom: 20px;

    border-left: 1px solid rgba(17,17,17,.13);

    color: #817a72;

    font-size: 10px;
}

.seven-day-grid span:nth-child(1) {
    background: var(--pastel-blue);
}

.seven-day-grid span:nth-child(2) {
    background: #e5ebdf;
}

.seven-day-grid span:nth-child(3) {
    background: var(--pastel-blush);
}

.seven-day-grid span:nth-child(4) {
    background: #f1eadc;
}

.seven-day-grid span:nth-child(5) {
    background: var(--pastel-lilac);
}

.seven-day-grid span:nth-child(6) {
    background: #e4e0d8;
}

.seven-day-grid span:nth-child(7) {
    background: #d8c7a4;
}


/* =========================================================
   Closing
========================================================= */

.view-closing {
    background: #050505;
}


/* ---------------------------------------------------------
   Closing cinematic image
--------------------------------------------------------- */

.view-closing-image {
    position: relative;
    overflow: hidden;

    width: calc(100% - (var(--page-gutter) * 2));
    max-width: 1600px;

    margin: 0 auto;

    aspect-ratio: 21 / 10;

    border: 0;
}

.view-closing-image img {
    display: block;

    width: 100%;
    height: 100%;

    object-fit: cover;
    object-position: center center;
}


/* ---------------------------------------------------------
   Closing copy
--------------------------------------------------------- */

.view-closing-copy {
    width: min(100%, 1180px);

    margin: 0 auto;

    padding:
        clamp(90px, 11vw, 160px)
        var(--page-gutter);

    box-sizing: border-box;
}

.view-closing-copy .view-kicker {
    margin: 0 0 26px;

    color: var(--aivelle-gold);
}

.view-closing-copy h2 {
    max-width: 1050px;

    margin: 0 0 50px;

    font-size: clamp(54px, 7vw, 110px);
    font-weight: 400;
    letter-spacing: -.06em;
    line-height: .92;
}

.closing-prose {
    width: 100%;
    max-width: 760px;
}

.closing-prose p {
    margin: 0 0 22px;
}

.closing-emphasis {
    margin-top: 34px !important;

    color: var(--white) !important;

    font-size: clamp(26px, 2.8vw, 44px) !important;
}

.closing-brand {
    display: grid;
    gap: 12px;

    margin-top: 80px;
}

.closing-brand small {
    color: #777777;
    font-size: 11px;
}


/* =========================================================
   Continue exploring
========================================================= */

.continue-section {
    padding:
        90px
        var(--page-gutter);

    background: #0b0b0b;

    border-top: 1px solid #232323;
}

.continue-links {
    margin-top: 36px;

    border-top: 1px solid #272727;
}

.continue-links a {
    min-height: 84px;

    display: flex;
    align-items: center;
    justify-content: space-between;

    border-bottom: 1px solid #272727;

    transition:
        color .35s ease,
        padding .4s var(--ease);
}

.continue-links a:hover,
.continue-links a:focus-visible {
    padding-inline: 12px;

    color: var(--aivelle-gold);
}

.continue-links i {
    font-style: normal;
    font-size: 20px;
}


/* =========================================================
   Tablet
========================================================= */

@media (max-width: 1024px) {

    .view-hero-grid,
    .view-split-layout,
    .palette-layout,
    .aivelle-edit-grid {
        grid-template-columns: 1fr;
    }

    .view-reading-grid {
        grid-template-columns: 80px 1fr;
    }

    .view-opening-copy {
        grid-column: 2;
    }

    .annotated-image,
    .view-observation {
        grid-column: 2;
    }

    .annotated-image {
        grid-row: auto;
        min-height: 0;
    }

    .view-wide-heading {
        grid-template-columns: 1fr;
    }

    .restraint-copy {
        margin-left: 0;
    }

    .restraint-image {
        width: min(70vw, 650px);
        margin-top: 50px;
    }

}

/* =========================================================
   Restraint — Tablet
========================================================= */

@media (max-width: 1024px) {

    .restraint-section {
        grid-template-columns: 1fr 1fr;

        column-gap: clamp(34px, 5vw, 60px);
        row-gap: 60px;
    }

    .restraint-image {
        max-width: none;
    }

}





/* =========================================================
   Colour study — Tablet
========================================================= */

@media (max-width: 1024px) {

    .palette-section {
        grid-template-columns: 1fr 1fr;

        column-gap: clamp(34px, 5vw, 60px);
    }

    .palette-image {
        max-width: none;
    }

}




/* =========================================================
   Mobile
========================================================= */

@media (max-width: 600px) {

    .view-hero {
        padding-top:
            calc(
                var(--header-height) +
                34px
            );
    }

    .view-hero-grid {
        gap: 44px;
    }

    .view-hero h1 {
        font-size:
            clamp(
                52px,
                16vw,
                78px
            );
    }

    .view-hero-image {
        aspect-ratio: 4 / 5;
    }

    .view-reading-grid {
        grid-template-columns: 1fr;
        gap: 32px;
    }

    .view-section-label,
    .view-opening-copy,
    .view-section-copy,
    .annotated-image,
    .view-observation {
        grid-column: 1;
    }

    .view-section-label {
        display: flex;
        align-items: center;
        gap: 14px;
    }

    .view-section-label span {
        font-size: 20px;
    }

    .view-section-label p {
        margin: 0;
    }
	
	/* ---------------------------------------------------------
	   Line — mobile stacking
	--------------------------------------------------------- */

	#line .view-reading-grid {
		grid-template-columns: 1fr;
	}

	#line .view-section-label {
		grid-column: 1;
		grid-row: auto;

		width: 100%;
	}

	#line .line-copy-column {
		grid-column: 1;
		grid-row: auto;

		width: 100%;
		min-width: 0;
	}

	#line .annotated-image {
		grid-column: 1;
		grid-row: auto;

		width: 100%;
	}

	#line .view-observation {
		width: 100%;
		max-width: none;

		margin-top: 28px;
	}

    .detail-triptych {
        grid-template-columns: 1fr;
    }


    .view-split-layout {
        display: flex;
        flex-direction: column;
    }

    .view-split-copy {
        order: -1;
    }

    /* ---------------------------------------------------------
	   Restraint image — mobile
	--------------------------------------------------------- */

	#restraint .restraint-image {
		grid-column: 1;

		width: 98%;
		max-width: none;

		margin: 1px auto 0;

		justify-self: center;
		align-self: start;
	}

	#restraint .restraint-image-frame {
		width: 100%;
	}

	#restraint .restraint-image-frame img {
		display: block;

		width: 100%;
		height: 100%;

		object-fit: cover;
		object-position: center center;
	}

    .editor-markup {
        margin-top: 55px;
    }

    .editor-markup div {
        grid-template-columns: 90px 1fr;
        gap: 18px;
    }

    .trace-pair {
        grid-template-columns: 1fr;
    }
	
	/* ---------------------------------------------------------
	   Trace images — mobile
	--------------------------------------------------------- */

	#trace .trace-pair {
		grid-template-columns: 1fr;
		width: 100%;
		gap: 34px;
	}

	#trace .trace-card,
	#trace .trace-card:nth-child(2) {
		width: 98%;
		max-width: none;

		margin-left: auto;
		margin-right: auto;

		justify-self: center;
	}

	#trace .trace-image {
		width: 100%;
	}

	#trace .trace-image img {
		display: block;

		width: 100%;
		height: 100%;

		object-fit: cover;
		object-position: center center;
	}

    .seven-day-grid {
        min-height: 330px;
    }

    .signature-step {
        padding: 20px 14px;
    }

    .view-closing-image {
        width: 100%;
        aspect-ratio: 4 / 5;
    }

    .view-closing-copy {
        width: 100%;

        padding:
            72px
            var(--page-gutter);
    }
	
	/* ---------------------------------------------------------
	   Hero — centre image on mobile
	--------------------------------------------------------- */

	#top .view-hero-image {
		grid-column: 1;
		grid-row: auto;

		width: 98%;
		max-width: 420px;

		margin-left: auto;
		margin-right: auto;

		justify-self: center;

		aspect-ratio: 3 / 4;

		overflow: hidden;
	}

	#top .view-hero-image img {
		display: block;

		width: 100%;
		height: 100%;

		object-fit: cover;
		object-position: center center;
	}
	
	/* ---------------------------------------------------------
	   Hero — centre annotated image on mobile
	--------------------------------------------------------- */

	#line .annotated-image {
		grid-column: 1;
		grid-row: auto;

		width: 98%;
		max-width: 420px;

		margin-left: auto;
		margin-right: auto;

		justify-self: center;

		aspect-ratio: 3 / 4;
	}

	#line .annotated-image img {
		width: 100%;
		height: 100%;

		display: block;

		object-fit: cover;
		object-position: center center;
	}
}

/* ---------------------------------------------------------
   Interruption annotation — mobile
--------------------------------------------------------- */

#interruption .interruption-marker {
    left: 8%;
    right: auto;
    top: 76%;

    max-width: 78%;

    display: flex;
    flex-direction: row-reverse;
    align-items: center;
    gap: 10px;
}

#interruption .interruption-marker p {
    width: 132px;
    max-width: 132px;

    white-space: normal;
    overflow-wrap: break-word;

    padding: 7px 9px;

    font-size: 7px;
    line-height: 1.35;
}

#interruption .interruption-marker small {
    display: block;

    margin-top: 2px;

    font-size: 6px;
    line-height: 1.35;
}

#interruption .interruption-marker span {
    flex: 0 0 44px;

    width: 44px;
}

/* =========================================================
   Restraint — Mobile
========================================================= */

@media (max-width: 600px) {

    .restraint-section {
        grid-template-columns: 1fr;
        row-gap: 42px;
    }

    .restraint-copy,
    .restraint-image,
    .editor-markup,
    .restraint-follow-copy {
        grid-column: 1;
    }

    .restraint-follow-copy {
        max-width: none;
    }
}



/* =========================================================
   Colour study — Mobile
========================================================= */

@media (max-width: 600px) {

    .palette-section {
        display: block;

        padding:
            78px
            var(--page-gutter);
    }

    .palette-heading {
        margin-bottom: 0;
    }

    .palette-heading .view-section-number {
        font-size: 11px;
    }

    .palette-layout {
        margin-top: 0;
    }

    .palette-copy {
        margin-top: 34px;
    }

    .palette-image {
        width: 100%;
        max-width: none;

        margin-top: 42px;
    }

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

}

/* =========================================================
   Colour study — Mobile
========================================================= */

@media (max-width: 600px) {

    .palette-section {
        display: block;

        padding:
            78px
            var(--page-gutter);
    }

    .palette-heading {
        margin-bottom: 0;
    }

    .palette-heading .view-section-number {
        font-size: 11px;
    }

    .palette-layout {
        margin-top: 0;
    }

    .palette-copy {
        margin-top: 34px;
    }


    /* -----------------------------------------------------
       Swatches — retain two columns on mobile
    ----------------------------------------------------- */

    #colour .swatches {
        grid-template-columns: repeat(2, minmax(0, 1fr));

        column-gap: 18px;
        row-gap: 14px;
    }

    #colour .swatch {
        min-width: 0;

        gap: 9px;

        font-size: 10px;
    }

    #colour .swatch i {
        width: 28px;
        height: 28px;
    }


    /* -----------------------------------------------------
       Colour image — large and centred
    ----------------------------------------------------- */

    #colour .palette-image {
        width: 98%;
        max-width: none;

        margin: 34px auto 0;

        justify-self: center;
    }

    #colour .palette-image img {
        display: block;

        width: 100%;
        height: 100%;

        object-fit: cover;
        object-position: center center;
    }

}

/* =========================================================
   Numbered editorial sections
   03 onward follows the same left-number column used by
   01 Dressed and 02 Line.
========================================================= */

.numbered-section-grid {
    width: min(100%, 1500px);
    margin: 0 auto;
}

.numbered-section-content {
    grid-column: 2 / -1;
    min-width: 0;
}


/* Rhythm */

#rhythm .view-wide-heading,
#rhythm .detail-triptych,
#rhythm .view-full-copy {
    width: 100%;
    margin-left: 0;
    margin-right: 0;
}


/* Interruption */

#interruption .view-split-layout {
    width: 100%;
    margin-left: 0;
    margin-right: 0;
}



/* Colour */

#colour .palette-layout {
    width: 100%;
    margin-left: 0;
    margin-right: 0;
}


/* Trace */

#trace .trace-heading,
#trace .trace-pair,
#trace .trace-notes,
#trace .view-full-copy {
    width: 100%;
}

#trace .trace-heading {
    margin-left: 0;
    margin-right: 0;
}

#trace .trace-pair {
    margin-left: 0;
    margin-right: 0;
}


/* AIVELLE Edit */

#aivelle-edit .aivelle-edit-heading,
#aivelle-edit .aivelle-edit-grid {
    width: 100%;
    margin-left: 0;
    margin-right: 0;
}


/* =========================================================
   Numbered sections — Tablet
========================================================= */

@media (max-width: 1024px) {

    .numbered-section-grid {
        grid-template-columns: 80px minmax(0, 1fr);
    }

    .numbered-section-content {
        grid-column: 2;
    }

    .restraint-layout {
        grid-template-columns: 1fr 1fr;
        column-gap: clamp(34px, 5vw, 60px);
        row-gap: 60px;
    }

}


/* =========================================================
   Numbered sections — Mobile
========================================================= */

@media (max-width: 600px) {

    .numbered-section-grid {
        grid-template-columns: 1fr;
        gap: 32px;
    }

    .numbered-section-content {
        grid-column: 1;
    }

    .restraint-layout {
        grid-template-columns: 1fr;
        row-gap: 42px;
    }

}

/* =========================================================
   Restraint — iPad / small tablet portrait
========================================================= */

@media (min-width: 601px) and (max-width: 820px) {

    /* Keep numbered editorial column on left */

    #restraint .numbered-section-grid {
        grid-template-columns: 64px minmax(0, 1fr);
        column-gap: 28px;
    }

    #restraint .numbered-section-content {
        grid-column: 2;
        min-width: 0;
    }


    /* Stack Section 05 content */

    #restraint .restraint-layout {
        display: grid;
        grid-template-columns: 1fr;

        width: 100%;

        column-gap: 0;
        row-gap: 28px;
    }


    /* Main copy */

    #restraint .restraint-copy {
        grid-column: 1;

        width: 100%;
        max-width: none;

        margin: 0;
    }


    /* Image */

    #restraint .restraint-image {
        grid-column: 1;

        width: 98%;
        max-width: none;

        margin: 8px auto 0;

        justify-self: center;
        align-self: start;
    }

    #restraint .restraint-image-frame {
        width: 100%;
    }

    #restraint .restraint-image-frame img {
        display: block;

        width: 100%;
        height: 100%;

        object-fit: cover;
        object-position: center center;
    }


    /* ADD / REMOVE / KEEP */

    #restraint .editor-markup {
        grid-column: 1;

        width: 100%;
        margin: 10px 0 0;
    }

    #restraint .editor-markup div {
        grid-template-columns: 110px minmax(0, 1fr);
    }


    /* Closing paragraph */

    #restraint .restraint-follow-copy {
        grid-column: 1;

        width: 100%;
        max-width: 620px;

        margin: 0;

        justify-self: start;
        align-self: start;
    }

}

