:root{--ink:#163a3b;--forest:#123f41;--sea:#b8d9d0;--sand:#eee8dc;--cream:#f8f6f0;--muted:#637673;--stroke:#d9e1d9;--gold:#c5a36b}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.6}a{color:inherit}.wrap{max-width:1180px;margin:auto;padding:0 28px}.skip{position:absolute;top:-60px;left:12px;background:#fff;padding:12px;z-index:10}.skip:focus{top:10px}.site-header{background:var(--cream);border-bottom:1px solid var(--stroke)}.header-inner{display:flex;align-items:center;justify-content:space-between;min-height:90px;gap:28px}.brand{text-decoration:none;display:flex;align-items:center;gap:13px;letter-spacing:.13em;font-size:.8rem;line-height:1.4}.brand small{display:block;font-size:.58rem;letter-spacing:.22em;margin-top:3px}.brand-icon{font-size:2.5rem;color:#9cae9b}.site-header nav{display:flex;gap:29px}.site-header nav a{text-decoration:none;font-size:.85rem;font-weight:650}.site-header nav a:hover,.site-header nav a:focus-visible{color:#477f75}.hero{background:#e7e9db;overflow:hidden}.hero-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:50px;min-height:570px;align-items:center;padding-top:64px;padding-bottom:64px}.eyebrow{font-size:.7rem;letter-spacing:.2em;font-weight:800;color:#53766d}.hero h1{font-family:Georgia,serif;font-size:clamp(2.7rem,5.1vw,5.3rem);font-weight:500;line-height:1.08;letter-spacing:-.04em;margin:24px 0}.hero p{font-size:1.08rem;max-width:530px}.button{display:inline-flex;align-items:center;gap:25px;background:var(--forest);color:#fff;text-decoration:none;padding:15px 22px;margin-top:15px;font-weight:650;border-radius:3px}.button:hover{background:#20605e}.note{font-size:.82rem!important;color:var(--muted);margin-top:24px}.hero-art{height:430px;position:relative;background:linear-gradient(155deg,#b2c6b8 0%,#80a8a5 55%,#225b60 55%,#183e44 100%);border-radius:48% 48% 6px 6px;isolation:isolate;overflow:hidden}.hero-art .circle{position:absolute;width:320px;height:320px;border-radius:50%;background:#dfcba0;top:60px;right:48px}.art-top,.art-bottom{position:absolute;z-index:2;color:#fff;font-family:Georgia,serif;font-size:2.2rem;letter-spacing:.09em}.art-top{top:42px;left:25px}.art-bottom{bottom:30px;right:20px}.wave{font-size:18rem;position:absolute;bottom:-130px;left:40px;color:#e1e7d5;opacity:.8}.intro{padding-top:95px;padding-bottom:75px;display:grid;grid-template-columns:1.4fr 1fr;gap:60px;align-items:end}.intro h2,.section-heading h2,.voting h2{font-family:Georgia,serif;font-weight:500;font-size:clamp(2rem,3.7vw,3.6rem);line-height:1.16;letter-spacing:-.025em;margin:12px 0}.intro p{color:#5b6e69;max-width:400px}.categories{padding-bottom:110px}.section-heading{margin-bottom:32px}.category-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.category-card{min-height:270px;display:flex;flex-direction:column;justify-content:space-between;padding:28px 30px;background:#e7ede6;border:1px solid #d3ded2;position:relative}.category-card:nth-child(2){background:#e9e1d2;border-color:#e0d7c9}.category-card:nth-child(3){background:#dce5df}.category-card:nth-child(4){background:#e7e7db}.category-card .number{font-size:.75rem;letter-spacing:.14em;font-weight:700;color:#698178}.category-card h3{font-family:Georgia,serif;font-size:1.85rem;font-weight:500;margin:0 0 9px}.category-card p{margin:0;max-width:320px;color:#65756e;font-size:.92rem}.card-arrow{position:absolute;right:28px;top:18px;font-size:1.5rem}.voting{background:var(--forest);color:#f5f4e9;padding:105px 0}.voting .eyebrow{color:#bad6c6}.voting p{max-width:500px;color:#c7d9d2}.voting-grid{display:grid;grid-template-columns:1fr 1fr;gap:100px}.voting ol{list-style:none;margin:0;padding:0;counter-reset:steps}.voting li{counter-increment:steps;border-bottom:1px solid #47716c;padding:19px 0;display:grid;grid-template-columns:40px 110px 1fr;align-items:start;gap:14px}.voting li:before{content:"0" counter(steps);color:#aac6b9;font-size:.8rem}.voting li span{font-size:.9rem;color:#c7d9d2}footer{background:#0e3031;color:#b5c9be;padding:30px 0;font-size:.8rem}.footer-inner{display:flex;justify-content:space-between;gap:22px}a:focus-visible{outline:3px solid #b9843d;outline-offset:4px}@media(max-width:760px){.header-inner{min-height:76px}.site-header nav{gap:12px;flex-wrap:wrap}.site-header nav a{font-size:.73rem}.brand{font-size:.67rem}.brand-icon{font-size:1.8rem}.brand small{font-size:.5rem}.hero-grid,.intro,.voting-grid{grid-template-columns:1fr;gap:32px}.hero-grid{padding-top:60px}.hero-art{height:290px}.hero-art .circle{width:230px;height:230px;right:25px}.art-top,.art-bottom{font-size:1.5rem}.category-grid{grid-template-columns:1fr}.intro{padding-top:65px;padding-bottom:55px}.categories{padding-bottom:70px}.voting{padding:65px 0}.voting li{grid-template-columns:30px 90px 1fr;gap:10px}.footer-inner{flex-direction:column}}@media(max-width:420px){.wrap{padding-left:18px;padding-right:18px}.site-header nav{display:none}.hero-art{height:260px}.category-card{min-height:220px}}


/* Category listings, company profiles and demonstration ballot */
.demo-banner{background:#173f40;color:#fff;text-align:center;padding:7px 16px;font-size:.75rem;font-weight:750;letter-spacing:.09em}
.nav-ballot{display:inline-flex;align-items:center;gap:5px;background:#dcebe4;border-radius:4px;padding:9px 13px}
.category-link{text-decoration:none;transition:transform .2s,box-shadow .2s}
.category-link:hover,.category-link:focus-visible{transform:translateY(-3px);box-shadow:0 12px 28px rgba(17,60,55,.08)}
.interior-head{background:#e7e9db;padding:70px 0 72px}
.interior-head h1{font-family:Georgia,serif;font-size:clamp(2.8rem,5vw,5.1rem);line-height:1.1;letter-spacing:-.03em;font-weight:500;margin:12px 0 19px}
.interior-head p{max-width:630px;color:#526b66;font-size:1.07rem}
.back-link{display:block;color:var(--forest);font-size:.88rem;font-weight:700;margin-bottom:34px;text-decoration:none}
.listing,.detail-layout,.ballot-layout{padding-top:65px;padding-bottom:100px}
.demo-note{margin:0 0 28px;color:#61746c;font-size:.94rem}
.candidate-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.candidate-card{border:1px solid var(--stroke);background:#fff;overflow:hidden}
.candidate-image{display:flex;align-items:center;justify-content:center;aspect-ratio:4/3;background:linear-gradient(145deg,#d8e2d9,#bfd1cc);color:#44685e;text-decoration:none;font-size:.8rem;letter-spacing:.08em;font-weight:650;text-align:center;padding:24px}
.candidate-card:nth-child(2) .candidate-image{background:linear-gradient(145deg,#e9e4d6,#c9d5c4)}
.candidate-card:nth-child(3) .candidate-image{background:linear-gradient(145deg,#d0e1df,#b0c6bf)}
.candidate-body{padding:25px}
.candidate-body h2{font-family:Georgia,serif;font-size:1.65rem;font-weight:500;margin:7px 0}
.candidate-body h2 a{text-decoration:none}
.candidate-body p{color:#65756e;font-size:.91rem;min-height:65px}
.candidate-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-top:20px}
.text-link{font-weight:700;text-decoration:underline;text-underline-offset:4px;font-size:.88rem}
.select-button{background:var(--forest);border:1px solid var(--forest);color:#fff;border-radius:3px;padding:11px 15px;font:inherit;font-size:.87rem;font-weight:700;cursor:pointer}
.select-button.is-selected{background:#edf4ee;color:var(--forest)}
.select-button:hover,.select-button:focus-visible{outline:2px solid #c59e5e;outline-offset:2px}
.detail-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(270px,1fr);gap:70px}
.detail-photo{display:flex;align-items:center;justify-content:center;background:linear-gradient(145deg,#cfded7,#97b4af);color:#315d52;aspect-ratio:16/9;font-weight:700;font-size:.9rem;letter-spacing:.07em;margin-bottom:36px}
.detail-layout h2,.detail-aside h2,.ballot-layout h2{font-family:Georgia,serif;font-weight:500;font-size:1.8rem}
.detail-layout p{color:#5c736a}
.gallery-placeholders{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.gallery-placeholders div{aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;text-align:center;background:#e2e9e2;color:#667e72;font-size:.8rem;padding:10px}
.detail-aside,.ballot-summary{background:#e5ece5;padding:30px;align-self:start;position:sticky;top:20px}
.detail-aside .button,.ballot-summary .button{display:block;width:100%;font:inherit;font-weight:700;font-size:.9rem;text-align:center;cursor:pointer;padding:14px 12px;margin:20px 0;border:0}
.detail-aside .text-link{display:inline-block;margin-top:10px}
.detail-aside p,.ballot-summary p{font-size:.9rem;color:#526960}
.ballot-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(290px,1fr);gap:38px}
.ballot-category{padding:23px 26px;border:1px solid var(--stroke);background:#fff;margin-bottom:16px}
.ballot-category h2{font-size:1.6rem;margin:0 0 8px}
.ballot-category p{color:#5b716a;margin:0 0 17px}
.ballot-category-actions{display:flex;flex-wrap:wrap;gap:22px;align-items:center}
.ballot-summary .button:disabled{opacity:.55;cursor:not-allowed}
.clear-button{border:none;padding:8px 0;color:#436b61;text-decoration:underline;text-underline-offset:3px;background:transparent;cursor:pointer;font:inherit;font-size:.88rem}
.clear-button:focus-visible{outline:2px solid #c59e5e}
.selection-feedback{font-size:.77rem;color:#2e6654;margin:8px 0}
.button-light{background:#d8e7da;color:#173f40}
.button-light:hover{background:#fff}
@media(max-width:950px){.candidate-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-layout,.ballot-layout{gap:22px}}
@media(max-width:760px){.candidate-grid,.detail-layout,.ballot-layout{grid-template-columns:1fr}.interior-head{padding:42px 0}.detail-aside,.ballot-summary{position:static}.gallery-placeholders{gap:7px}.candidate-body p{min-height:0}}
@media(max-width:420px){.candidate-grid{grid-template-columns:1fr}.candidate-body{padding:20px}}


/* Real catalog imagery — only server-validated /uploads/... URLs. */
.candidate-image img{display:block;width:100%;height:100%;object-fit:cover}
.candidate-image:has(img){padding:0}
.detail-img{width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;display:block}
.real-gallery a{display:block;aspect-ratio:4/3;overflow:hidden}
.real-gallery img{width:100%;height:100%;object-fit:cover}
.description{white-space:normal;overflow-wrap:anywhere}
#vote-form input[type="email"]:focus-visible{outline:3px solid #c5a36b;outline-offset:2px}
#vote-form label{color:#163a3b}
#live-feedback{font-size:.9rem;min-height:3em}
