/* ZeroCore 5.26: final shared layout rules. Keep this after section styles. */
:root{--ui-gap:16px;--ui-control:44px;--ui-border:#344956;--ui-surface:#10202c;--ui-text:#d7e2e9;--ui-muted:#a6bbc9}
body{line-height:1.6}
:where(h1,h2,h3,h4){text-wrap:balance;word-spacing:normal}
:where(p,li){text-wrap:pretty}
:where(button,a,input,select,textarea,summary){scroll-margin-block:100px 24px}
:where(button,input,textarea,select){font-family:var(--body);font-kerning:normal}
:where(input:not([type=checkbox]):not([type=radio]),select,textarea){line-height:1.5}
:where(input:not([type=checkbox]):not([type=radio]),select){min-height:var(--ui-control)}
select:not([multiple]):not([size]){appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23b8cbd8' stroke-width='1.8'%3E%3Cpath d='m5 7 5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:18px 18px;background-position:right 14px center;padding-right:44px}
select option{background:#10202c;color:#e3edf4}
textarea{resize:vertical;min-height:100px}
button:disabled{cursor:not-allowed;opacity:.55}
:where(.admin-btn,.tickets-button,.kb-copy,.recruitment-button,.forum-button){min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:8px;line-height:1.45;white-space:normal;text-align:center}
:where(input,textarea)::placeholder{color:#819aaa;opacity:1}
/* Identical account/search touch targets on every header, including admin pages. */
.site-header .header-inner{column-gap:14px}
.site-header :is(.header-search,.account-entry,[data-account-link]){display:inline-flex;align-items:center;justify-content:center;gap:8px;flex:0 0 auto;min-height:42px;padding:10px 13px;border:1px solid #344956;border-radius:6px;background:#0d1720;font:700 12px/1.4 var(--body);text-transform:none;color:#ccdbe5;margin:0}
.site-header :is(.header-search,.account-entry,[data-account-link]):hover{background:#1a2b38;border-color:#7794a7;color:#fff}
.site-header :is(.header-search,.account-entry,[data-account-link]) svg{width:17px;height:17px;flex:0 0 auto}
.site-header .zc-notification-bell{min-width:40px;min-height:42px;flex:0 0 auto}
.site-header .header-connect{min-height:42px}
/* World media: coherent framing and readable labels over genuine artwork. */
.hero__layout{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(28px,3vw,56px)}
.hero__title{font-size:clamp(38px,4.1vw,66px);line-height:1.12;letter-spacing:.005em;white-space:normal}
.hero-worlds{gap:16px;min-width:0}
.hero-world__top,.hero-world__bottom{padding:0}
.hero-world{min-height:440px;padding:22px 18px;border-color:color-mix(in srgb,var(--accent) 48%,#182630);background:#111d26;isolation:isolate}
.hero-world img{opacity:1;object-fit:cover;filter:saturate(.85);transform:scale(1.01)}
.hero-world::after{background:linear-gradient(180deg,rgba(4,9,15,.82) 0%,rgba(4,9,15,.18) 42%,rgba(4,9,15,.35) 57%,#050c13 100%)}
.hero-world h2{font-size:clamp(23px,2vw,31px);letter-spacing:.012em;line-height:1.16;margin-top:20px}
.hero-world--warhammer h2{font-size:clamp(19px,1.65vw,26px);overflow-wrap:normal}
.hero-world__bottom{align-items:end;gap:12px}
.hero-world__bottom p{font-size:12px;line-height:1.8;margin:0;color:#d4dfe6}
.hero-world--imperial img,.project-card--imperial .project-card__art img{object-position:57% center}
.hero-world--halo img,.project-card--halo .project-card__art img{object-position:50% center}
.hero-world--warhammer img,.project-card--warhammer .project-card__art img{object-position:49% center}
.project-card{min-height:570px;padding:26px;border-color:color-mix(in srgb,var(--accent) 40%,#15202a);background:#111b24;isolation:isolate}
.project-card__art img{opacity:1;object-fit:cover;filter:saturate(.8)}
.project-card__art::after{background:linear-gradient(180deg,rgba(4,9,15,.72),rgba(4,9,15,.2) 35%,rgba(4,9,15,.78) 75%,#050c13)}
.project-card__top{gap:10px;flex-wrap:wrap;align-items:center}
.project-card__content{padding-top:28px;position:relative}
.project-card h3{font-size:clamp(29px,3vw,44px);line-height:1.18;letter-spacing:.006em;text-shadow:0 2px 20px #050a10}
.project-card--warhammer h3{font-size:clamp(24px,2.5vw,40px)}
.project-card p{max-width:29ch;line-height:1.8;color:#e0e8ee;text-shadow:0 1px 8px #000}
.project-card__action{margin-top:32px;min-height:52px;background:rgba(7,17,26,.88)}
.project-card .project-card__action[href]:hover{background:linear-gradient(180deg,rgba(var(--accent-rgb),.38),rgba(var(--accent-rgb),.16)),#09141e}
.project-card .project-card__action[href]{cursor:pointer;opacity:1}
.world-art-credit{display:block;width:min(100%,500px);margin-top:16px;color:#9caebb;font:500 10px/1.65 var(--body);text-align:left}
.world-art-credit:hover{color:#fff;text-decoration:underline}
.zcw-page[data-world="warhammer-40000"]{--world-accent:#dfba74;--world-rgb:220,178,97;--world-pale:#f2e0b8;--world-dark:#493923;--zc-focus:#efd39c}
.zcw-page[data-world="halo"]{--zc-focus:#a3eceb}
.zcw-page .zcw-title{font-size:clamp(42px,5.4vw,94px);letter-spacing:.005em;line-height:1.1;max-width:none;overflow-wrap:normal}
.zcw-hero__grid{grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);gap:clamp(30px,4vw,70px)}
.zcw-hero__visual{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:580px}
.zcw-visual__frame{height:clamp(430px,37vw,560px)}
.zcw-visual__frame::before{background:linear-gradient(180deg,rgba(7,12,17,.12),transparent 40%,rgba(7,12,17,.5))}
.zcw-page[data-world="imperial-front"] .zcw-visual__image{object-position:57% center}
.zcw-actions{gap:14px;margin-top:20px;align-items:stretch}
.zcw-actions+.zcw-actions{margin-top:14px}
.zcw-button{font-size:11px;line-height:1.6;min-height:48px}
.zcw-micro{font-size:10px;line-height:1.8;letter-spacing:.03em}
.zcw-page .kb-world-block{background:linear-gradient(120deg,rgba(var(--world-rgb),.035),transparent),#0c151d;border-color:rgba(var(--world-rgb),.22)}
.zcw-page .kb-card{border-color:rgba(var(--world-rgb),.23)}
.zcw-page .kb-link{color:var(--world-pale)}
.zcw-page .zcw-feature__rule,.zcw-page .zcw-path-step>b{color:var(--world-accent)}
/* Form labels own their controls; labels never share their text line with inputs. */
.admin-label{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;margin:0;line-height:1.6;align-content:start;min-width:0}
.admin-label>input,.admin-label>select,.admin-label>textarea{display:block;width:100%;margin:0;font:500 13px/1.5 var(--body);letter-spacing:normal;text-transform:none;min-width:0}
.admin-label:has(>input[type=checkbox]){display:flex;gap:12px;align-items:center;min-height:44px}
.admin-label>input[type=checkbox]{width:18px;height:18px;min-height:0;flex:none}
.admin-row{gap:16px;align-items:end;margin-block:16px}
.admin-row>.admin-label{flex:1 1 180px}
.admin-row>.admin-label:has(input[type=checkbox]){flex:0 1 auto;align-self:end}
.admin-panel>.admin-label{margin-block:18px}
.admin-panel-title{font-size:20px;line-height:1.35;letter-spacing:.005em;margin-bottom:10px}
.admin-panel-subtitle{font-size:12px;line-height:1.85;margin-bottom:24px;max-width:100ch}
.admin-panel{padding:24px}
.admin-panel+.admin-panel{margin-top:24px}
.admin-form-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:22px 0 18px}
.admin-btn{font-size:11px;letter-spacing:.015em;padding:10px 14px}
.admin-btn--tiny{font-size:10px;min-height:38px}
.admin-record{padding:20px}
.admin-record-title{font-size:14px;line-height:1.6}
.admin-record-meta{margin-top:8px;line-height:1.8;overflow-wrap:anywhere}
.admin-record>.admin-btn{margin-top:12px}
.admin-record-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:16px}
.admin-cards{display:grid;gap:14px;margin-top:20px}
.admin-category-list>.admin-record+.admin-record{margin-top:14px}
.admin-category-list .admin-cat-editor{margin-top:20px}
.admin-cat-editor .admin-panel{background:#0a1620;border-color:#3c5263;padding:22px}
.admin-user-ops{display:flex;flex-direction:column;align-items:stretch;gap:10px;min-width:160px}
.admin-table th{line-height:1.6;padding:16px 14px}
.admin-table td{vertical-align:top;padding:20px 14px;line-height:1.65}
.admin-table :is(.admin-input,.admin-select){max-width:none;width:100%;min-height:42px}
.admin-table select.admin-select{padding-right:40px;font-size:12px}
.admin-table td details[open]>summary{margin-bottom:16px}
.admin-table td details>.admin-label{margin:12px 0}
.admin-table td details>.admin-btn{margin-top:8px}
.admin-table small{line-height:1.8;overflow-wrap:anywhere}
.admin-security-row{gap:20px;padding:20px;margin-bottom:24px;align-items:center}
.admin-security-row label{gap:10px;line-height:1.6}
.admin-security-row input{max-width:330px;min-height:44px}
.recruitment-admin-picker,.kb-admin-top,.content-selector{display:flex;gap:16px;align-items:end;flex-wrap:wrap;margin-block:24px}
.recruitment-admin-picker>label,.kb-admin-top>label,.content-selector>label{flex:1 1 250px;min-width:0;display:grid;gap:8px;margin:0}
.recruitment-admin-picker>.admin-btn,.kb-admin-top>.admin-btn{flex:none;min-height:44px;margin:0}
.kb-admin-meta{gap:18px;align-items:end}
.kb-admin-fields{gap:20px;min-width:0}
.kb-admin-fields>*{min-width:0}
.kb-admin-toolbar{gap:8px}
.kb-related-picker{margin:0;border:1px solid #344c5d;border-radius:7px;padding:18px;min-width:0}
.kb-related-picker legend{font:700 12px/1.6 var(--body);padding:0 8px;color:#d0e2ed}
.kb-related-options{display:grid;gap:6px;max-height:300px;overflow:auto;overscroll-behavior:contain;padding:5px;scrollbar-gutter:stable}
.kb-related-option{display:flex;gap:12px;align-items:flex-start;padding:10px;border:1px solid transparent;border-radius:5px;font:500 13px/1.65 var(--body);color:#bfd0dd;cursor:pointer}
.kb-related-option:hover{background:#1c303e}
.kb-related-option:has(input:checked){background:#203a48;border-color:#4d7284;color:#e1eff6}
.kb-related-option input{flex:0 0 18px;width:18px;height:18px;margin:2px 0 0;accent-color:#8fbbcf}
.kb-related-option:has(input:disabled){opacity:.5;cursor:not-allowed}
.kb-related-picker .admin-muted{margin:12px 0}
/* Article tools form a spaced stack on both desktop and mobile. */
.kb-aside{display:grid;gap:16px;align-content:start;grid-template-columns:1fr}
.kb-toc{padding:20px}.kb-toc a{font-size:12px;padding:9px 0}.kb-copy{justify-self:start;min-height:44px}
.kb-copy-status:empty{display:none}.kb-copy-status{margin:0}
.kb-article{line-height:1.95}.kb-card h2,.kb-card h3{line-height:1.35;letter-spacing:0}
/* Queue filters/actions remain together instead of wrapping into unrelated rows. */
.tw-filters{gap:20px;padding:24px;border-radius:7px}
.tickets-field{display:grid;gap:8px;min-width:0;line-height:1.6}
.tickets-field>.tickets-input,.tickets-field>.tickets-select{margin:0;width:100%;min-height:44px}
.tw-filters .tickets-field:has(input){grid-column:1/-1}
.tw-filter-actions{grid-column:1/-1;display:flex;gap:12px;justify-content:flex-end;flex-wrap:wrap;padding-top:2px}
.tw-filter-actions .tickets-button{min-width:140px}
.tw-recruitment-link{display:flex;justify-content:flex-end;margin-bottom:28px}
.tickets-heading{gap:20px;margin-bottom:28px}
.tickets-heading h1,.admin-title{letter-spacing:.005em;line-height:1.25}
.tickets-heading p,.tickets-muted{line-height:1.8}
.tickets-list{gap:16px}.tickets-item{padding:22px}
.tw-types{gap:14px;margin-top:22px}.tw-types .tickets-button{padding:20px;line-height:1.6}
.tickets-form{gap:20px}.tickets-actions{gap:12px;flex-wrap:wrap}
.tw-inspector{gap:20px}.tw-inspector .tickets-field{margin-bottom:14px}
.forum-post__body p,.zc-news-article__body p{margin-block:0 18px}
.forum-post__actions{gap:10px;flex-wrap:wrap}.forum-post__actions :is(a,button){min-height:38px;padding:8px 12px}
.account-card__heading{margin-bottom:24px}.account-card__heading h2{line-height:1.3;letter-spacing:0}
.account-card form{row-gap:18px}.account-card .form-field{margin-bottom:16px}
.zc-profile-name,.zc-community-card__name{overflow-wrap:anywhere}
/* Turnstile is visible, recoverable and never replaced by a generic rate error. */
.auth-challenge{display:grid;gap:12px;min-width:0;margin-block:20px}
.auth-challenge [data-turnstile]{min-height:65px;min-width:0;margin:0}
.auth-challenge__status{margin:0;color:#b3c9d8;font:500 12px/1.75 var(--body)}
.auth-challenge[data-state=error] .auth-challenge__status{color:#f5b4b8}
.auth-challenge[data-state=success] .auth-challenge__status{color:#9bd7b4}
.auth-challenge__retry{justify-self:start;padding:10px 14px;min-height:42px;border:1px solid #597489;border-radius:5px;background:#182d3c;color:#e0edf5;font:700 12px/1.5 var(--body)}
[data-feedback]{overflow-wrap:anywhere;line-height:1.8}
[data-world-image].art-unavailable{visibility:hidden}
@media(min-width:1251px) and (max-width:1450px){.site-header .brand{min-width:170px}.site-header .main-nav{gap:12px}.site-header .header-connect__full{display:none}.site-header .header-connect__short{display:inline}.site-header .header-inner{gap:10px}}
@media(max-width:1380px){.hero__layout{grid-template-columns:1fr;gap:38px}.hero__copy{max-width:850px}}
@media(max-width:1200px){.hero__layout{grid-template-columns:1fr;gap:38px}.hero__copy{max-width:850px}.hero-world{min-height:400px}.hero-world h2{font-size:30px}.hero-world--warhammer h2{font-size:25px}.zcw-page .zcw-title{font-size:clamp(38px,5.4vw,68px)}.zcw-hero__grid{gap:28px}.admin-panel{padding:20px}}
@media(max-width:900px){.zcw-hero__grid{grid-template-columns:1fr}.zcw-hero__visual{min-height:0;margin-top:25px}.zcw-visual__frame{width:100%;height:460px}.world-art-credit{width:100%}.zcw-page .zcw-title{font-size:clamp(38px,7vw,68px)}.kb-aside{position:static}.admin-security-row{align-items:stretch}.admin-security-row input{width:100%;max-width:none}.tw-filters{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.site-header :is(.header-search,.account-entry,[data-account-link]){padding:10px;min-width:40px}.site-header .header-inner{gap:9px}.site-header .header-search span,.site-header .account-entry span{display:none}.site-header .brand{min-width:0;margin-right:auto}.site-header .brand__name{font-size:21px}.hero__title{font-size:clamp(35px,7vw,48px)}.project-card{min-height:540px;padding:24px}.project-card h3{font-size:38px}.project-card p{font-size:14px}.admin-panel{padding:18px}.admin-row{gap:16px}.admin-row>.admin-label{flex-basis:100%}.admin-user-ops{min-width:0}.admin-form-actions{gap:12px}.admin-form-actions>.admin-btn{flex:1 1 170px}.admin-record{padding:18px}.admin-security-row{padding:18px}.tw-filters{padding:18px;gap:16px}.tw-filter-actions{justify-content:stretch}.tw-filter-actions .tickets-button{flex:1}.tw-recruitment-link{justify-content:flex-start;margin-bottom:24px}.recruitment-admin-picker>.admin-btn,.kb-admin-top>.admin-btn{width:100%}.zcw-actions>.zcw-button{flex:1 1 210px}.zcw-visual__frame{height:440px}.zcw-lead{line-height:1.85}.kb-article{padding:22px}.kb-admin-meta{grid-template-columns:1fr}.kb-related-picker{padding:14px}:where(.admin-main,.account-stage,.tickets-stage,.auth-stage) :where(input,select,textarea){font-size:16px}.auth-card{padding-inline:20px}}
@media(max-width:480px){.site-header .header-inner{gap:7px}.site-header .brand__tagline{font-size:7px;letter-spacing:.12em}.site-header .brand__name{font-size:19px}.site-header :is(.header-search,.account-entry,[data-account-link]){padding:8px;min-width:36px}.hero-worlds{gap:14px}.hero-world{min-height:400px}.hero-world h2{font-size:28px}.hero-world--warhammer h2{font-size:24px}.tw-filters{grid-template-columns:1fr}.zcw-page .zcw-title{font-size:clamp(29px,8vw,38px)}.zcw-hero__container{padding-top:24px}.zcw-visual__frame{height:410px}.zcw-hero__visual::before{display:none}.zcw-button{padding:12px 15px}.auth-card{padding-inline:12px}.auth-challenge{margin-inline:-2px}.auth-challenge [data-turnstile]{min-width:0}.kb-reader{gap:24px}.kb-copy{width:100%}.admin-panel-title{font-size:18px}}
@media(forced-colors:active){select:not([multiple]):not([size]){appearance:auto;background-image:none}.hero-world,.project-card{border:1px solid CanvasText}.kb-related-option:has(input:checked){border:2px solid Highlight}}
@media(max-width:700px){.admin-main :is(input,select,textarea),.auth-form :is(input,select,textarea),.tickets-stage :is(input,select,textarea){font-size:16px}.project-card--warhammer h3{font-size:clamp(26px,7vw,38px)}}
@media(max-width:380px){.site-header .brand__name{font-size:16px}.site-header .brand__tagline{font-size:6px;letter-spacing:.08em}.site-header .header-inner{gap:6px}}
@media(prefers-reduced-motion:reduce){.hero-world img,.project-card__art img{transition:none}.hero-world:hover{transform:none}}
