.biba40{--ink:#151515;--muted:#696969;--line:#deded9;--paper:#f7f7f4;--accent:#201f1d;color:var(--ink);font-family:inherit;max-width:1440px;margin:auto;container-type:inline-size}.biba40 *{box-sizing:border-box}.biba40 button,.biba40 input,.biba40 textarea{font:inherit}.biba40__intro{max-width:720px;margin:0 0 38px}.biba40__intro h2{font-size:clamp(38px,6vw,76px);letter-spacing:-.045em;line-height:.95;margin:10px 0 20px}.biba40__intro>p:last-child{color:var(--muted);font-size:18px;line-height:1.55}.biba40__eyebrow{font-size:12px!important;font-weight:750;letter-spacing:.15em;color:var(--muted);margin:0}.biba40__workspace{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(420px,.85fr);gap:42px;align-items:start}.biba40__viewer-wrap{position:sticky;top:24px;background:var(--paper);border-radius:18px;overflow:hidden}.biba40 model-viewer{display:block;width:100%;height:min(68vh,720px);min-height:520px}.biba40__explode{padding:0 24px 22px}.biba40__explode>div{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted)}.biba40__explode button,.biba40__text-button{background:none;border:0;padding:6px 0;text-decoration:underline;text-underline-offset:4px;cursor:pointer}.biba40__explode input{width:100%;accent-color:var(--ink)}.biba40__capture{position:fixed!important;left:-10000px!important;top:0!important;width:640px!important;height:640px!important;overflow:hidden!important;pointer-events:none!important}.biba40__capture model-viewer{width:640px;height:640px;min-height:0}.biba40__config-head,.biba40__group-head,.biba40__summary>div:first-child{display:flex;justify-content:space-between;align-items:flex-end;gap:20px}.biba40__config-head h3{font-size:32px;letter-spacing:-.03em;margin:5px 0 0}.biba40__config-head>div:last-child{display:flex;gap:16px}.biba40__group{border-top:1px solid var(--line);padding:24px 0;margin-top:24px}.biba40__group-head{margin-bottom:16px}.biba40__group-head strong{display:flex;gap:12px}.biba40__group-head i{font-style:normal;font-size:11px;color:var(--muted)}.biba40__group-head>span{color:var(--muted);font-size:13px;text-align:right}.biba40__choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}.biba40__choices button,.biba40__switches button{position:relative;text-align:left;border:1px solid var(--line);border-radius:10px;background:white;padding:16px;cursor:pointer;color:var(--ink)}.biba40__choices button.is-selected,.biba40__switches button.is-selected{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.biba40__choices button.is-selected:after,.biba40__switches button.is-selected:after{content:'✓';position:absolute;right:12px;top:10px}.biba40__choices b,.biba40__choices small,.biba40__choices em{display:block}.biba40__choices small{color:var(--muted);line-height:1.4;margin:8px 0 14px}.biba40__choices em{font-style:normal;font-size:12px;font-weight:700}.biba40__swatches{display:flex;flex-wrap:wrap;gap:12px}.biba40__swatches button{width:38px;height:38px;border:2px solid white;outline:1px solid var(--line);border-radius:50%;background:var(--swatch);cursor:pointer}.biba40__swatches button.is-selected{outline:2px solid var(--ink);outline-offset:2px}.biba40__swatches button.is-translucent{background:linear-gradient(135deg,#fff 0 44%,#bbb 45% 55%,#fff 56%)}.biba40__switches{display:grid;grid-template-columns:1fr 1fr;gap:10px}.biba40__switches button{display:flex;gap:12px;align-items:center;min-height:70px}.biba40__switches img{width:50px;height:50px;object-fit:contain}.biba40__switches b,.biba40__switches small{display:block;padding-right:18px}.biba40__switches small{color:var(--muted);margin-top:4px}.biba40__switches .is-preview{background:#fafaf8}.biba40__summary{background:var(--ink);color:white;border-radius:14px;padding:24px;margin-top:24px}.biba40__summary strong{font-size:34px}.biba40__summary p{color:#c8c8c8}.biba40__actions{display:grid!important;grid-template-columns:1fr 1fr;gap:10px}.biba40__actions button,.biba40__modal>button[type=submit]{border:1px solid white;border-radius:8px;padding:14px 16px;background:white;color:var(--ink);font-weight:750;cursor:pointer}.biba40__actions button+button{background:transparent;color:white}.biba40__actions button:disabled{opacity:.45;cursor:not-allowed}.biba40__summary a{color:white}.biba40__modal{position:relative;display:grid;gap:14px;min-width:min(520px,85vw)}.biba40 dialog{border:0;border-radius:14px;padding:28px;max-width:580px}.biba40 dialog::backdrop{background:#0009}.biba40__modal h3{font-size:28px;margin:0}.biba40__modal label{display:grid;gap:6px;font-size:13px;font-weight:650}.biba40__modal input,.biba40__modal textarea{border:1px solid #ccc;border-radius:7px;padding:10px}.biba40__modal textarea{min-height:75px}.biba40__modal>button[type=submit]{background:var(--ink);color:white}.biba40__close{position:absolute;right:-8px;top:-15px;border:0;background:none;font-size:28px;cursor:pointer}.biba40__hp{position:absolute!important;left:-9999px!important}.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:900px){.biba40__workspace{grid-template-columns:1fr}.biba40__viewer-wrap{position:relative;top:auto}.biba40 model-viewer{height:55vh;min-height:420px}}@media(max-width:560px){.biba40__choices,.biba40__switches,.biba40__actions{grid-template-columns:1fr}.biba40__group-head{align-items:flex-start}.biba40 model-viewer{height:430px;min-height:0}.biba40__config-head{align-items:flex-start;flex-direction:column}.biba40__workspace{gap:24px}}

.biba40__viewer-status{display:grid;place-items:center;width:100%;height:100%;color:var(--muted);font-size:13px;letter-spacing:.04em}
.biba40-configurator-page main>.wp-block-group:has(>.hostinger-ai-page-title){display:none!important}.biba40-configurator-page .entry-content.wp-block-post-content{margin-block-start:0!important}.biba40-configurator-page .biba40__intro{padding-top:28px}
.biba40__gallery-modal>.biba40__close{position:sticky;top:0;right:0;z-index:10;justify-self:end;display:grid;place-items:center;width:42px;height:42px;margin:0 0 -42px auto;padding:0;border:1px solid #d8d8d3;border-radius:50%;background:#fff;color:#151515;box-shadow:0 3px 14px #0002;font-size:27px;line-height:1;cursor:pointer}
@container (max-width:900px){.biba40__workspace{grid-template-columns:1fr}.biba40__viewer-wrap{position:relative;top:auto}.biba40 model-viewer{height:min(70vh,640px);min-height:440px}}

/* 1.0.2: let the working area escape narrow theme content columns while the
   heading remains aligned to the normal page content. */
.biba40__workspace{width:min(1400px,calc(100vw - 48px));position:relative;left:50%;transform:translateX(-50%);grid-template-columns:minmax(0,1.15fr) minmax(420px,.85fr)}
.biba40__viewer-wrap{position:sticky;top:24px;background:transparent;border-radius:0;overflow:visible}
.biba40__explode{padding:0 18px 22px}
@media(max-width:760px){.biba40__workspace{width:100%;left:auto;transform:none;grid-template-columns:1fr}.biba40__viewer-wrap{position:relative;top:auto}.biba40 model-viewer{height:55vh;min-height:400px}}

/* 1.0.3 desktop workspace: options scroll independently while the model
   stays in place. Mobile returns to ordinary page scrolling. */
@media(min-width:761px){.biba40__workspace{height:calc(100vh - 96px);min-height:680px}.biba40__viewer-wrap{position:relative;top:auto;height:100%}.biba40__viewer-wrap>#biba40-viewer{height:calc(100% - 62px);min-height:560px}.biba40__config{height:100%;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding-right:12px}.biba40__config::-webkit-scrollbar{width:7px}.biba40__config::-webkit-scrollbar-thumb{background:#c8c8c3;border-radius:10px}}
.biba40__switch-thumb{position:relative;flex:0 0 50px;width:50px;height:50px;display:block;filter:drop-shadow(0 4px 3px #0002)}.biba40__switch-thumb:before{content:'';position:absolute;left:7px;right:7px;top:7px;height:24px;border-radius:6px 6px 4px 4px;background:linear-gradient(135deg,color-mix(in srgb,var(--switch-top),white 25%),var(--switch-top));border:1px solid #0002}.biba40__switch-thumb:after{content:'';position:absolute;left:11px;right:11px;top:28px;height:15px;border-radius:2px 2px 5px 5px;background:var(--switch-bottom);box-shadow:-5px 7px 0 -4px #aaa,5px 7px 0 -4px #aaa}.biba40__switch-thumb i{position:absolute;z-index:1;left:20px;top:2px;width:11px;height:15px;border-radius:2px;background:color-mix(in srgb,var(--switch-top),white 45%);box-shadow:inset 0 0 0 1px #0002}
@media(max-width:760px){.biba40__workspace{height:auto;min-height:0}.biba40__config{height:auto;overflow:visible;padding-right:0}}

/* 1.0.4: account for the site header instead of sizing the workspace from the
   entire viewport. Preserve room for swatch outlines inside the scroll pane. */
@media(min-width:761px){.biba40__workspace{height:clamp(560px,calc(100vh - 300px),720px);min-height:0}.biba40__viewer-wrap>#biba40-viewer{height:calc(100% - 58px);min-height:0}.biba40__explode{height:58px;padding:0 22px 14px}.biba40__config{padding-left:8px;padding-right:14px}.biba40__group{margin-left:3px;margin-right:3px}}
@media(max-width:760px){.biba40__config{padding-left:0;padding-right:0}.biba40__group{margin-left:0;margin-right:0}}
.biba40__actions.is-quote{grid-template-columns:1fr!important}.biba40__actions [hidden]{display:none!important}
.biba40__choices button.is-unavailable,.biba40__choices button:disabled{opacity:.55;cursor:not-allowed;background:#fafaf8!important;border-color:#d8d8d3!important}.biba40__choices button.is-unavailable em{color:#8b2f2f}

/* Keep the capture WebGL canvas inside the rendered viewport. Browsers may
   cull or partially size canvases positioned thousands of pixels offscreen. */
.biba40__capture{position:fixed!important;left:0!important;top:0!important;width:640px!important;height:640px!important;opacity:.001!important;z-index:-2147483647!important;overflow:hidden!important;pointer-events:none!important;contain:strict!important}
.biba40__capture model-viewer{display:block!important;width:640px!important;height:640px!important;min-height:640px!important}

/* Animated assembled/exploded endpoint controls. */
.biba40__explode>div button{border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink);padding:7px 12px;text-decoration:none;font-size:12px;font-weight:700;line-height:1;transition:background-color .18s ease,color .18s ease,border-color .18s ease,transform .18s ease}
.biba40__explode>div button:hover{border-color:var(--ink);transform:translateY(-1px)}
.biba40__explode>div button:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.biba40__explode>div button.is-active{background:var(--ink);border-color:var(--ink);color:#fff}

/* Keycap inventory cards and product-photo gallery. */
.biba40__keycaps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.biba40__keycap-card{display:flex;flex-direction:column;min-width:0;border:1px solid #ddd;border-radius:12px;overflow:hidden;background:#fff}.biba40__keycap-card.is-selected{border:2px solid #151515}.biba40__keycap-choice{display:flex;align-items:center;gap:12px;width:100%;min-height:92px;padding:14px;border:0!important;background:transparent!important;color:inherit!important;text-align:left}.biba40__keycap-choice img{width:64px;height:64px;flex:0 0 64px;object-fit:cover;border-radius:8px}.biba40__keycap-choice span{display:flex;flex-direction:column;gap:5px;min-width:0}.biba40__keycap-choice b{font-size:16px;line-height:1.25}.biba40__keycap-choice small{font-size:14px;color:#655}.biba40__gallery-button{align-self:flex-start;margin:0 14px 14px;padding:0!important;border:0!important;background:transparent!important;color:#111!important;text-decoration:underline}.biba40 dialog#biba40-keycap-gallery{width:min(920px,calc(100vw - 40px));max-width:920px;padding:28px;overflow:hidden}.biba40__gallery-modal{width:100%;min-width:0;max-height:calc(90vh - 56px);overflow-x:hidden;overflow-y:auto;padding-right:4px}.biba40__gallery-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}.biba40__gallery-grid img{display:block;width:100%;height:300px;object-fit:contain;background:#f5f5f2;border-radius:10px}.biba40__keycap-card.is-selected .biba40__keycap-choice:after{content:'✓';align-self:flex-start;margin-left:auto;font-weight:700}@media(max-width:680px){.biba40__keycaps,.biba40__gallery-grid{grid-template-columns:1fr}.biba40__keycap-choice{min-height:82px}.biba40__keycap-choice img{width:54px;height:54px;flex-basis:54px}.biba40 dialog#biba40-keycap-gallery{width:calc(100vw - 24px);padding:20px}.biba40__gallery-grid img{height:auto;max-height:70vh}}
