:root{--ink:#19161b;--cream:#f7f1e7;--hot:#ff4fa3;--blue:#6258ff;--lime:#c8f36b}
*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font-family:Arial,sans-serif;font-size:16px;line-height:1.5}
header{height:88px;padding:0 5vw;border-bottom:1px solid #19161b26;display:flex;align-items:center;justify-content:space-between;gap:20px}
.brand{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none;font-size:26px;font-weight:800;letter-spacing:-1px}.brand img{width:150px;height:auto;display:block;object-fit:contain}.brand>span>span{color:var(--hot)}
.header-note,.eyebrow{font:700 12px/1.5 monospace;letter-spacing:1.5px}.header-note{font-size:13px}main{max-width:1340px;margin:auto;padding:38px 28px}.intro{margin-bottom:28px}.eyebrow{margin:0 0 12px}
h1{font-size:clamp(32px,4vw,50px);letter-spacing:-2px;line-height:1.08;margin:0 0 16px}h1 span{color:#c92171}.intro>p:last-child{color:#615a62;margin:0}
.workspace{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:30px;align-items:start}.controls,.summary{min-width:0}
button,input,select,textarea{font:inherit}button{cursor:pointer;min-height:46px;border-radius:8px;font-weight:700;padding:10px 16px;color:var(--ink)}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid var(--blue);outline-offset:3px}
#pricing-hint,.muted{font-size:14px;color:#615a62}#pricing-hint{margin:0 0 18px;line-height:1.7}
.combination{background:#fffaf3;border:1px solid #cfc6be;border-radius:18px;padding:22px;margin-bottom:18px}.row-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;gap:10px}.row-head h3{font-size:17px;margin:0}
.text-button{background:none;border:0;text-decoration:underline;font-size:14px;padding:8px}.combination-body{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:center;gap:18px}.fields{display:grid;gap:14px;min-width:0}.fields>label>input{max-width:120px}
label{display:block;font-size:14px;font-weight:700}input,select,textarea{display:block;width:100%;padding:11px 10px;border:1px solid #a79d98;background:white;border-radius:7px;margin-top:6px;min-height:46px;color:var(--ink)}textarea{resize:vertical}
.color-select{display:flex;align-items:center;gap:9px}.swatch{width:23px;height:23px;flex-shrink:0;border:1px solid #aaa;border-radius:50%}.color-select select{min-width:0}.custom-label{margin-top:10px;font-weight:400}.notes{margin:22px 0 10px}
.keychain-preview{margin:0;text-align:center;background:linear-gradient(145deg,#fff9f2,#f6eefa);border-radius:22px;padding:16px 6px}.keychain-preview svg{width:100%;height:auto;display:block;overflow:visible}.keychain-preview figcaption{font-size:13px;font-weight:700;margin:10px 8px}.preview-note{font-size:12px;color:#645a68;line-height:1.5;margin:10px 8px}
.row-status{margin-top:18px;padding-top:15px;border-top:1px solid #e1d8e1}.row-status p{font-size:14px;margin:9px 0 0;color:#615368}.outline{border:1px solid var(--ink);background:transparent}.primary{border:1px solid var(--ink);background:var(--ink);color:white;box-shadow:4px 4px 0 var(--hot)}
.summary{background:white;padding:28px;border:2px solid var(--ink);border-radius:18px;box-shadow:7px 7px 0 #d9d6ff}.summary h2{font-size:21px;line-height:1.3;margin:0 0 20px}.line-item{padding:15px 0;border-bottom:1px solid #e1dce0;overflow-wrap:anywhere}.line-item p{margin:7px 0}.tier{font-size:14px;font-weight:700;border-radius:7px;padding:5px 9px;background:#eee9f5;display:inline-block}.tier.wholesale{background:var(--lime)}
.fee,.totals>div{display:flex;justify-content:space-between;gap:12px;margin:15px 0}.fee{font-size:14px}.total{border-top:2px solid var(--ink);padding-top:16px;align-items:baseline}.total strong{font-size:32px;letter-spacing:-1px;overflow-wrap:anywhere}.muted{font-weight:400}.notice{padding:13px;background:#fff0cf;border-left:3px solid #9b5900;font-size:14px}.error{background:#fff0f4;border-color:#b72157}.saving{background:#eff8da;padding:12px;font-size:14px}.actions{display:flex;gap:12px;margin-top:24px;flex-wrap:wrap}.actions button{flex:1;white-space:nowrap}#copy-status{font-size:14px;margin-bottom:0}
.details{margin-top:38px;border-top:1px solid #cfc6be;padding-top:25px}.details h2{font-size:21px}.details ul{padding-left:22px;color:#514951}.details li{margin:8px 0}.footer{font-size:14px;color:#615a62;margin-top:30px}#print-quote{display:none}[hidden]{display:none!important}
@media(max-width:1050px){.workspace{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:24px}.combination-body{grid-template-columns:1fr}.keychain-preview{max-width:360px;margin:auto}.summary{padding:22px}}
@media(max-width:760px){header{height:76px;padding:0 20px}.header-note{display:none}main{padding:28px 18px}.workspace{grid-template-columns:1fr;gap:24px}.summary{box-shadow:5px 5px 0 #d9d6ff}.combination{padding:18px}.keychain-preview{width:100%;max-width:360px}.keychain-preview svg{min-width:0}.fields>label>input{max-width:none}}
@media print{body{background:white}body>header,main{display:none}#print-quote{display:block;white-space:pre-wrap;overflow-wrap:anywhere;font:12pt/1.5 Arial,sans-serif;color:black;margin:0}@page{margin:18mm}}
.design-select{margin-bottom:18px}.design-select select{max-width:260px}.add-actions{display:flex;gap:12px;flex-wrap:wrap}.design-fees{border-bottom:1px solid #ddd;padding:18px 0 4px}.design-fees h3{font-size:16px;margin:0}.wholesale-group{background:#eff8da;border-radius:10px;padding:16px;margin-top:16px;font-size:14px;overflow-wrap:anywhere}.wholesale-group p{margin:6px 0}
/* Each explanatory drawing stays left of its complete labeled control. */
.color-field{display:grid;grid-template-columns:64px minmax(0,1fr);gap:10px;align-items:center}.color-control{min-width:0}.selector-graphic{display:block;width:64px;height:70px}.selector-graphic svg{display:block;width:100%;height:100%}.color-control .color-select{gap:7px}.color-control .swatch{width:18px;height:18px}.color-control select{padding-left:7px;padding-right:3px}
@media(min-width:1051px){.combination-body{grid-template-columns:minmax(0,.85fr) minmax(0,1.4fr)}}
@media(max-width:760px){.color-field{grid-template-columns:50px minmax(0,1fr);gap:9px}.selector-graphic{width:50px;height:55px}.color-control select{font-size:16px}}
.quote-design-group{padding:0 0 12px}.quote-design-group+.quote-design-group{border-top:2px solid #c7bdc9;margin-top:12px;padding-top:24px}.quote-design-group h3{font-size:18px;margin:0 0 8px}.quote-design-group .line-item{border:0;padding:8px 0}.quote-design-group .line-item+.line-item{margin-top:10px}
.color-combo+.color-combo{border-top:1px solid #e1d8e1;margin-top:24px;padding-top:24px}.color-combo>.row-head h4{font-size:14px;letter-spacing:.4px;margin:0}.combination>.add-combo{margin-top:24px}.quote-design-group .line-item h4{font-size:14px;margin:4px 0 10px;letter-spacing:.3px}
.design-header{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:end;gap:14px}.design-header h3{font-size:17px;white-space:nowrap;margin:0 0 12px}.design-header input{min-width:0}.reference-control .upload-reference{margin-top:6px;min-height:46px;font-size:14px;padding:10px 12px}.reference-status:empty{display:none}.selected-reference{display:flex;align-items:center;gap:12px;margin-top:14px;font-size:14px;overflow-wrap:anywhere}.selected-reference>span{min-width:0;flex:1}.selected-reference small{display:block;color:#615a62;font-size:12px}.reference-thumbnail{width:54px;height:54px;object-fit:contain;background:white;border:1px solid #e1d8e1;border-radius:8px;flex-shrink:0}.reference-help{font-size:12px;line-height:1.5;color:#615a62;margin:12px 0 22px}.combination>.remove-design{display:block;margin:-12px 0 14px auto}.quote-reference{font-size:14px;overflow-wrap:anywhere;margin:6px 0 10px}
@media(max-width:1150px){.design-header{grid-template-columns:1fr 1fr}.design-header h3{grid-column:1/-1;margin:0}.design-description{grid-column:1/-1}.reference-control{grid-column:1/-1}}

.design-banner{background:var(--design-pastel);margin:-22px -22px 22px;padding:22px;border-radius:17px 17px 0 0;color:#302734}.design-banner .reference-help{color:#4b4050;margin-bottom:0}.design-banner>.remove-design{display:block;margin:12px 0 0 auto}.design-banner .upload-reference{background:#fffaf3}@media(max-width:760px){.design-banner{margin:-18px -18px 18px;padding:18px}}

.design-header{grid-template-columns:minmax(120px,.65fr) minmax(0,1.5fr) auto}.design-name input{font-size:17px;font-weight:700;width:100%;margin-top:6px}.design-name{min-width:0}@media(max-width:1150px){.design-header{grid-template-columns:1fr 1fr}.design-name{grid-column:1/-1}}

.quote-swatches{display:inline-flex;gap:4px;align-items:center;vertical-align:middle;margin-left:5px;white-space:nowrap}.quote-color-dot{display:inline-block;width:12px;height:12px;flex:0 0 12px;border:1px solid #00000026;border-radius:50%;box-sizing:border-box}

.shape-picker{border:0;padding:0;margin:0 0 24px;min-width:0}.shape-picker legend{font-size:14px;font-weight:700;margin-bottom:10px}.shape-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.shape-choice{position:relative;min-width:0}.shape-choice>input{position:absolute;opacity:0;width:1px;height:1px}.shape-choice>span{display:flex;align-items:center;flex-direction:column;gap:5px;text-align:center;border:1px solid #d9cdd9;border-radius:13px;padding:10px 4px;background:#fffaf8;height:100%;box-sizing:border-box;font-size:12px;cursor:pointer}.shape-choice svg{width:38px;height:38px;fill:#eadcf5;stroke:#967da8;stroke-width:3}.shape-choice input:checked+span{background:#f0e3fa;border:2px solid #9b79b4;padding:9px 3px}.shape-choice input:focus-visible+span{outline:3px solid #7f599b;outline-offset:2px}.shape-choice small{font-size:11px}.hook-options{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:12px;font-size:13px}.hook-options label{display:flex;align-items:center;gap:5px}.hook-options input{width:auto;margin:0}@media(max-width:400px){.shape-options{grid-template-columns:repeat(2,minmax(0,1fr))}}

#pricing-hint{background:#fffaf3;border:1px solid #e4d9e1;border-radius:16px;padding:18px 20px;margin-bottom:22px;line-height:1.5}.pricing-guide-title{display:block;color:#302734;font-size:15px;margin-bottom:10px}#pricing-hint ul{margin:0;padding-left:19px;display:grid;gap:10px}#pricing-hint li::marker{color:#c67caa}#pricing-hint li strong{display:block;color:#302734}#pricing-hint li span{display:block;font-size:13px;margin-top:2px}#pricing-hint p{margin:14px 0 0;padding-top:12px;border-top:1px solid #eadfe5;font-size:13px}#pricing-hint p strong{color:#302734}
.combination>.add-combo{background:#DCCCF8;border-color:#9475B0;color:#372445;box-shadow:0 3px 0 #BAA0D4}.combination>.add-combo:hover{background:#CEB5F2}.add-actions>#add-design{background:#F8C8DC;border-color:#C47799;color:#4C2337;box-shadow:0 3px 0 #E49DBD}.add-actions>#add-design:hover{background:#F4AFCC}.combination>.add-combo:active,.add-actions>#add-design:active{box-shadow:none;transform:translateY(2px)}

.submit-order{width:100%;margin-top:14px;background:#d32378;border-color:#a91b60;box-shadow:0 3px 0 #f2a6cb}.submit-order:hover{background:#b71c65}.order-contact{margin-top:18px;padding:16px;background:#fff4f9;border:1px solid #ebc8d9;border-radius:12px}.order-contact[hidden]{display:none}.order-contact label{display:block;margin:12px 0}.order-contact input{width:100%;box-sizing:border-box}.order-contact p{font-size:12px;line-height:1.5}#submit-status{font-size:13px;line-height:1.5}button:disabled{opacity:.6;cursor:wait}

/* Typography only: preserve existing geometry, colors and spacing. */
body{font-family:"Nunito",Arial,sans-serif;font-weight:400}h1,h2,h3,h4,.brand,.pricing-guide-title,.shape-picker legend,.shape-choice strong{font-family:"Fredoka","Nunito",sans-serif;font-weight:600;letter-spacing:normal}h1{font-weight:700;letter-spacing:-.5px;line-height:1.06}.color-combo>.row-head h4,.quote-design-group .line-item h4{letter-spacing:normal}label,.reference-control>label,.hook-options>strong{font-family:"Nunito",Arial,sans-serif;font-weight:600}input,select,textarea,.design-name input{font-family:"Nunito",Arial,sans-serif;font-weight:400}button{font-family:"Fredoka","Nunito",sans-serif;font-weight:600;letter-spacing:normal}.text-button{font-family:"Nunito",Arial,sans-serif;font-weight:600}.tier{font-family:"Nunito",Arial,sans-serif;font-weight:700}.shape-choice small,.preview-note,.muted,.reference-help{font-family:"Nunito",Arial,sans-serif;font-weight:400}.shape-choice strong{font-weight:600}.keychain-preview figcaption,#pricing-hint li strong,#pricing-hint p strong{font-weight:600}.totals strong,.line-item p strong,.fee strong,.saving strong{font-family:"Nunito",Arial,sans-serif;font-weight:700}.total strong{letter-spacing:normal}.intro>p strong{font-weight:600}

/* Desktop density pass: retain readable text and full-size form controls. */
@media(min-width:1024px){
 .combination{padding:16px;margin-bottom:16px}
 .design-banner{margin:-16px -16px 16px;padding:14px 16px}
 .design-header{grid-template-columns:minmax(110px,.7fr) minmax(150px,1.5fr) auto;gap:10px;align-items:end}
 .design-header .design-name,.design-header .design-description,.design-header .reference-control{grid-column:auto}
 .design-header input,.reference-control .upload-reference{margin-top:4px}
 .reference-control .upload-reference{padding:10px;font-size:13px}
 .design-banner .reference-help{font-size:11px;line-height:1.35;margin:8px 0 0}
 .design-banner>.remove-design{margin:4px 0 0 auto;padding:4px 8px;min-height:30px}
 .selected-reference{margin-top:8px;gap:8px}.reference-thumbnail{width:40px;height:40px}
 .shape-picker{margin-bottom:14px}.shape-picker legend{margin-bottom:7px}
 .shape-options{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
 .shape-choice>span{padding:6px 4px;gap:3px}.shape-choice input:checked+span{padding:5px 3px}
 .shape-choice svg{width:28px;height:28px}.hook-options{margin-top:8px;gap:12px}
 .row-head{margin-bottom:10px}.combination-body{grid-template-columns:minmax(0,.85fr) minmax(0,1.4fr);gap:14px}
 .fields{gap:8px}.color-field{gap:8px}
 .keychain-preview{padding:8px 5px;max-width:100%;width:100%}
 .keychain-preview svg{width:82%;margin:0 auto}
 .keychain-preview figcaption{font-size:12px;line-height:1.25;margin:5px 5px}
 .preview-note{font-size:11px;line-height:1.35;margin:5px 5px}
 .row-status{margin-top:10px;padding-top:9px}.row-status p{margin:5px 0;font-size:13px;line-height:1.4}
 .combination>.add-combo{margin-top:14px}.color-combo+.color-combo{margin-top:16px;padding-top:16px}
}

/* Compact integrated color selectors. */
.color-field{display:block;position:relative;min-width:0}
.color-field .selector-graphic{position:absolute;left:8px;top:30px;width:28px;height:28px;z-index:1;pointer-events:none}
.color-field .color-select{display:block}
.color-field .color-select>.swatch{display:none}
.color-field .color-select select{height:42px;min-height:42px;padding:8px 22px 8px 40px;margin-top:6px;width:100%;font-size:14px}
.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.fields>label>input{height:42px;min-height:42px;max-width:none;margin-top:6px;padding:8px 10px}
.fields label{font-size:13px;line-height:18px}
.fields .custom-label{margin-top:8px;line-height:1.4}
@media(min-width:1024px){
 .color-combo{display:grid;grid-template-columns:minmax(0,250px) minmax(0,1fr);column-gap:14px;align-items:start}
 .color-combo>.row-head{grid-column:2;grid-row:1;margin-bottom:6px;min-height:22px}
 .combination-body{display:contents}
 .combination-body>div:first-child{grid-column:1;grid-row:1 / span 2;width:100%;max-width:250px;justify-self:center;align-self:center}
 .fields{grid-column:2;grid-row:2;grid-template-columns:1fr;gap:7px;width:100%;align-items:start}
 .fields>label{order:4}.fields>label>input{max-width:90px}
 .color-combo>.row-status{grid-column:1/-1}
 .fields .color-control>label{white-space:nowrap}
}
@media(max-width:540px){.fields{grid-template-columns:1fr}.color-field .color-select select{font-size:16px;height:44px;min-height:44px}.fields>label>input{height:44px;min-height:44px}.color-field .selector-graphic{top:32px}}

/* Shared design indices occupy existing header/line space. */
.design-number{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-width:22px;height:22px;padding:0 4px;border:1px solid #d6b8d1;border-radius:8px;background:#fff;color:#302734;font:700 13px/1 "Nunito",Arial,sans-serif;box-sizing:border-box}
.design-banner{position:relative}
.design-banner>.design-number{position:absolute;top:-9px;left:4px}
.numbered-design-heading,.numbered-design-fee{display:flex;align-items:center;gap:7px}
.numbered-design-heading>.design-number{min-width:20px;height:20px;font-size:12px}
.numbered-design-fee>.design-number{min-width:18px;height:18px;font-size:11px;border-radius:6px}

/* Niblet3d pastel surface refresh — layout and generator behavior stay unchanged. */
:root{--ink:#403642;--cream:#FFF9F3;--hot:#E9428B;--blue:#8272B6;--lime:#CDECCF;--pink-bloom:#F8C8DC;--cloud-blue:#BFDFFB;--lavender-mist:#DCCCF8;--minty-green:#CDECCF;--mochi-yellow:#F8E8A6;--dream-beige:#E8D7C3;--misty-gray:#D8D8D8;--soft-border:rgba(64,54,66,.13)}
body{background:radial-gradient(circle at 8% 16%,rgba(248,200,220,.5),transparent 27rem),radial-gradient(circle at 94% 6%,rgba(220,204,248,.55),transparent 30rem),var(--cream);color:var(--ink)}
header{border-bottom-color:var(--soft-border);background:rgba(255,249,243,.84);backdrop-filter:blur(14px)}
.brand{color:#493E4C;font-weight:600;letter-spacing:-.3px}.brand img{border-radius:0;box-shadow:none}
.header-note,.eyebrow{font-family:"Fredoka","Nunito",sans-serif;font-weight:600;letter-spacing:.5px}.header-note{color:#766779}
h1{letter-spacing:-.4px;color:#493E4C}h1 span{color:var(--hot)}.intro>p:last-child,#pricing-hint,.muted{color:#695F6B}
button{border-radius:999px;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}button:hover{transform:translateY(-1px)}
input,select,textarea{border-color:#D8CDD7;border-radius:13px;background:#FFFEFC;color:var(--ink)}
.combination{background:rgba(255,254,252,.86);border-color:var(--soft-border);border-radius:26px;box-shadow:0 14px 34px rgba(91,73,99,.1)}
.design-banner{border-radius:23px 23px 0 0}.shape-choice>span{border-color:#DDD2DC;border-radius:17px;background:#FFFBF8}
.keychain-preview{background:linear-gradient(145deg,#FFF8F2,#F4EEFC);border:1px solid rgba(64,54,66,.08);border-radius:26px}
.outline{border-color:#A88EA6;background:rgba(255,255,255,.58)}
.primary{border-color:#514558;background:#514558;box-shadow:0 8px 18px rgba(87,66,92,.16),0 4px 0 var(--pink-bloom)}
.primary:hover{background:#635369;box-shadow:0 10px 22px rgba(87,66,92,.19),0 5px 0 var(--pink-bloom)}
.summary{background:rgba(255,254,252,.93);border:1px solid var(--soft-border);border-radius:26px;box-shadow:0 18px 42px rgba(91,73,99,.14),0 5px 0 var(--lavender-mist)}
.tier{border-radius:999px;background:#F0E9F6}.tier.wholesale,.wholesale-group,.saving{background:#E3F3E4}
.notice{border:1px solid #EAD79A;border-left-width:4px;border-radius:14px;background:#FFF8DA}.error{background:#FCE8F0;border-color:#E7AFC7}
#pricing-hint{background:rgba(255,254,252,.75);border-color:var(--soft-border);border-radius:20px}
.combination>.add-combo{background:var(--lavender-mist);border-color:#AA91C3;color:#493A53;box-shadow:0 4px 0 #C3ACDA}.add-actions>#add-design{background:var(--pink-bloom);border-color:#CC91AA;color:#543444;box-shadow:0 4px 0 #E7A8C4}
.submit-order{background:#D73D82;border-color:#BD2F70;box-shadow:0 7px 16px rgba(189,47,112,.15),0 4px 0 var(--pink-bloom)}
.order-contact{background:#FFF3F8;border-color:#EBC8D9;border-radius:18px}
.details{border-top-color:var(--soft-border)}
@media(max-width:760px){.summary{box-shadow:0 14px 32px rgba(91,73,99,.13),0 4px 0 var(--lavender-mist)}}

.shape-options{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(min-width:1024px){.shape-options{grid-template-columns:repeat(3,minmax(0,1fr))}}
