@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Libre+Caslon+Display&display=swap');
:root{--paper:#f7f5ef;--white:#fffefa;--ink:#232e2b;--muted:#65716b;--line:#deded4;--red:#91364c;--gold:#c4a23d;--rose:#d38093;--bubbles:#68738e}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',system-ui,sans-serif}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,[role=button]:focus-visible{outline:3px solid #336ea0;outline-offset:4px}button{touch-action:manipulation}a{color:inherit}button[hidden],[hidden]{display:none!important}.masthead{min-height:88px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:24px;padding:16px 4vw;background:var(--white)}.masthead img{display:block;width:137px;height:52px;object-fit:contain}.brand-label{border-left:1px solid #c4c8bd;padding-left:24px;font-size:13px;letter-spacing:.02em;color:var(--muted)}nav{display:flex;gap:8px;margin-left:auto}nav a{padding:12px 16px;border-radius:7px;font-size:13px;text-decoration:none}nav a.current{background:#eaf0e8;color:#355542;font-weight:700}main{max-width:1600px;margin:auto;padding:42px 4vw 26px}.intro{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:30px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:.16em;color:#667667;margin:0 0 10px;text-transform:uppercase}h1{font-family:'Libre Caslon Display',Georgia,serif;font-size:clamp(39px,4.2vw,64px);font-weight:400;line-height:1.08;letter-spacing:-.025em;margin:0}h1 em{color:var(--red);font-weight:400}.lead{color:var(--muted);font-size:14px;margin:14px 0 0}.intro-count{display:flex;gap:16px;align-items:center;padding-left:26px;border-left:1px solid #ccd0c5;flex-shrink:0}.intro-count strong{font-family:Georgia,serif;font-size:52px;font-weight:400;color:#526950}.intro-count span{color:var(--muted);font-size:12px;line-height:1.6}.filters{display:flex;align-items:center;gap:18px;justify-content:space-between;margin-bottom:21px}.color-filters{display:flex;gap:7px;flex-wrap:wrap}.color-filters button{border:1px solid var(--line);background:var(--white);border-radius:30px;min-height:43px;padding:9px 15px;display:flex;align-items:center;gap:8px;font-size:12px}.color-filters button.active{background:#273e32;border-color:#273e32;color:white}.filter-count{opacity:.72;margin-left:3px;font-size:11px}.wine-symbol{display:inline-block;width:11px;height:11px;flex:0 0 11px;vertical-align:middle;border:1.5px solid currentColor}.rouge{background:var(--red);color:var(--red);border-radius:50%}.blanc{background:#ffedaf;color:#927517;transform:rotate(45deg)}.rose{background:var(--rose);color:#b75c74;border-radius:2px}.champagne{background:#fffefa;color:var(--bubbles);border-radius:50%;border-width:3px}.search{position:relative;min-width:240px;max-width:320px;flex:1}.search svg{position:absolute;top:14px;left:14px;width:16px;height:16px;stroke:#718074;fill:none;stroke-width:1.5}.search input{width:100%;border:1px solid var(--line);border-radius:7px;min-height:44px;padding:10px 12px 10px 38px;background:var(--white);font-size:12px}.workspace{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(320px,1fr);gap:22px;align-items:start}.map-panel,.wine-panel{background:var(--white);border:1px solid var(--line);border-radius:12px;overflow:hidden}.map-top{display:flex;align-items:center;justify-content:space-between;padding:23px 24px 17px;gap:15px}.map-top h2{font-family:Georgia,serif;font-size:26px;line-height:1.2;font-weight:400;margin:0}.map-top .eyebrow{display:block;margin-bottom:8px}.map-top button,.map-bottom button,.detail button{background:#f1f2ea;border:1px solid #d7dece;padding:10px 12px;border-radius:6px;font-size:11px;min-height:40px}.region-bar{display:flex;align-items:center;gap:10px;padding:0 24px 18px;border-bottom:1px solid #e8e9e1;font-size:11px;color:var(--muted)}.region-bar select{min-height:36px;border:1px solid #d8dfd3;border-radius:4px;background:transparent;padding:7px;max-width:70%;font-size:12px;color:var(--ink)}.region-bar>span{margin-left:auto;white-space:nowrap}#mapStage{height:580px;position:relative;background:radial-gradient(ellipse at 50% 50%,#fafbf5,#f1f4ee);overflow:hidden}#restaurantMap{display:block;width:100%;height:100%;font:inherit}.map-land{fill:#e6eadd;stroke:#c4cdbc;stroke-width:1;vector-effect:non-scaling-stroke}.map-vineyard{fill:#bbc9ae;stroke:none;opacity:.7}.map-vineyard.relevant{fill:#9daf8e;opacity:.75}.map-appellation{fill:#849c69;opacity:.65;stroke:#607c46;stroke-width:.8;vector-effect:non-scaling-stroke}.map-connector{stroke:#a9b3a1;stroke-width:1;fill:none;pointer-events:none}.map-label{cursor:pointer;outline:none}.map-label .label-card{fill:#fffefa;stroke:#c9d0c2;stroke-width:1}.map-label:hover .label-card,.map-label:focus-visible .label-card{fill:#f8eee6;stroke:#7c604a;stroke-width:2}.map-label.selected .label-card{fill:#f6efe5;stroke:#6f7756;stroke-width:2}.map-name{fill:#263a2f;font-size:12px;font-weight:600;pointer-events:none}.map-sub{fill:#667765;font-size:10px;pointer-events:none}.map-bottom{display:flex;align-items:center;justify-content:space-between;padding:13px 24px;gap:12px;border-top:1px solid #e1e6d9;font-size:11px;color:var(--muted)}.precision{font-size:10px;line-height:1.55;color:#75806e;margin:0;padding:0 24px 18px}.detail{padding:23px 25px;background:#faf9f3;border-bottom:1px solid var(--line);outline:none}.detail h2{font-family:Georgia,serif;font-size:24px;line-height:1.25;font-weight:400;margin:3px 0 10px}.detail p{font-size:12px;line-height:1.65;color:#5c6c60;margin:8px 0}.detail .producer{color:#343e36;font-size:12px;margin:0 0 7px}.detail .appellation{font-weight:700;color:#657850;font-size:11px}.detail-intro{display:flex;align-items:center;gap:9px;margin-top:20px}.detail-intro>span:last-child{font-size:10px;color:var(--muted);line-height:1.4;margin-left:5px}.detail .color-title{display:flex;align-items:center;gap:9px;margin-bottom:13px;font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.tags{display:flex;gap:5px;flex-wrap:wrap;margin:14px 0}.tags span{padding:5px 8px;border-radius:4px;background:#eaf0e3;font-size:10px;color:#4a6240}.detail .wine-grapes{font-size:11px;border-top:1px solid #e2e6d9;padding-top:12px}.detail .description{font-size:13px;color:#3e4d41;line-height:1.65}.source{margin-top:14px!important;font-size:10px!important}.source a{color:#586c47;text-underline-offset:3px}.source small{display:block;margin-top:5px;line-height:1.6}.detail .warning{border-left:2px solid #b79953;padding-left:10px;font-size:11px;color:#79652e}.detail .location{font-size:10px;line-height:1.55;color:#758071}.detail-actions{display:flex;align-items:center;gap:12px;margin-top:14px}.detail-actions button{font-size:10px}.list-heading{display:flex;align-items:baseline;gap:10px;justify-content:space-between;padding:18px 23px 13px}.list-heading h2{font-size:14px;margin:0}.list-heading span{font-size:10px;color:var(--muted)}.wine-list{max-height:515px;overflow:auto;padding:0 12px 12px;scrollbar-width:thin;scrollbar-color:#bac6b0 transparent}.list-region{font-size:10px;color:#6c7d63;letter-spacing:.12em;text-transform:uppercase;font-weight:700;padding:15px 12px 6px}.wine-row{width:100%;text-align:left;background:transparent;border:1px solid transparent;border-bottom:1px solid #ebede4;border-radius:6px;display:flex;align-items:center;gap:12px;padding:12px;min-height:65px}.wine-row:hover{background:#f3f4eb}.wine-row.active{background:#ecf0e6;border-color:#b8c6ac}.wine-row .row-text{min-width:0;flex:1}.wine-row strong{display:block;font-size:12px;line-height:1.45;font-weight:600}.wine-row small{display:block;font-size:10px;color:var(--muted);line-height:1.5;margin-top:3px}.row-arrow{color:#94a18c;font-size:17px}.empty{padding:30px 18px;text-align:center;font-size:13px;color:var(--muted);line-height:1.7}footer{display:flex;justify-content:space-between;align-items:flex-start;gap:25px;margin-top:27px;color:#758071;font-size:11px;line-height:1.7}footer>p{margin:0}footer details{max-width:620px;text-align:right}footer details[open]{text-align:left}footer summary{cursor:pointer}footer a{color:#426243;text-underline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(min-width:1450px){#mapStage{height:650px}}
@media(max-width:1000px){main{padding:30px 3vw 20px}.workspace{grid-template-columns:minmax(0,1.35fr) minmax(300px,1fr);gap:15px}.filters{align-items:stretch;flex-wrap:wrap}.search{max-width:100%;min-width:240px}.brand-label{display:none}.intro-count{display:none}#mapStage{height:570px}.map-top,.detail{padding:20px}.map-top h2{font-size:23px}.map-top{flex-wrap:wrap}.map-top button{font-size:10px}.precision{padding:0 18px 17px}.map-bottom{padding:12px 18px}.color-filters button{padding:9px 12px}}
@media(max-width:720px){.masthead{padding:12px 5vw;min-height:78px;gap:8px}.masthead img{width:110px;height:46px}nav{gap:0}nav a{font-size:10px;padding:10px}main{padding:27px 4vw 20px}.intro{margin-bottom:24px}.intro .eyebrow{font-size:9px}h1{font-size:40px;max-width:420px}.lead{font-size:12px;line-height:1.6;margin-top:12px}.filters{gap:12px;margin-bottom:16px}.color-filters{gap:6px}.color-filters button{font-size:11px;padding:9px 11px;min-height:43px}.filter-count{font-size:10px}.search{flex-basis:100%}.workspace{display:flex;flex-direction:column;gap:17px}.map-panel,.wine-panel{width:100%}.map-top{padding:20px 16px 15px;flex-wrap:nowrap}.map-top h2{font-size:22px}.map-top button{font-size:10px;padding:8px}.region-bar{padding:0 16px 14px;gap:8px}.region-bar select{max-width:63%}.region-bar>label{font-size:10px}#mapStage{height:470px}.map-bottom{font-size:10px;padding:12px 16px}.precision{font-size:9px;padding:0 16px 15px}.detail{padding:22px}.detail h2{font-size:24px}.wine-list{max-height:520px}.wine-row{min-height:68px}.wine-row strong{font-size:13px}.wine-row small{font-size:11px}footer{flex-direction:column;gap:10px}footer details{text-align:left}.map-name{font-size:10px}.map-sub{font-size:9px}.detail{scroll-margin-top:18px}}
@media(prefers-reduced-motion:no-preference){.wine-row,.color-filters button{transition:background .15s,border-color .15s}}
/* The map has a dedicated geographic frame; callouts never occupy it. */
main{padding-top:28px}.intro{margin-bottom:22px}h1{font-size:clamp(36px,3.5vw,52px)}.workspace{display:flex;flex-direction:column;gap:22px}.map-panel{width:100%}.wine-panel{width:100%;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr)}.detail{border-bottom:0;border-right:1px solid var(--line)}.wine-directory{min-width:0}.wine-list{max-height:520px}.wine-row strong{font-size:14px}.wine-row small{font-size:12px}.wine-row .row-origin{color:#566f49;font-weight:500}.detail .description{font-size:16px}.detail p{font-size:14px}.detail .producer{font-size:14px}.detail .origin-line{font-size:14px;font-weight:600;color:#506742;line-height:1.6}.detail .wine-grapes{font-size:13px}.detail .tags span{font-size:12px}.detail .source-details{margin-top:20px;font-size:12px;color:#65725c}.source-details summary{cursor:pointer;width:fit-content;padding:4px 0}.detail .source-details p{font-size:12px}.detail .source{margin-top:9px!important;font-size:12px!important}.map-top h2{font-size:26px}.map-top{padding-bottom:12px}.map-top .eyebrow{display:none}.region-bar{padding-bottom:12px;font-size:12px}.region-bar select{font-size:13px}#mapStage{height:590px;background:var(--white)}.geographic-frame{fill:#f2f5ed;stroke:#e4eadd;stroke-width:1}.map-name{font-size:14px}.map-sub{font-size:12px}.map-producer{font-size:12px;fill:#718066;pointer-events:none}.map-origin{font-size:12px;fill:#456036;font-weight:500;pointer-events:none}.map-connector{stroke:#b6c2ad;stroke-width:1}.map-connector.active{stroke:var(--red);stroke-width:1.7}.map-bottom{font-size:12px}.precision{font-size:11px}#mobileMapLabels{display:none}.detail-actions button{font-size:12px}.list-heading h2{font-size:16px}
@media(max-width:1000px){#mapStage{height:590px}.wine-panel{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr)}}
@media(max-width:720px){#mapStage{height:420px}.map-top h2{font-size:23px}.wine-panel{display:block}.detail{border-right:0;border-bottom:1px solid var(--line)}.map-name{font-size:14px}#mobileMapLabels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;padding:0 14px 18px;background:var(--white)}#mobileMapLabels.regional{grid-template-columns:1fr}.exterior-label{background:#fffefa;border:1px solid #d5ddcc;border-radius:7px;min-height:74px;text-align:left;padding:12px;color:#2c3d2c}.exterior-label strong{font-size:14px;line-height:1.4}.exterior-label.selected{background:#f5eee5;border-color:#856750}.exterior-counts{display:flex;gap:16px;margin-top:9px;font-size:12px}.exterior-counts>span{display:flex;align-items:center;gap:7px}.exterior-title{display:flex;gap:9px;align-items:center}.exterior-producer,.exterior-origin{display:block;line-height:1.5;font-size:12px;margin-top:6px}.exterior-producer{color:#68745e}.exterior-origin{color:#4f6741;font-weight:500}.map-bottom{line-height:1.5}.intro .lead{display:none}.map-top{flex-wrap:wrap}.map-top button{font-size:12px}.region-bar{flex-wrap:wrap}.detail h2{font-size:26px}}
/* Compact labels on both sides, with the wine details alongside the map. */
.map-name{font-size:13px}.map-sub,.map-origin{font-size:11px}.geographic-frame{fill:#f4f6f0;stroke:none}.map-label .label-card{stroke:#cbd4c3}.map-connector{stroke:#a8b59e}
@media(min-width:1100px){.workspace{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(320px,1fr);gap:22px;align-items:start}.wine-panel{display:block}.detail{border-right:0;border-bottom:1px solid var(--line)}.detail h2{font-size:24px}.wine-row strong{font-size:13px}}
/* The two restaurant exercises share counters, with independent sessions. */
.learning-modes{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 24px}.learning-modes button{border:1px solid var(--line);border-radius:8px;padding:13px 19px;min-height:48px;background:var(--white);font-weight:600;font-size:14px}.learning-modes button[aria-pressed=true]{background:#2c4437;border-color:#2c4437;color:white}.learning-modes button span{font-size:11px;opacity:.75;margin-left:9px;font-weight:400}.training-stats{display:flex;align-items:center;gap:25px;flex-wrap:wrap;border-block:1px solid var(--line);padding:17px 0;margin-bottom:22px}.training-stats>div{display:flex;flex-direction:column;gap:4px}.training-stats strong{font-size:23px;font-weight:600;font-variant-numeric:tabular-nums}.training-stats span{font-size:11px;color:var(--muted)}.training-stats>button{margin-left:auto;border:1px solid #cbd4c3;border-radius:7px;padding:12px 15px;background:transparent;font-size:13px;min-height:44px}.test-panel{padding:24px;outline:none}.test-panel h2,.qcm-wine h2{font-family:Georgia,serif;font-weight:400;font-size:25px;line-height:1.3;margin:10px 0}.test-prompt{font-size:16px;line-height:1.55;font-weight:500;margin:8px 0 20px}.test-wine-card{border:1px solid #c4cdbb;border-radius:10px;background:#f6f6ed;padding:22px 18px;touch-action:none;user-select:none;cursor:grab;box-shadow:0 3px 12px #283b2810}.test-wine-card.dragging{opacity:.5;cursor:grabbing}.test-wine-card.placed{cursor:default;touch-action:auto;background:#eff5ea;border-color:#97b080}.test-wine-color{display:flex;align-items:center;gap:10px;color:#576551;font-size:11px;text-transform:uppercase;letter-spacing:.08em}.test-producer{font-size:14px;line-height:1.5;color:var(--muted);margin:0}.drag-hint{display:block;color:#5a7050;font-size:12px;border-top:1px solid #d8decf;padding-top:13px;margin-top:17px}.test-help{font-size:12px;color:var(--muted);line-height:1.65;margin:18px 0 0}.test-feedback{border:1px solid;border-radius:8px;padding:15px;margin:18px 0;font-size:14px;line-height:1.6}.test-feedback p{margin:5px 0 0}.is-correct{background:#edf5e8;border-color:#93b07f;color:#315929}.is-wrong{background:#fff0ed;border-color:#d69588;color:#8c382e}.test-button{display:block;width:100%;border:1px solid #2c4437;border-radius:7px;background:#2c4437;color:white;min-height:48px;padding:12px 17px;margin-top:12px;font-size:14px;font-weight:600}.test-button.secondary{background:transparent;color:#365437;border-color:#cbd4c3}.test-final-score{font-family:Georgia,serif;font-size:64px!important;color:#48683e;margin:20px 0 5px!important}.test-panel>p,.qcm-panel>p{line-height:1.6}.test-map .wine-panel{display:block}.test-map .map-label .label-card{stroke-width:1.4}.map-label.quiz-correct .label-card{fill:#e4f0dc;stroke:#5a8845;stroke-width:2}.map-label.quiz-wrong .label-card{fill:#ffede7;stroke:#bc6252;stroke-width:2}.exterior-label.quiz-correct{background:#e4f0dc;border-color:#5a8845}.exterior-label.quiz-wrong{background:#ffede7;border-color:#bc6252}.map-label.quiz-hover .label-card{fill:#fff1c8;stroke:#8e7535;stroke-width:3}.exterior-label.quiz-hover{background:#fff1c8;outline:3px solid #8e7535}.map-vineyard[data-quiz-target]{cursor:pointer}.map-vineyard.quiz-hover{fill:#c5a84e}.map-vineyard.quiz-correct{fill:#6e984f}.map-vineyard.quiz-wrong{fill:#c1715f}.wine-drag-ghost{position:fixed;z-index:99;pointer-events:none;transform:translate(-50%,-120%);padding:13px 18px;max-width:min(280px,85vw);background:#2c4437;color:white;border-radius:8px;font-size:14px;box-shadow:0 8px 25px #0002}.qcm-panel{max-width:840px;margin:0 auto;border:1px solid var(--line);border-radius:12px;background:var(--white);padding:32px;outline:none}.qcm-wine{border-bottom:1px solid var(--line);padding:3px 0 21px;margin-bottom:22px}.qcm-panel h3{font-size:19px}.qcm-options{display:grid;gap:10px}.qcm-choice{display:flex;align-items:flex-start;gap:13px;text-align:left;line-height:1.6;background:#fafaf5;border:1px solid #d5ddcc;border-radius:8px;min-height:56px;padding:14px;font-size:14px}.qcm-choice:not(:disabled):hover{background:#edf1e6;border-color:#8c9f7a}.choice-letter{display:flex;align-items:center;justify-content:center;flex:0 0 27px;height:27px;border:1px solid #cbd4c3;border-radius:5px;font-size:12px;font-weight:600}.qcm-choice:disabled{cursor:default;color:inherit;opacity:1}.qcm-choice.is-correct{background:#edf5e8;border-color:#83a86e;color:#315929}.qcm-choice.is-wrong{background:#fff0ed;border-color:#d69588;color:#8c382e}.choice-verdict{font-size:11px;font-weight:700;margin-left:auto;min-width:95px}.qcm-panel>.test-button{max-width:330px;margin-left:auto}.qcm-panel>.secondary{margin-left:0}.test-map .map-bottom{min-height:58px}
@media(max-width:1099px){.test-map.workspace{display:flex;flex-direction:column}.test-map .wine-panel{order:-1}.test-panel{padding:22px}.test-wine-card{max-width:600px}.test-panel>.test-button{max-width:400px}.test-feedback{max-width:650px}}
@media(max-width:720px){.learning-modes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-bottom:18px}.learning-modes button{padding:11px 5px;font-size:12px}.learning-modes button span{display:block;margin:4px 0 0;font-size:10px}.training-stats{gap:15px;padding:14px 0}.training-stats strong{font-size:21px}.training-stats span{font-size:10px;max-width:100px}.training-stats>button{padding:10px 12px}.test-panel{padding:18px}.test-panel h2{font-size:23px}.test-wine-card{padding:17px}.test-prompt{font-size:14px;margin-bottom:15px}.qcm-panel{padding:21px 16px}.qcm-panel h3{font-size:17px}.qcm-choice{font-size:13px;flex-wrap:wrap;gap:10px}.qcm-choice>span:nth-child(2){flex:1;min-width:0}.choice-verdict{margin-left:37px;flex-basis:100%}.test-map #mapStage{height:365px}.test-map .exterior-label{min-height:62px}.test-map .exterior-label strong{font-size:13px}.test-map .exterior-origin{font-size:11px;margin-top:4px}}
@media(max-width:720px){.masthead nav{flex-wrap:wrap;justify-content:flex-end}.masthead nav a{padding:9px 7px}}
