/* FDS extension: GLB material previews and bindings. */
.ss-material-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:var(--fds-space-4,16px);margin-top:24px}.ss-material-card{padding:20px;display:flex;flex-direction:column;gap:10px}.ss-material-card h2,.ss-material-card p{margin:0}.ss-material-swatch{height:96px;border-radius:var(--fds-radius-md,8px);border:1px solid var(--fds-border);background-image:radial-gradient(circle at 35% 25%,#ffffff88,transparent 65%)}.ss-material-filters{display:flex;gap:12px;flex-wrap:wrap}.ss-material-filters>*{flex:1;min-width:140px}.ss-material-edit-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,.8fr);gap:24px}.ss-material-sheet{width:min(1100px,95vw);max-width:1100px}.ss-material-form{display:grid;gap:16px;min-width:0}.ss-material-preview{min-width:0;position:sticky;top:0}.ss-material-preview canvas{display:block;width:100%;height:260px}.ss-material-textures{display:grid;gap:16px}.ss-material-texture-thumb{width:80px;height:80px;object-fit:contain;border:1px solid var(--fds-border)}.ss-material-textures [data-texture-kind]{border-top:1px solid var(--fds-border);padding-top:12px}.ss-material-bindings{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;min-width:0}@media(max-width:768px){.ss-material-edit-layout{grid-template-columns:minmax(0,1fr)}.ss-material-preview{position:static}.ss-material-sheet{width:100%;max-width:100vw}.ss-material-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}@media(max-width:390px){.ss-material-grid{grid-template-columns:minmax(0,1fr)}}

.ss-material-form details[open]{display:grid;gap:16px}
.ss-material-tabs{display:flex;gap:12px;margin:0 0 24px;flex-wrap:wrap}.ss-material-tabs [aria-current=page]{border-color:var(--fds-primary);color:var(--fds-primary);background:var(--fds-primary-soft)}.ss-style-swatches{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.ss-style-swatches>div{display:grid;gap:8px;text-align:center}.ss-style-swatch{display:block;height:64px;border-radius:var(--fds-radius-md,8px);border:1px solid var(--fds-border)}.ss-style-unmapped{margin-top:24px;padding:20px}.ss-style-preview{min-height:260px;margin-top:16px}.ss-style-preview canvas{width:100%;height:300px}.ss-style-preview label{display:grid;gap:8px}

/* FDS extension: material samples, parameter cards and editing workspace. */
.ss-material-toolbar{padding:var(--fds-space-5);display:grid;gap:var(--fds-space-4)}
.ss-material-toolbar>p,.ss-material-toolbar>[role=status]{margin:0}
.ss-material-filters{display:grid;grid-template-columns:minmax(0,2fr) minmax(150px,1fr) minmax(150px,1fr);gap:var(--fds-space-4)}
.ss-material-filters>*{min-width:0}
.ss-material-filters label{display:grid;gap:var(--fds-space-2);font-size:var(--ssa-compact-font,.8125rem);color:var(--fds-text-secondary)}
.ss-material-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--fds-space-5);margin-top:var(--fds-space-5)}
.ss-material-card[data-material-id]{padding:0;gap:0;transition:border-color var(--fds-fast)}
.ss-material-card[data-material-id]:hover{border-color:var(--fds-border-strong)}
.ss-material-sample{position:relative;padding:var(--fds-space-4);background:var(--fds-bg-muted);border-bottom:1px solid var(--fds-border)}
.ss-material-swatch{height:144px;border-radius:var(--fds-radius-md);background-size:cover;background-position:center;background-image:none;border:1px solid var(--fds-border)}
.ss-material-sample>.fds-badge{position:absolute;top:24px;right:24px;border:1px solid var(--fds-border);background:var(--fds-bg-panel)}
.ss-material-card-body{padding:var(--fds-space-5);display:grid;gap:var(--fds-space-2);min-width:0}
.ss-material-card-body h2{font-size:1rem;line-height:1.45;overflow-wrap:anywhere}
.ss-material-id{font-size:.75rem;color:var(--fds-text-muted);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.ss-material-facts{display:grid;grid-template-columns:1.3fr 1fr 1fr;margin:var(--fds-space-3) 0;gap:var(--fds-space-2);padding:var(--fds-space-3);background:var(--fds-bg-page);border:1px solid var(--fds-border);border-radius:var(--fds-radius-md)}
.ss-material-facts dt{font-size:.75rem;color:var(--fds-text-secondary);margin-bottom:6px}.ss-material-facts dd{margin:0;font-size:.8125rem;font-weight:600;font-variant-numeric:tabular-nums}
.ss-material-usage{font-size:.8125rem;color:var(--fds-text-secondary)}
.ss-material-card-actions{display:flex;gap:var(--fds-space-2);padding-top:var(--fds-space-4);margin-top:var(--fds-space-2);border-top:1px solid var(--fds-border)}
.ss-material-card-actions>.fds-btn{flex:1;min-height:var(--ssa-compact-control,40px)}
.ss-material-tabs{gap:0;padding:4px;background:var(--fds-bg-muted);border:1px solid var(--fds-border);border-radius:var(--fds-radius-lg);width:fit-content}
.ss-material-tabs .fds-btn{border:0;background:transparent;color:var(--fds-text-secondary);min-width:120px}
.ss-material-tabs [aria-current=page]{background:var(--fds-bg-panel);color:var(--fds-action-primary);box-shadow:var(--fds-shadow-sm)}
.ss-material-sheet .ssa-sheet-body{padding:var(--fds-space-6)}
.ss-material-form{grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:var(--fds-space-4)}
.ss-material-form>details,.ss-material-form>.ss-material-textures,.ss-material-form>.ssa-check,.ss-material-form>p{grid-column:1/-1}
.ss-material-form .ss-carrier-field{display:grid;gap:8px;min-width:0;margin:0}
.ss-material-form input[type=color]{width:100%;padding:5px;min-height:var(--ssa-compact-control,40px)}
.ss-material-form details{padding:var(--fds-space-4);border:1px solid var(--fds-border);border-radius:var(--fds-radius-md);background:var(--fds-bg-page)}
.ss-material-form details[open]{grid-template-columns:repeat(2,minmax(0,1fr))}
.ss-material-form details>summary,.ss-material-form details>p{grid-column:1/-1}
.ss-material-textures{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--fds-space-4);padding:var(--fds-space-4);border:1px solid var(--fds-border);border-radius:var(--fds-radius-md)}
.ss-material-textures>h3,.ss-material-textures>p{grid-column:1/-1;margin:0}
.ss-material-textures [data-texture-kind]{display:grid;align-content:start;gap:12px;border:0;padding:0;min-width:0}
.ss-material-textures [data-texture-kind] h4{margin:0;font-size:.875rem}
.ss-material-texture-thumb{width:100%;height:100px;object-fit:contain;background:var(--fds-bg-page);border-radius:var(--fds-radius-md)}
.ss-material-preview-panel{position:sticky;top:0;align-self:start;border:1px solid var(--fds-border);border-radius:var(--fds-radius-lg);padding:var(--fds-space-5);background:var(--fds-bg-page);min-width:0}
.ss-material-preview-panel h3{margin:0 0 16px;font-size:.875rem}.ss-material-preview-panel>p{line-height:1.6;margin-bottom:0}
.ss-style-swatches{padding:12px;background:var(--fds-bg-muted);border-radius:var(--fds-radius-md)}
.ss-style-unmapped summary{cursor:pointer;font-weight:600}.ss-style-unmapped p{margin:12px 0 0}
@media(max-width:768px){.ss-material-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.ss-material-filters>label:first-child{grid-column:1/-1}.ss-material-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ss-material-sheet .ssa-sheet-body{padding:var(--fds-space-4)}.ss-material-preview-panel{position:static}}
@media(max-width:480px){.ss-material-grid{grid-template-columns:minmax(0,1fr)}.ss-material-form,.ss-material-form details[open],.ss-material-textures{grid-template-columns:minmax(0,1fr)}.ss-material-toolbar{padding:var(--fds-space-4)}.ss-material-filters{gap:12px}.ss-material-swatch{height:160px}}
@media(prefers-reduced-motion:reduce){.ss-material-card[data-material-id]{transition:none}}
.ss-material-form>label:has(textarea){grid-column:1/-1}.ss-material-form textarea{height:auto;min-height:96px;padding:12px;resize:vertical}

/* FDS extension: material style combinations and role assignments. */
.ss-material-card[data-style-id]{padding:0;gap:0;overflow:hidden}
.ss-style-sample{position:relative;padding:48px var(--fds-space-4) var(--fds-space-4);background:var(--fds-bg-muted);border-bottom:1px solid var(--fds-border)}
.ss-style-state{position:absolute;top:16px;right:16px;background:var(--fds-bg-panel);border:1px solid var(--fds-border)}
.ss-style-sample .ss-style-swatches{grid-template-columns:repeat(4,minmax(0,1fr));padding:0;gap:8px}
.ss-style-swatch{height:80px;background-size:cover;background-position:center}
.ss-style-swatch-default{background:var(--fds-bg-panel);border-style:dashed}
.ss-style-swatches small{font-size:.75rem;color:var(--fds-text-secondary)}
.ss-style-material-name{font-size:.8125rem;font-weight:600;line-height:1.4;overflow-wrap:anywhere}
.ss-style-description{font-size:.875rem;color:var(--fds-text-secondary);line-height:1.6;min-height:2.8em}
.ss-style-description:empty{display:none}
.ss-style-coverage{margin-top:8px!important;padding:12px;background:var(--fds-bg-page);border:1px solid var(--fds-border);border-radius:var(--fds-radius-md);font-size:.8125rem;color:var(--fds-text-secondary)}
.ss-style-filters{grid-template-columns:minmax(0,2fr) minmax(150px,1fr)}
.ss-style-preview{margin-top:16px;min-width:0}.ss-style-preview canvas{display:block;max-width:100%}
.ss-material-preview-panel>.ss-carrier-field{display:grid;gap:8px;font-size:.8125rem;color:var(--fds-text-secondary)}
@media(max-width:480px){.ss-style-filters{grid-template-columns:minmax(0,1fr)}}

/* FDS extension: physical material controls and sample-scale calibration. */
.ss-material-size-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--fds-space-3)}
.ss-material-size-fields>p{grid-column:1/-1;margin:0}
.ss-material-transform{grid-column:1/-1;display:grid;gap:var(--fds-space-3);border-block:1px solid var(--fds-border);padding-block:var(--fds-space-4)}
.ss-material-transform h3{margin:0;font-size:1rem}
.ss-material-preview-tools{display:flex;flex-wrap:wrap;gap:var(--fds-space-2);margin-bottom:var(--fds-space-3)}
.ss-material-preview-tools [aria-pressed=true]{border-color:var(--fds-primary);color:var(--fds-primary);background:var(--fds-primary-soft)}
.ss-material-size-fields input{min-width:0;width:100%}
.ss-slot details{grid-column:1/-1;min-width:0}
.ss-material-textures a{display:block;margin-block:var(--fds-space-2);overflow-wrap:anywhere}
@media(max-width:390px){.ss-material-size-fields{grid-template-columns:minmax(0,1fr)}}

/* FDS extension: optical starting points remain separate from sample calibration. */
.ss-material-optics{grid-column:1/-1;padding-block:var(--fds-space-3);border-block:1px solid var(--fds-border);min-width:0}
.ss-material-optics h3{margin:0 0 var(--fds-space-3);font-size:1rem}
.ss-material-optics-preset{display:flex;flex-wrap:wrap;align-items:end;gap:var(--fds-space-3)}
.ss-material-optics-preset>label{flex:1;min-width:min(100%,180px)}
.ss-material-optics-preset>button{flex-shrink:0}

/* FDS extension: read-only FSM source classification and studio sample cards. */
.ss-fsm-material-categories{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}
.ss-fsm-material-categories [aria-pressed="true"]{background:var(--fds-action-primary);color:var(--fds-text-inverse)}
.ss-fsm-material-groups{display:grid;gap:24px}
.ss-fsm-material-group-title{font-size:16px;margin:0 0 12px}
.ss-fsm-material-open:focus-visible{outline:2px solid var(--fds-action-primary);outline-offset:-3px}
.ss-fsm-material-tags{display:inline-block;padding:3px 8px;border-radius:var(--fds-radius-sm);background:var(--fds-bg-muted);font-size:12px}
.ss-fsm-material-sheet.ssa-sheet{width:min(1000px,100vw);max-width:100vw}
.ss-fsm-material-detail{display:grid;grid-template-columns:minmax(0,2fr) minmax(180px,1fr);gap:24px}
.ss-fsm-material-detail>*{min-width:0;overflow-wrap:anywhere}
.ss-fsm-material-detail canvas{display:block;width:100%;max-width:100%}
.ss-fsm-sample-error{min-height:120px}
@media(max-width:640px){.ss-fsm-material-detail{grid-template-columns:1fr}.ss-fsm-material-categories .fds-btn{min-height:var(--ssa-control)}.ss-fsm-material-groups .ss-material-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

.ss-fsm-material-detail .ss-material-preview-tools [aria-pressed=true]{border-color:var(--fds-action-primary);color:var(--fds-text-inverse);background:var(--fds-action-primary)}

.ss-fsm-material-sheet .ssa-sheet-body{overflow-y:auto;padding:var(--fds-space-5);align-content:start}

/* FDS extension: owner-provided material reference card layout. */
.ss-fsm-material-groups{display:grid;gap:28px;--ss-fsm-link:#3269bf}
.ss-fsm-material-group-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.ss-fsm-material-group-head .ss-fsm-material-group-title{font-size:14px;font-weight:600;line-height:1.4;margin:0}
.ss-fsm-material-group-count{font-size:12px;color:var(--fds-text-secondary)}
.ss-fsm-material-groups .ss-material-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch;gap:18px;margin:0}
.ss-fsm-material-groups .ss-material-card{display:flex;flex-direction:column;min-width:0;overflow:hidden;align-self:stretch;padding:0;gap:0;border:1px solid var(--fds-border);border-radius:9px;background:var(--fds-bg-panel)}
.ss-fsm-material-groups .ss-fsm-material-open{position:relative;appearance:none;display:block;width:100%;height:180px;min-height:0;margin:0;padding:0;border:0;border-bottom:1px solid var(--fds-border);border-radius:0;background:var(--fds-bg-muted);color:var(--fds-text-primary);font:inherit;text-align:start;cursor:zoom-in;overflow:hidden}
.ss-fsm-material-groups .ss-fsm-material-sample{display:block;width:100%;height:100%;object-fit:cover}
.ss-fsm-material-groups .ss-fsm-material-tags{position:absolute;top:10px;left:10px;display:inline-block;padding:4px 7px;border:0;border-radius:6px;background:rgb(255 255 255 / .91);color:var(--fds-text-primary);font-size:11px;line-height:1.5}
.ss-fsm-material-off{position:absolute;top:10px;right:10px;background:rgb(255 255 255 / .91);padding:4px 6px;border-radius:4px;font-size:11px;line-height:1.5}
.ss-fsm-material-groups .ss-material-card-body{flex:1;display:flex;flex-direction:column;align-items:stretch;gap:7px;min-width:0;padding:15px 16px 14px}
.ss-fsm-material-groups .ss-fsm-material-card-name{display:block;margin:0;padding:0;min-height:0;font-size:14px;line-height:1.4;font-weight:600;overflow-wrap:anywhere}
.ss-fsm-material-groups .ss-fsm-material-code{font-size:11px;line-height:1.5;color:var(--fds-text-muted);overflow-wrap:anywhere;max-width:100%;margin:0}
.ss-fsm-material-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:5px}
.ss-fsm-material-footer>span{font-size:11px;color:var(--fds-text-secondary);line-height:1.5}
.ss-fsm-material-view{appearance:none;flex:none;border:0;background:none;color:var(--ss-fsm-link);font:inherit;font-size:12px;line-height:1.5;padding:5px 0;cursor:pointer}
.ss-fsm-material-view:focus-visible{outline:2px solid var(--fds-action-primary);outline-offset:3px}
.ss-material-card.is-disabled .ss-material-card-body{opacity:.62}
@media(max-width:1100px){.ss-fsm-material-groups .ss-material-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.ss-fsm-material-groups .ss-material-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.ss-fsm-material-groups .ss-fsm-material-open{height:160px}.ss-fsm-material-groups .ss-material-card-body{padding:12px}.ss-fsm-material-view{min-height:44px}}
@media(max-width:380px){.ss-fsm-material-groups .ss-material-grid{grid-template-columns:minmax(0,1fr)}}

/* FDS extension: UV calibration keeps direct typing and range adjustment together. */
.ss-uv-slider{display:block;min-height:var(--ssa-control,44px);width:100%;min-width:0;margin:0;box-sizing:border-box;accent-color:var(--fds-action-primary)}
.ss-slot .ss-uv-warning{color:var(--fds-amber-700);background:var(--fds-amber-50)}
.ss-material-size-fields>.ss-carrier-field{display:grid;min-width:0;gap:var(--fds-space-1)}
