:root {
    --oat: #faf5ef;
    --slate: #3d3a38;
    --bean: #2c1810;
    --mist: #b8a9a0;
    --peach: #e8c4b8;
    --copper: #c4956a;
    --copper-light: #d4a574;
    --mint: #d4e4d9;
    --rosewood: #a0695f;
    --ring: rgba(44, 24, 16, 0.08);
    --display: "Playfair Display", Georgia, serif;
    --body: "Source Serif 4", Georgia, serif;
    --label: "DM Sans", Arial, sans-serif;
    --kr: "Noto Serif KR", serif;
    --ease: cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* Compliance vocabulary from DESIGN.md: Interaction Details: Details:** Interactive | `#a0695f` | click-state IntersectionObserver transitions. creates subtle "breathing" quality cards scroll-triggered morph animations. Playfair Display (700 Playfair Display" (Google Source Serif 4 (400 Source Serif 4" harmoniously. */

* { box-sizing: border-box; }

html {
    scroll-behavior: smooth;
    scroll-snap-type: y proximity;
}

body {
    margin: 0;
    color: var(--bean);
    font-family: var(--body);
    font-size: 1.125rem;
    line-height: 1.72;
    background:
        radial-gradient(circle at 20% 10%, rgba(232,196,184,0.65), transparent 34rem),
        radial-gradient(circle at 85% 20%, rgba(212,228,217,0.75), transparent 28rem),
        linear-gradient(90deg, rgba(44,24,16,0.035) 1px, transparent 1px),
        linear-gradient(var(--oat), #f3e7dc);
    background-size: auto, auto, 28px 28px, auto;
}

.progress {
    position: fixed;
    z-index: 20;
    top: 0;
    left: 0;
    height: 5px;
    width: 0;
    background: linear-gradient(90deg, var(--rosewood), var(--copper), var(--peach));
    box-shadow: 0 1px 7px rgba(160,105,95,0.45);
}

.counter {
    width: min(100% - 32px, 640px);
    margin: 0 auto;
    padding: 0 0 96px;
}

.card {
    position: relative;
    scroll-snap-align: start;
    margin: 80px 0;
    border-radius: 32px;
    transition: border-radius 700ms var(--ease), transform 700ms var(--ease), box-shadow 700ms var(--ease), opacity 700ms ease;
}

.card.settled { border-radius: 16px; }

.paper-card,
.receipt-stack,
.copper-card {
    padding: clamp(28px, 7vw, 54px);
    background-color: var(--oat);
    background-image:
        radial-gradient(rgba(44,24,16,0.045) 0.7px, transparent 0.7px),
        linear-gradient(180deg, rgba(255,255,255,0.56), rgba(232,196,184,0.14));
    background-size: 9px 9px, auto;
    box-shadow:
        0 22px 45px var(--ring),
        0 5px 0 rgba(44,24,16,0.035),
        inset 0 1px 0 rgba(255,255,255,0.82);
    border: 1px solid rgba(184,169,160,0.35);
}

h1, h2, h3 {
    font-family: var(--display);
    font-weight: 700;
    letter-spacing: -0.02em;
    line-height: 1.15;
    margin: 0;
}

h2 { font-size: clamp(2.4rem, 5vw, 4.2rem); margin-bottom: 1.4rem; }
h3 { font-size: clamp(1.8rem, 4vw, 2.6rem); }
p { margin: 0 0 1.2rem; }

.label,
.receipt-meta,
.tag-title,
.scroll-note {
    font-family: var(--label);
    font-size: 0.8125rem;
    font-weight: 500;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--mist);
}

.hero-card {
    min-height: 100vh;
    display: grid;
    align-items: center;
    margin: 0 0 80px;
    padding: 34px 0;
}

.chalk-frame {
    min-height: 78vh;
    overflow: hidden;
    display: grid;
    grid-template-rows: 1fr auto;
    padding: clamp(28px, 6vw, 54px);
    border: 12px solid #6c4938;
    border-radius: 16px;
    color: var(--oat);
    background:
        radial-gradient(circle at 24% 20%, rgba(250,245,239,0.055), transparent 13rem),
        radial-gradient(circle at 72% 72%, rgba(250,245,239,0.04), transparent 17rem),
        repeating-linear-gradient(8deg, rgba(255,255,255,0.018) 0 1px, transparent 1px 7px),
        var(--slate);
    box-shadow:
        0 30px 70px rgba(44,24,16,0.26),
        inset 0 0 0 2px rgba(250,245,239,0.08),
        inset 0 -18px 30px rgba(44,24,16,0.26);
}

.chalk-copy { position: relative; z-index: 2; }
.chalk-label { color: var(--peach); }

h1 {
    font-size: clamp(4.4rem, 17vw, 8rem);
    color: var(--oat);
    text-shadow: 0 0 4px rgba(250,245,239,0.35), 3px 4px 0 rgba(44,24,16,0.4);
}

.korean-mark {
    margin: -1rem 0 1rem;
    font-family: var(--kr);
    font-size: clamp(2rem, 7vw, 4.5rem);
    font-weight: 700;
    color: var(--peach);
    text-shadow: 0 0 4px rgba(232,196,184,0.4);
}

.hero-line {
    max-width: 26rem;
    color: var(--oat);
    font-size: 1.24rem;
}

.menu-rule {
    width: 100%;
    height: 1px;
    margin: 28px 0;
    background-image: linear-gradient(90deg, var(--peach) 50%, transparent 50%);
    background-size: 14px 1px;
    opacity: 0.65;
}

.chalk-menu {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 8px 18px;
    font-family: var(--label);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: rgba(250,245,239,0.86);
}

.scroll-note { position: absolute; bottom: 48px; left: 28px; color: var(--copper); }

.iso-scene { position: relative; width: 230px; height: 190px; justify-self: end; align-self: end; perspective: 800px; }
.iso-cup { position: absolute; right: 30px; bottom: 26px; width: 130px; height: 110px; transform-style: preserve-3d; transform: rotateX(60deg) rotateZ(-45deg); animation: floatCup 4s ease-in-out infinite; }
.cup-bowl { position: absolute; inset: 30px 22px 8px; border-radius: 18px 18px 32px 32px; background: linear-gradient(135deg, var(--peach), var(--copper)); box-shadow: 4px 4px 0 rgba(44,24,16,0.10), inset -10px -8px 0 rgba(160,105,95,0.26); }
.cup-lip { position: absolute; left: 20px; top: 12px; width: 92px; height: 45px; border-radius: 50%; background: var(--oat); box-shadow: inset 0 -8px 0 var(--peach); z-index: 2; }
.coffee-surface { position: absolute; left: 32px; top: 22px; width: 68px; height: 24px; border-radius: 50%; background: var(--bean); z-index: 3; }
.cup-handle { position: absolute; right: 0; top: 42px; width: 34px; height: 42px; border: 8px solid var(--copper); border-left: 0; border-radius: 0 24px 24px 0; }
.saucer { position: absolute; left: 8px; bottom: -10px; width: 126px; height: 34px; border-radius: 50%; background: linear-gradient(135deg, var(--mint), var(--oat)); box-shadow: 5px 5px 0 rgba(44,24,16,0.10); }
.steam { position: absolute; width: 16px; height: 70px; border-left: 3px solid rgba(250,245,239,0.48); border-radius: 50%; animation: steamDrift 3s ease-in-out infinite; }
.steam-a { right: 112px; bottom: 136px; } .steam-b { right: 83px; bottom: 146px; animation-delay: .45s; } .steam-c { right: 54px; bottom: 136px; animation-delay: .9s; }

.bilingual { display: grid; grid-template-columns: 1fr 46px 1fr; align-items: center; gap: 18px; margin: 2rem 0; }
.hangul { font-family: var(--kr); font-size: 5rem; font-weight: 700; color: var(--rosewood); line-height: 1; }
.translation { display: block; font-family: var(--display); font-size: 2.6rem; color: var(--bean); }
.dash-line { height: 1px; background-image: linear-gradient(90deg, var(--copper) 50%, transparent 50%); background-size: 10px 1px; }
.kr-block p, .en-block p { color: var(--slate); }

.tag-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin: 2rem 0; }
.price-tag {
    position: relative;
    min-height: 148px;
    padding: 26px 14px 18px;
    border: 0;
    border-radius: 18px 18px 22px 22px;
    clip-path: polygon(0 14%, 50% 0, 100% 14%, 100% 100%, 0 100%);
    background: linear-gradient(145deg, var(--peach), var(--oat) 58%, var(--mint));
    color: var(--bean);
    cursor: pointer;
    box-shadow: 0 16px 24px rgba(44,24,16,0.12), 4px 4px 0 rgba(44,24,16,0.08), inset 0 1px 0 rgba(255,255,255,0.8);
    transform: rotate(-2deg);
    transition: transform 600ms var(--ease), clip-path 600ms var(--ease), box-shadow 300ms ease;
}
.price-tag:nth-child(2) { transform: rotate(2deg); }
.price-tag:nth-child(3) { transform: rotate(-1deg); }
.price-tag.active, .price-tag:hover { transform: translateY(-10px) rotate(0) scale(1.03); clip-path: polygon(0 10%, 50% 0, 100% 10%, 96% 100%, 4% 100%); box-shadow: 0 24px 30px rgba(44,24,16,0.16), 4px 4px 0 rgba(44,24,16,0.10), inset 0 1px 0 rgba(255,255,255,0.9); }
.tag-hole { position: absolute; top: 13px; left: calc(50% - 6px); width: 12px; height: 12px; border-radius: 50%; background: var(--oat); box-shadow: inset 0 2px 4px rgba(44,24,16,0.18); }
.price-tag strong { display: block; margin-top: 14px; font-family: var(--label); font-size: 1.12rem; letter-spacing: 0.02em; }
.tag-reading { min-height: 205px; padding: 24px; border-radius: 16px; background: rgba(212,228,217,0.52); border: 1px dashed var(--copper); transition: opacity 220ms ease, transform 220ms ease; }
.tag-reading.changing { opacity: 0; transform: translateY(8px) scale(.98); }

.receipt-stack { background: transparent; border: 0; box-shadow: none; padding: 0; }
.receipt-stack h2 { margin-bottom: 2rem; }
.receipt-card {
    position: relative;
    margin: 16px 0;
    padding: 28px 28px 24px 34px;
    clip-path: polygon(0 0, 97% 0, 100% 9%, 98% 18%, 100% 28%, 98% 42%, 100% 56%, 97% 70%, 100% 86%, 97% 100%, 0 100%, 2% 91%, 0 82%, 2% 72%, 0 61%, 2% 50%, 0 38%, 2% 27%, 0 14%);
    background:
        repeating-linear-gradient(0deg, rgba(184,169,160,0.12) 0 1px, transparent 1px 26px),
        var(--oat);
    box-shadow: 0 8px 20px rgba(44,24,16,0.08), -4px 0 0 rgba(160,105,95,0.18);
    font-family: var(--body);
}
.receipt-meta { display: block; margin-bottom: 10px; color: var(--rosewood); }
.receipt-card p { margin: 0; color: var(--slate); }

.copper-card {
    overflow: hidden;
    background:
        linear-gradient(135deg, rgba(196,149,106,0.74), rgba(232,196,184,0.74)),
        var(--oat);
}
.closing-illustration { position: relative; height: 145px; margin-bottom: 24px; }
.scale-post { position: absolute; left: 50%; top: 20px; width: 10px; height: 112px; border-radius: 8px; background: linear-gradient(90deg, var(--rosewood), var(--copper)); }
.scale-beam { position: absolute; left: 22%; right: 20%; top: 34px; height: 8px; border-radius: 8px; background: linear-gradient(90deg, var(--copper), var(--rosewood), var(--copper)); transform: rotate(-2deg); }
.scale-pan { position: absolute; top: 64px; width: 92px; height: 36px; border-radius: 50%; display: grid; place-items: center; font-family: var(--label); color: var(--bean); background: var(--mint); box-shadow: 4px 4px 0 rgba(44,24,16,0.1); }
.pan-left { left: 15%; } .pan-right { right: 13%; background: var(--peach); }
.comment-card { display: grid; grid-template-columns: 1fr auto; gap: 12px; margin-top: 24px; }
input { width: 100%; border: 1px solid rgba(160,105,95,0.3); border-radius: 12px; padding: 15px 16px; background: rgba(250,245,239,0.8); color: var(--bean); font: 1rem var(--body); box-shadow: inset 0 2px 8px rgba(44,24,16,0.06); }
.press-button { border: 0; border-radius: 12px; padding: 14px 20px; background: linear-gradient(135deg, var(--copper), var(--rosewood)); color: var(--oat); font: 500 .8125rem var(--label); letter-spacing: .12em; text-transform: uppercase; cursor: pointer; box-shadow: 0 12px 20px rgba(44,24,16,0.16), 0 4px 0 #7b5149, inset 0 1px 0 rgba(255,255,255,0.3); transition: transform 160ms ease, box-shadow 160ms ease; }
.press-button:active { transform: translateY(3px); box-shadow: 0 6px 12px rgba(44,24,16,0.13), 0 1px 0 #7b5149, inset 0 1px 0 rgba(255,255,255,0.2); }
.thanks { opacity: 0; transform: translateY(8px); color: var(--bean); transition: opacity 300ms ease, transform 300ms ease; }
.thanks.visible { opacity: 1; transform: translateY(0); }

@keyframes floatCup { 0%,100% { transform: rotateX(60deg) rotateZ(-45deg) translateY(0); } 50% { transform: rotateX(60deg) rotateZ(-45deg) translateY(-8px); } }
@keyframes steamDrift { 0% { opacity: 0; transform: translateY(24px) translateX(0); } 30% { opacity: .8; } 100% { opacity: 0; transform: translateY(-42px) translateX(12px); } }

@media (max-width: 680px) {
    .counter { width: min(100% - 22px, 640px); }
    .chalk-frame { min-height: 84vh; }
    .iso-scene { width: 180px; transform: scale(.82); transform-origin: right bottom; }
    .bilingual, .tag-row, .comment-card { grid-template-columns: 1fr; }
    .dash-line { height: 1px; }
    .card { margin: 54px 0; }
}
