/* docs/illustrator/review/otto-truck-shop-2026-10-25/venture/market-map.css */
/* Marketplace-only geometry. Keep this separate from styles.css because the private
 * funding plan uses that shared sheet. Geographic markers and external attribution
 * belong to port-map.js. Do not hide attribution or substitute drawn coastlines.
 */
header{position:relative}nav a{gap:8px}nav svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none}
.catalog-toolbar{display:flex;gap:8px;flex-wrap:wrap;padding:8px;background:#dce2d1;border-radius:26px;width:fit-content}
.catalog-toolbar button{border:0;background:transparent;border-radius:999px;padding:15px 19px;min-height:46px;font-size:13px}
.catalog-toolbar button[aria-pressed=true]{background:#28372f;color:#f8f6ee}
.catalog-status{margin:22px 0}.products[hidden],[hidden]{display:none!important}
.products{grid-template-columns:repeat(3,minmax(0,1fr))}.products small{display:block;font-size:9px;letter-spacing:.08em;margin:20px 0 0;color:#6b7769}
.products h3{font-size:25px}.products article>a{font-size:12px}.products img{aspect-ratio:1.5;object-fit:cover}
.collection-note{margin-top:24px;border:1px solid #bbc7ae;border-radius:30px;padding:30px;display:grid;gap:18px;background:#f5f3eb}
.collection-note p{max-width:800px}.collection-note .kicker{margin:0}.collection-note a{justify-self:start}
.catalog-foot{display:flex;justify-content:space-between;gap:25px;flex-wrap:wrap;margin-top:30px;font-size:12px;line-height:1.8}
.map-controls,.port-list{display:flex;flex-wrap:wrap;gap:8px}.map-controls{margin-bottom:18px}.map-controls button,.port-list button{border:1px solid #b8c4b3;background:#f7f5ee;padding:13px 18px;min-height:46px;border-radius:999px;font-size:12px}.map-controls button[aria-pressed=true],.port-list button[aria-pressed=true]{background:#28372f;color:#f5f3eb;border-color:#28372f}
.map-layout{display:grid;grid-template-columns:minmax(0,2.6fr) minmax(245px,1fr);gap:22px}
.map-canvas{position:relative;border-radius:30px;overflow:hidden;background:#e4e8e3;min-width:0;min-height:530px}
#port-map{position:absolute;inset:0}.maplibregl-canvas{outline-offset:-4px}#map-fallback{position:absolute;inset:0;padding:55px 35px;background:#e8ece5;display:flex;flex-direction:column;gap:20px;justify-content:center;pointer-events:none}#map-fallback strong{font-size:28px;letter-spacing:-.04em}#map-fallback p{font-size:13px}.map-load-status{position:absolute;left:18px;top:16px;right:55px;pointer-events:none;font:9px/1.6 monospace;padding:7px 10px;background:#f7f5e8e8;border-radius:12px;width:fit-content;max-width:calc(100% - 75px);color:#4a5b4b}.geographic-pin{width:17px;height:17px;border-radius:50%;border:3px solid #f9f7ed;background:#445e44;box-shadow:0 1px 8px #15251c55;padding:0}.geographic-pin:focus-visible{outline:3px solid #9cae36;outline-offset:4px}.geographic-pin:hover{background:#a2b645}.map-detail{border-radius:30px;padding:30px;background:#28372f;color:#f4f1e8;display:flex;flex-direction:column;align-items:start;gap:22px}.map-detail small{color:#c4d19f;font-size:9px;line-height:1.7}.map-detail h3{font-size:29px}.map-detail p{color:#bcc8ba;font-size:13px}.map-detail a{color:#f5f3e9;font-size:12px}.map-detail .quiet{margin-top:auto}.port-groups{display:grid;grid-template-columns:1fr 1.5fr;gap:30px;margin-top:28px}.port-groups .kicker{display:block;margin-bottom:15px}.map-legend{font-size:11px;margin-top:22px;max-width:1000px}.legend-sea{display:inline-block;width:35px;border-top:2px dashed #6e826c;vertical-align:middle;margin-right:8px}
.handoff{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;list-style:none;padding:0;margin:0}.handoff li{padding:24px;border-radius:26px;border:1px solid #596b5b;background:#314238}.handoff small{font-size:9px;color:#bcc99e}.handoff h3{font-size:21px;margin:24px 0 16px}.handoff p{font-size:12px}.workflow-note{margin-top:26px;max-width:850px;font-size:12px}
@media(max-width:1150px){header{display:block}nav{justify-content:start;margin-top:25px;max-width:none}.map-layout{grid-template-columns:1fr}.map-detail{display:grid;grid-template-columns:1fr 1fr;gap:15px 30px}.map-detail small,.map-detail h3{grid-column:1}.map-detail p{grid-column:2;grid-row:1/4}.map-detail a{grid-column:1}.handoff{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.products{grid-template-columns:1fr 1fr}.map-detail{display:flex;padding:25px}.handoff{grid-template-columns:1fr 1fr}.catalog-toolbar{border-radius:24px;width:100%}.catalog-toolbar button{flex:1 1 40%;padding:12px 13px;font-size:12px}.catalog-foot{display:block}.catalog-foot a{display:block;margin-top:15px}}
@media(max-width:440px){.products{grid-template-columns:1fr}.handoff{grid-template-columns:1fr}.map-canvas{border-radius:22px}.collection-note{padding:24px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

@media(max-width:700px){.map-canvas{min-height:400px}.port-groups{grid-template-columns:1fr;gap:23px}.port-list button,.map-controls button{min-height:46px;padding:12px 15px}.map-controls{gap:6px}.map-controls button{flex:1;font-size:11px}.map-detail{display:flex}.map-load-status{font-size:8px}.map-legend{font-size:11px}}

.manufacturer-links{display:flex;gap:10px 20px;align-items:center;flex-wrap:wrap;margin:0 0 26px}.manufacturer-links span{font:9px/1.6 monospace;color:#687366;width:100%}.manufacturer-links a{font-size:12px;min-height:44px;display:inline-flex;align-items:center;padding:4px 0}

/* The public sourcing preview is deliberately separate from the warm-paper funding plan.
 * Scope the dark layer to body.market so styles.css can remain shared and unchanged.
 * Keep the actual geographic basemap light with its original attribution controls.
 */
body.market{background:#111714;color:#f1f2e9;color-scheme:dark}
.market .topnote{background:#18201a;color:#b0baaa;border-bottom:1px solid #2a352b;font-size:9px}
.market header{background:#1b231c;border-color:#354032;margin-top:20px;padding:23px 28px}
.market nav a{background:#293329;color:#e1e8db;font-size:12px;padding:12px 17px;gap:8px}
.market nav a:hover{background:#35452e}
.market nav a>span[aria-hidden]{font-size:12px}
.market h1{font-size:clamp(52px,6.2vw,92px);letter-spacing:-.07em;line-height:1.04;font-weight:500}
.market h2{font-size:clamp(40px,4.6vw,66px)}
.market h3{color:#ecf0e4}
.market p{color:#aab7a5;font-size:14px}
.market .kicker,.market small{color:#acbb9d}
.market .hero{grid-template-columns:1.05fr 1fr;gap:40px;padding-top:70px;padding-bottom:60px}
.market .hero p{max-width:560px;font-size:16px;line-height:1.8}
.market .hero figure{padding:0;background:#eeeae1;position:relative}
.market .hero img{display:block;width:100%;aspect-ratio:1.15;object-fit:cover}
.market .hero figcaption{font-size:8px;color:#4d5e50;background:#eeeae1;padding:15px 20px;margin:0}
.market .hero-foot{font:10px/1.6 monospace;margin-top:28px;color:#8e9d83}
.market .button{background:#c5d957;color:#172117;border:1px solid #c5d957;font-size:12px}
.market .quiet{border-color:#53634c;color:#e6eddf;background:transparent}
.market .owner-note{border-color:#3b4a32;background:#202a1d;padding:25px 28px}
.market .owner-note b{font-size:14px;font-weight:500;color:#dfe8ce}
.market .owner-note p{font-size:12px;max-width:1150px}
.market .tinted{background:#182019}
.market .handoff{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.market .handoff li{background:#1c271d;border:1px solid #34432e;border-radius:25px;padding:27px}
.market .handoff h3{font-size:24px;margin-top:23px}
.market .handoff p{font-size:12px}
.market .catalog-toolbar{background:#283225}.market .catalog-toolbar button{color:#b8c4ae}
.market .catalog-toolbar button[aria-pressed=true]{background:#c5d957;color:#172117}
.market .manufacturer-links span{color:#8e9e81}.market .manufacturer-links a{color:#c5cfbb}
.market .products{grid-template-columns:repeat(3,minmax(0,1fr));gap:19px}
.market .products article{background:#202a20;border:1px solid #35422e;padding:13px 13px 25px;border-radius:30px}
.market .products img{background:#ebe8df;border-radius:21px;aspect-ratio:1.5;object-fit:cover}
.market .products h3{font-size:25px;padding:0 9px}.market .products p,.market .products small,.market .products article>a{margin-left:9px;margin-right:9px}
.market .products small{font-size:8px;color:#9aab8c}.market .products article>a{color:#cfdfb2}
.market .collection-note{background:#202a20;border-color:#384a31}
.market .catalog-foot{color:#a7b59a}.market .catalog-foot a{color:#d6e1c9}
.market .customization{margin-top:40px;padding-top:30px;border-top:1px solid #34442e}
.market .customization .kicker{display:block;margin-bottom:16px}
.market .custom-chips{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:17px}
.market .custom-chips span{padding:11px 17px;border-radius:999px;border:1px solid #44533b;color:#bac8ae;font-size:12px}
.market .customization p{font-size:12px;max-width:750px}
.market .brief-intro p{max-width:400px}.market .brief-intro h3{font-size:36px;margin-bottom:25px}
.market .local-card{margin-top:30px;padding:25px;background:#202c1d;border-radius:25px;border:1px solid #3d4f32;max-width:400px}
.market .local-card>span{font-size:18px}.market .local-card h3{font-size:21px;margin:15px 0}
.market .request-form label{color:#bdcbb2;font-size:11px}.market .request-form input,.market .request-form select,.market .request-form textarea,.market .filters input,.market .filters select{background:#20291f;border-color:#46573c;color:#f0f2e9}
.market .request-form input::placeholder,.market .request-form textarea::placeholder,.market .filters input::placeholder{color:#85987b}
.market .request-form option{background:#20291f}.market .request-form p{font-size:11px}
.market .fee-layout{display:grid;grid-template-columns:1fr 1.5fr;gap:50px;align-items:start}
.market .fee-proposal{background:#28351f;padding:35px;border-radius:30px;border:1px solid #596d3d}
.market .fee-proposal strong{font-size:86px;line-height:1.2;font-weight:500;letter-spacing:-.07em;display:block;margin:25px 0 13px;color:#d6e48c}
.market .fee-proposal h3{font-size:23px;margin-bottom:20px}.market .fee-proposal p{font-size:12px}
.market .cost-list{padding:15px 0}.market .cost-list h3{font-size:29px}.market .cost-list ul{list-style:none;padding:0;margin:25px 0}.market .cost-list li{padding:13px 0 13px 18px;border-bottom:1px solid #33452b;font-size:13px;color:#b6c5a9;position:relative}
.market .cost-list li:before{content:'';position:absolute;left:0;top:20px;width:5px;height:5px;background:#839079;border-radius:1.5px}
.market .map-controls button,.market .port-list button{background:#263222;border-color:#475b3c;color:#c8d6bc}
.market .map-controls button[aria-pressed=true],.market .port-list button[aria-pressed=true]{background:#c5d957;border-color:#c5d957;color:#172117}
.market .map-canvas{color-scheme:light;background:#e7ebe3}.market .map-canvas button{color:#263522}
.market #map-fallback p{color:#52634c}.market #map-fallback strong{color:#28372f}
.market .map-detail{background:#202d1e;border:1px solid #3d5032}.market .map-detail p{color:#b2c0a7}
.market .map-detail small{color:#bacb94}.market .map-detail a{color:#d6e3c7}
.market .map-load-status{color:#43543c}
.market .guide-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.market .guide-grid article{padding:29px;background:#1b251c;border:1px solid #344630;border-radius:28px}
.market .guide-grid small{font-size:8px}.market .guide-grid h3{font-size:28px;margin:25px 0 20px}.market .guide-grid p{font-size:13px}
.market .guide-grid a{font-size:12px;display:block;margin-top:22px;color:#cfdda9;line-height:1.6}
.market .dealer{background:#212d1f;border:1px solid #3b5033;margin-top:22px}.market .dealer p{font-size:12px}
.market .workspace-item{border-color:#405437;background:#1b271b}.market .workspace-item h3{margin:15px 0}.market .workspace-item small{font-size:8px}
.market footer{border-color:#35462b}.market footer p{font-size:11px}
.market :is(a,button,input,select,textarea):focus-visible{outline:2px solid #c5d957;outline-offset:5px}
@media(max-width:1000px){.market .hero{grid-template-columns:1fr;gap:30px}.market .hero figure{max-width:800px}.market .hero img{aspect-ratio:1.7}.market .fee-layout{gap:25px}.market .guide-grid{grid-template-columns:1fr}.market .guide-grid article{padding:30px}.market .guide-grid p{max-width:760px}}
@media(max-width:700px){.market .hero{padding-top:42px}.market .hero h1{font-size:52px}.market .hero p{font-size:14px}.market .products,.market .fee-layout,.market .handoff{grid-template-columns:1fr}.market .products img{aspect-ratio:1.5}.market .two{gap:35px}.market .brief-intro p,.market .local-card{max-width:none}.market .fee-proposal strong{font-size:76px}.market .map-detail{display:flex}.market header{padding:23px}.market nav a{font-size:11px;padding:11px 14px}.market .topnote{font-size:8px}.market .catalog-toolbar button{font-size:11px}.market .owner-note{padding:23px}.market .map-controls button{font-size:10px}}
@media print{body.market{background:white;color:black}.market p{color:#333}.market h3{color:#111}.market .tinted,.market .products article,.market .handoff li,.market .guide-grid article,.market .fee-proposal{background:#f3f3ed;color:black}.market .hero figure{max-width:100%}.market .fee-proposal strong{color:black}}

.market .distribution-note{margin-top:30px;padding:28px;border:1px solid #415434;border-radius:25px;background:#202c1c}.market .distribution-note h3{font-size:24px;margin-bottom:15px}.market .distribution-note p{font-size:12px;max-width:850px}
.market .paint-swatches{display:flex;gap:6px;padding:18px 5px 0}.market .paint-swatches button{min-width:44px;min-height:44px;border:1px solid #516249;border-radius:999px;position:relative;background:transparent}.market .paint-swatches button:before{content:'';position:absolute;inset:9px;border-radius:50%;background:#111}.market .paint-swatches [data-paint="silver-blue"]:before{background:#a4b8c4}.market .paint-swatches [data-paint="lime"]:before{background:#b6d430}.market .paint-swatches [data-paint="white"]:before{background:#f0f1ec}.market .paint-swatches button[aria-pressed="true"]{border:2px solid #c5d957}

/* Flags are the country controls, not labeled pills. Keep accessible names in HTML. */
.market .map-controls .flag-control{border:0;background:transparent;box-shadow:none;border-radius:14px;font-size:36px;line-height:1;min-width:62px;min-height:54px;padding:7px 10px;flex:0 0 auto;transition:transform .2s ease,opacity .2s ease}
.market .map-controls .flag-control:hover{background:transparent;transform:translateY(-2px)}
.market .map-controls .flag-control[aria-pressed=true]{background:transparent;border:0;box-shadow:none;transform:scale(1.08)}
.market .country-flag{font-size:34px;line-height:1.2;letter-spacing:0;display:inline-block}
.market .topnote>span{font-size:22px;line-height:1}

/* Icon-only controls retain accessible labels and tooltips. No emoji glyphs. */
.market nav a{width:48px;height:48px;min-height:48px;padding:13px;position:relative;justify-content:center}
.market nav svg{width:22px;height:22px}.market #request-count{position:absolute;right:3px;top:2px;font-size:8px;min-width:12px}
.market .flag-control svg,.market .country-flag svg{display:block;width:40px;height:27px}
.market .topnote svg{width:26px;height:18px;vertical-align:middle}.market .local-card>svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.5}

/* Rounded-square refinement: controls must not inherit the earlier pill system.
 * Native selects retain keyboard and platform menus, with a dedicated arrow gutter.
 * Keep this last so mobile rules above cannot restore cramped control spacing. */
.market header{border-radius:18px}
.market :is(.hero figure,.products article,.map-canvas,.map-detail,.owner-note,.collection-note,.local-card,.fee-proposal,.guide-grid article,.dealer,.workspace-item,.distribution-note){border-radius:16px}
.market :is(.hero img,.products img,.handoff li){border-radius:12px}
.market :is(nav a,.button,.quiet,.catalog-toolbar,.catalog-toolbar button,.port-list button,.map-controls button,.custom-chips span,.paint-swatches button){border-radius:10px}
.market .paint-swatches button:before{border-radius:5px}
.market .request-form{column-gap:24px;row-gap:26px;align-items:start}
.market .request-form label{gap:10px;line-height:1.5;min-width:0}
.market :is(.request-form input,.request-form select,.request-form textarea,.filters input,.filters select){border-radius:10px;min-height:52px;font-size:14px;line-height:24px;padding:13px 16px}
.market :is(.request-form select,.filters select){appearance:none;-webkit-appearance:none;padding-right:46px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23a4b8c4' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 10 5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 16px center;background-size:18px 18px}
.market .request-form textarea{min-height:126px}
.market .filters{gap:16px}
.market option{font-size:14px;line-height:1.5}
@media(max-width:600px){.market :is(.request-form input,.request-form select,.request-form textarea,.filters input,.filters select){font-size:16px}.market .request-form{row-gap:24px}}
.market #source>.two{grid-template-columns:minmax(220px,.65fr) minmax(0,1.5fr)}
@media(max-width:1100px){.market #source>.two{grid-template-columns:1fr;gap:32px}.market .request-form{grid-template-columns:repeat(2,minmax(0,1fr))}.market .brief-intro p{max-width:720px}.market .local-card{max-width:none}}
@media(max-width:600px){.market .request-form{grid-template-columns:1fr}}
/* Product identity is the complete image, never a cinematic crop. Keep this after
 * responsive hero rules so narrow layouts cannot reinstate object-fit:cover. */
.market .hero img{width:100%;height:auto;aspect-ratio:auto;object-fit:contain;object-position:center}
.market .products img{width:100%;aspect-ratio:1.9;object-fit:contain;object-position:center;background:#eeeae1}
.market .products .product-status{font-size:10px;color:#9aaa8f;margin-top:10px}
.market .maker-context{font-size:11px;line-height:1.7;color:#9aaa8f;margin:15px 0 25px;max-width:680px}
