@font-face {
    font-family: "Romestone";
    src: url("fonts/Romestone.ttf") format("truetype");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "Delirium";
    src: url("fonts/DELIRIUM NCV.ttf") format("truetype");
    font-weight: 400;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "Oswald";
    src: url("fonts/Oswald-VariableFont_wght.ttf") format("truetype");
    font-weight: 200 700;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "Playfair Display";
    src: url("fonts/PlayfairDisplay-Italic-VariableFont_wght.ttf") format("truetype");
    font-weight: 400 900;
    font-style: italic;
    font-display: swap;
}

:root {
    --paper: #ebebed;
    --ink: #3A3436;
    --yellow: #EDDF00;
    --rule: #A2A2A2;
    --display-font: "Romestone", Impact, sans-serif;
    --body-font: "Oswald", "Arial Narrow", sans-serif;
    --caption-font: "Playfair Display", Georgia, serif;
}

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

html {
    min-height: 100%;
    background: #333;
}

/* Keep the original 564px canvas; the reference is about 1.5x this size. */
body {
    position: relative;
    width: 564px;
    min-height: 842px;
    margin: 20px auto;
    padding: 28px 22px 22px 28px;
    border: 1px solid var(--ink);
    background: var(--paper);
    color: var(--ink);
    font-family: var(--body-font);
    font-weight: 400;
}

h1,
h2,
p,
ul,
ol {
    margin: 0;
}

h1,
h2 {
    font-family: var(--display-font);
    font-weight: 400;
    letter-spacing: 0.4px;
    text-transform: uppercase;
}

p {
    font-family: var(--caption-font);
    font-size: 10.5px;
    font-style: italic;
    line-height: 1.2;
}

header {
    position: relative;
    height: 105px;
}

header::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    width: 384px;
    border-bottom: 1.5px solid var(--rule);
}

header h1 {
    font-size: 96px;
    line-height: 0.86;
    letter-spacing: 1px;
    white-space: nowrap;
}

.Steps-Number {
    position: absolute;
    top: 0;
    right: 0;
    width: 102px;
    height: 213px;
}

.Steps-Number > [class="5795"],
.Steps-Number > .STEPS {
    position: absolute;
    left: 0;
    font-family: "Delirium", Impact, sans-serif;
    font-size: 98px;
    line-height: 0.8;
    white-space: nowrap;
    transform: rotate(-90deg);
    transform-origin: left top;
}

.Steps-Number > [class="5795"] {
    top: 200px;
    letter-spacing: 1px;
}

.Steps-Number > .STEPS {
    top: 120px;
    color: #EDDF00;
    letter-spacing: 1px;
}

.Steps-Number > p {
    position: absolute;
    top: 212px;
    left: 87px;
    width: 214px;
    font-size: 10px;
    white-space: nowrap;
    transform: rotate(-90deg);
    transform-origin: left top;
}

/* Food: heading, two-by-two images, and the list */
.FOOD-SECTION {
    position: relative;
    height: 134px;
}

.FOOD-SECTION > h2 {
    position: absolute;
    top: 20px;
    left: 0;
    width: 150px;
    font-size: 46px;
    line-height: 1.05;
}

.FOOD-images {
    position: absolute;
    top: 17px;
    left: 160px;
    display: grid;
    grid-template-columns: repeat(2, 70px);
    grid-template-rows: repeat(2, 46px);
    gap: 3px 6px;
}

.food {
    position: relative;
    width: 70px;
    height: 46px;
}

.food span {
    position: absolute;
    top: 1px;
    right: 0;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    background: #EDDF00;
}

.food img {
    position: relative;
    z-index: 1;
    display: block;
    width: 65px;
    height: 46px;
    object-fit: contain;
    filter: grayscale(1);
}

.food-list {
    position: absolute;
    top: 18px;
    left: 320px;
    padding-left: 14px;
    font-size: 15px;
    line-height: 24px;
}

/* Middle columns share the same top and bottom rules. */
.Sport-transport-playlists-eat {
    display: grid;
    grid-template-columns: 214px 272px;
    column-gap: 26px;
    height: 335px;
}

.Left,
.Right {
    min-width: 0;
    border-top: 1.5px solid var(--rule);
}

.hot-spots {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    height: 88px;
    padding-top: 18px;
}

.bar {
    display: flex;
    flex-direction: row-reverse;
    align-items: flex-end;
    gap: 4px;
    height: 70px;
}

.bar > div {
    width: 12px;
    background: #EDDF00;
}

.bar > span {
    font-size: 12px;
    line-height: 14px;
    white-space: nowrap;
    writing-mode: vertical-rl;
    transform: rotate(180deg);
}

.bar-1 { height: 69px; }
.bar-2 { height: 61px; }
.bar-3 { height: 29px; }
.bar-4 { height: 13px; }
.bar-5 { height: 21px; }
.bar-6 { height: 9px; }

.bar:nth-child(2) > span {
    color: #737373;
}

.hot-title {
    display: flex;
    align-items: center;
    gap: 10px;
    height: 61px;
    border-bottom: 1.5px solid var(--rule);
}

.hot-title h2 {
    flex: 0 0 auto;
    font-size: 32px;
    line-height: 1;
    white-space: nowrap;
}

.hot-title p {
    white-space: nowrap;
}

/* The transport bars begin directly after their existing labels. */
.transportation {
    height: 184px;
    padding-top: 19px;
    border-bottom: 1.5px solid var(--rule);
}

.transportation-row {
    display: flex;
    align-items: center;
    gap: 5px;
    height: 34px;
}

.transportation-row > span {
    flex: 0 0 auto;
    font-family: var(--display-font);
    font-size: 32px;
    line-height: 1;
}

.transportation-row > div {
    flex: 0 0 auto;
    height: 28px;
    background: var(--yellow);
}

.transportation-bus { width: 115px; }
.transportation-scooter { width: 115px; }
.transportation-foot { width: 175px; }
.transportation-car { width: 64px; }

.transportation p {
    margin-top: 7px;
    font-size: 10.3px;
    white-space: nowrap;
}

/* The restaurant stays inside .playlist, as in the original HTML. */
.playlist {
    display: grid;
    grid-template-columns: 99px 167px;
    grid-template-rows: 193px 125px;
    column-gap: 0;
    row-gap: 0;
    padding-top: 16px;
}

.playlist-text h2 {
    font-size: 32px;
    line-height: 1.06;
}

.playlist-text ol {
    margin-top: 10px;
    padding-left: 11px;
    font-size: 11px;
    line-height: 14px;
    white-space: nowrap;
}

.playlist-text p {
    margin-top: 8px;
}

.pie {
    position: relative;
    width: 167px;
    height: 167px;
    margin-top: 1px;
    border-radius: 50%;
    background: conic-gradient(
        from -17deg,
        var(--yellow) 0deg 41deg,
        var(--paper) 41deg 43deg,
        var(--yellow) 43deg 70deg,
        var(--paper) 70deg 72deg,
        var(--yellow) 72deg 205deg,
        var(--paper) 205deg 207deg,
        var(--yellow) 207deg 300deg,
        var(--paper) 300deg 302deg,
        var(--yellow) 302deg 358deg,
        var(--paper) 358deg 360deg
    );
}

.number {
    position: absolute;
    font-family: "Delirium", Impact, sans-serif;
    font-size: 31px;
    line-height: 1;
    transform: translate(-50%, -50%);
}

.one { left: 73%; top: 67%; font-size: 37px; }
.two { left: 23%; top: 68%; font-size: 34px; }
.three { left: 24%; top: 27%; font-size: 27px; }
.four { left: 51%; top: 16%; font-size: 26px; }
.five { left: 73%; top: 22%; font-size: 23px; }

/* Rotate each label; rotate its stars back into an upright vertical stack. */
.restaurant {
    grid-column: 1 / -1;
    height: 125px;
    margin-left: 1px;
    padding: 9px 9px 8px;
    border: 1px solid var(--rule);
}

.restaurant-title {
    display: flex;
    align-items: center;
    gap: 8px;
}

.restaurant-title h2 {
    flex: 0 0 auto;
    font-size: 32px;
    line-height: 1;
    white-space: nowrap;
}

.restaurant-title p {
    font-size: 10px;
    white-space: nowrap;
}

.restaurant-list {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    height: 72px;
    margin-top: 1px;
}

.restaurant-list > div {
    position: relative;
    padding-left: 13px;
    font-size: 12px;
    line-height: 13px;
    white-space: nowrap;
    writing-mode: vertical-rl;
    transform: rotate(180deg);
}

.restaurant-list strong {
    position: absolute;
    top: 0;
    left: 0;
    color: var(--yellow);
    font-family: Arial, sans-serif;
    font-size: 14px;
    font-weight: 400;
    line-height: 12px;
    letter-spacing: -2px;
    text-orientation: upright;
    transform: rotate(180deg);
}

.Weekly {
    position: relative;
    height: 118px;
    border-bottom: 1.5px solid var(--rule);
}

.Weekly h2 {
    position: relative;
    z-index: 1;
    padding-top: 18px;
    font-size: 32px;
    line-height: 1.06;
}

.Weekly-chart {
    position: absolute;
    inset: 0;
}

.mountain {
    position: absolute;
    inset: 27px 0 0;
    background: var(--yellow);
    clip-path: polygon(
        0 100%, 13% 83%, 18% 90%, 28.5% 44%,
        31% 13%, 34.5% 34%, 38.5% 71%, 41.5% 83%,
        47.5% 75%, 50% 52%, 54.5% 52%, 74.5% 0,
        84.5% 71%, 100% 100%
    );
}

.Days {
    position: absolute;
    right: 73px;
    bottom: 2px;
    left: 1px;
    display: flex;
    justify-content: space-between;
    font-family: var(--caption-font);
    font-size: 10px;
    font-style: italic;
    line-height: 1;
}

footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 25px;
}

footer > [class="9:15"],
footer > [class="12:45"] {
    flex: 0 0 auto;
    font-family: "Delirium", Impact, sans-serif;
    font-size: 98px;
    line-height: 0.77;
    letter-spacing: 0.5px;
    white-space: nowrap;
}

.sleep-text {
    width: 137px;
    margin: 0 10px;
}

.sleep-text p {
    font-size: 10px;
    line-height: 1.2;
    white-space: nowrap;
}

.arrow {
    position: relative;
    height: 2px;
    margin: 5px 0 6px;
    background:  #A2A2A2;
    font-size: 0;
}

.arrow::after {
    content: "";
    position: absolute;
    top: 50%;
    right: 0;
    width: 15px;
    height: 15px;
    border-top: 2.5px solid var(--rule);
    border-right: 2.5px solid var(--rule);
    border-radius: 1px;
    transform: translateY(-50%) rotate(45deg);
}

@media (max-width: 580px) {
    html {
        background: var(--paper);
    }

    body {
        margin: 0 auto;
        /* Scale the whole poster together so the charts keep their proportions. */
        zoom: calc(100vw / 580px);
    }
}

@media print {
    @page {
        size: 564px 842px;
        margin: 0;
    }

    html {
        background: var(--paper);
    }

    body {
        margin: 0;
        zoom: 1;
        print-color-adjust: exact;
        -webkit-print-color-adjust: exact;
    }
}
