/*
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Bone Flow Formal Style Header
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Component ID : 035
File         : bone-switch.css
Version      : 1.0.6
Status       : Development
Standard     : Bone Flow Development Standard v1.0
Description  : Bone Switch本体および正式テストページ用スタイル。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
*/
:root{color-scheme:dark;--bf-bg:#0b111b;--bf-panel:#111a27;--bf-panel2:#162234;--bf-line:#31425a;--bf-text:#eaf2ff;--bf-sub:#9eafc4;--bf-accent:#5ba6ff;--bf-ok:#55e6a5;--bf-warn:#ffc857;--bf-error:#ff7b8a}
*{box-sizing:border-box}body{margin:0;background:var(--bf-bg);color:var(--bf-text);font-family:Meiryo,"Yu Gothic",system-ui,sans-serif}.bf-page{width:min(1280px,calc(100% - 32px));margin:0 auto;padding:24px 0 56px}.bf-header{margin-bottom:18px}.bf-header h1{margin:0;font-size:30px}.bf-header p{margin:6px 0;color:var(--bf-sub)}.bf-badges{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.bf-badge{padding:5px 9px;border:1px solid var(--bf-line);border-radius:999px;background:#0f1724;font-size:12px}.bf-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.bf-card{min-width:0;padding:16px;border:1px solid var(--bf-line);border-radius:12px;background:var(--bf-panel)}.bf-card--wide{grid-column:1/-1}.bf-card h2,.bf-card h3{margin:0 0 10px}.bf-card p{color:var(--bf-sub)}.bf-property-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.bf-field{display:grid;gap:6px}.bf-field label{font-size:13px;color:#c8d5e7}.bf-field input[type="text"],.bf-field input[type="number"],.bf-field select{width:100%;padding:9px 10px;border:1px solid #50627d;border-radius:8px;background:#0c1420;color:var(--bf-text)}.bf-check{display:flex;align-items:center;gap:8px}.bf-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}button{padding:9px 13px;border:1px solid #4f6f9c;border-radius:8px;background:#17304f;color:#eef6ff;cursor:pointer}button:hover{background:#21456e}button:disabled{opacity:.45;cursor:not-allowed}.is-danger{border-color:#7d3544;background:#3a1f28}.bone-switch{display:grid;gap:6px;width:100%;min-width:0}.bone-switch__input{width:100%;min-width:0;padding:10px 12px;border:1px solid #64748b;border-radius:8px;background:#0c1420;color:#eef6ff;font:inherit;outline:none;transition:border-color .12s,box-shadow .12s,background .12s}.bone-switch__input::placeholder{color:#71839c}.bone-switch.is-focused .bone-switch__input{box-shadow:none}.bone-switch.is-invalid .bone-switch__input{border-color:var(--bf-error);box-shadow:0 0 0 3px rgba(255,123,138,.12)}.bone-switch.is-readonly .bone-switch__input{background:#141d2a}.bone-switch.is-disabled .bone-switch__input{opacity:.55}.bone-switch.is-dirty .bone-switch__input{border-style:dashed}.bone-switch__feedback{min-height:18px;font-size:12px;color:var(--bf-sub)}.bone-switch__feedback[data-level="error"]{color:var(--bf-error)}.bone-switch__feedback[data-level="warning"]{color:var(--bf-warn)}.bone-switch__feedback[data-level="success"]{color:var(--bf-ok)}.bf-preview-stage{display:grid;gap:14px;padding:18px;border:1px dashed #52637b;border-radius:10px;background:#0c1420}.bf-state-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.bf-state{padding:8px;border:1px solid var(--bf-line);border-radius:8px;background:#0e1825}.bf-state span{display:block;color:var(--bf-sub);font-size:11px}.bf-state strong{display:block;margin-top:3px;overflow-wrap:anywhere}.bf-flow{display:grid;grid-template-columns:1fr auto 1.2fr auto 1fr;align-items:center;gap:10px;padding:18px;border:1px solid var(--bf-line);border-radius:10px;background:#0c1420}.bf-node{min-height:72px;padding:10px;border:1px solid #50627d;border-radius:8px;background:#172337;display:grid;place-items:center;text-align:center}.bf-arrow{font-size:28px;color:var(--bf-accent)}.bf-code{margin:0;max-height:320px;overflow:auto;padding:12px;border:1px solid var(--bf-line);border-radius:8px;background:#09101a;color:#cfe1fa;white-space:pre-wrap;word-break:break-word}.bf-test-summary{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.bf-test-summary strong{font-size:20px}.bf-pass{color:var(--bf-ok)}.bf-fail{color:var(--bf-error)}.bf-pending{color:var(--bf-warn)}.bf-test-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}.bf-test-list li{display:grid;grid-template-columns:72px 1fr;gap:8px;padding:7px 9px;border:1px solid #29384e;border-radius:7px;background:#0d1623}.bf-console{min-height:120px;max-height:260px;overflow:auto;padding:10px;border:1px solid var(--bf-line);border-radius:8px;background:#080e16;font-family:Consolas,monospace;font-size:12px;white-space:pre-wrap}.bf-completion{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.bf-completion>div{padding:9px;border:1px solid var(--bf-line);border-radius:8px;background:#0d1623}.bf-completion span{display:block;color:var(--bf-sub);font-size:11px}.bf-completion strong{display:block;margin-top:3px}.bf-dependencies{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}.bf-dependency{padding:10px;border:1px solid var(--bf-line);border-radius:8px;background:#0f1724}.bf-dependency b{display:block}.bf-dependency span{color:var(--bf-sub);font-size:12px}@media(max-width:860px){.bf-grid,.bf-property-grid{grid-template-columns:1fr}.bf-card--wide{grid-column:auto}.bf-flow{grid-template-columns:1fr}.bf-arrow{transform:rotate(90deg);justify-self:center}.bf-state-row,.bf-completion,.bf-dependencies{grid-template-columns:1fr 1fr}}@media(max-width:520px){.bf-page{width:min(100% - 20px,1280px);padding-top:14px}.bf-state-row,.bf-completion,.bf-dependencies{grid-template-columns:1fr}.bf-header h1{font-size:24px}}


/* Untrusted IN / Joint WAIT-BLOCK integration */
.bone-switch[data-security-state="rejected"] .bone-switch__input{border-color:#ff7b8a;background:#21131a}
.bone-switch.is-waiting .bone-switch__input{border-color:#d5a733;box-shadow:0 0 0 3px rgba(255,200,87,.11)}
.bone-switch.is-blocked .bone-switch__input{border-color:#eb5055;box-shadow:0 0 0 3px rgba(235,80,85,.14)}
.bf-security-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.bf-security-result{margin-top:10px;padding:10px;border:1px solid var(--bf-line);border-radius:8px;background:#0b1421;min-height:72px;white-space:pre-wrap;overflow-wrap:anywhere}
.bf-delivery-stage{position:relative;height:190px;margin-top:12px;border:1px solid #35435a;border-radius:10px;background:#0a1019;overflow:hidden}.bf-delivery-stage .bf-svg{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}.bf-delivery-stage .bf-delivery-overlay{z-index:7;overflow:visible}.bf-delivery-node{position:absolute;z-index:3;top:62px;width:160px;padding:12px 10px;border:1px solid #4c6584;border-radius:8px;background:#172235;color:#f5f8fc;text-align:center}.bf-delivery-node--source{left:5%}.bf-delivery-node--target{right:5%}.bf-delivery-node small{display:block;margin-top:4px;color:#aeb9c9}.bf-delivery-status{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px}.bf-delivery-pill{display:inline-flex;padding:5px 10px;border:1px solid #425a78;border-radius:999px;font-weight:800}.bf-delivery-pill.is-ready{color:#67efb1;background:#123a31}.bf-delivery-pill.is-waiting{color:#ffd166;background:#352b12}.bf-delivery-pill.is-blocked{color:#ff8a98;background:#3c171d}.bf-visual-confirm{display:flex;align-items:flex-start;gap:8px;margin-top:10px;padding:10px 12px;border:1px solid #425a78;border-radius:8px;background:#111722}.bf-visual-confirm.is-confirmed{border-color:#3b936b;background:#123126}.bf-target-log{max-height:130px;overflow:auto;margin-top:8px;padding:8px;border:1px solid #29384e;border-radius:7px;background:#080e16;font-family:Consolas,monospace;font-size:12px;white-space:pre-wrap}.bf-complete-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px}
@media(max-width:860px){.bf-security-grid{grid-template-columns:1fr 1fr}}@media(max-width:620px){.bf-security-grid{grid-template-columns:1fr}.bf-delivery-node{width:116px;font-size:.78rem}.bf-delivery-node--source{left:3%}.bf-delivery-node--target{right:3%}}


/* Connection image / bilingual Property / QA visibility */
.bf-language-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px;padding:9px 10px;border:1px solid var(--bf-line);border-radius:8px;background:#0d1623}.bf-language-toolbar strong{margin-right:4px}.bf-language-button.is-active{border-color:#68d6ff;background:#1d4664;box-shadow:0 0 0 2px rgba(104,214,255,.14) inset}
.bf-connection-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.bf-connection-card{min-width:0;padding:12px;border:1px solid #35435a;border-radius:10px;background:#0d1623}.bf-connection-card--wide{grid-column:1/-1}.bf-connection-card h3{margin:0 0 4px;font-size:1rem}.bf-connection-card>p{margin:0 0 8px;font-size:.82rem}.bf-connection-stage{position:relative;isolation:isolate;height:150px;overflow:hidden;border:1px solid #2f4057;border-radius:8px;background:#09111c}.bf-connection-stage .bf-svg{position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none;overflow:hidden}.bf-connection-node{position:absolute;z-index:2;top:48px;width:clamp(88px,24%,132px);min-height:54px;display:grid;place-items:center;padding:8px;border:1px solid #50627d;border-radius:8px;background:#172337;text-align:center}.bf-connection-node strong{display:block}.bf-connection-node small{display:block;margin-top:3px;color:#9fb4cc}.bf-connection-node--source{left:2%}.bf-connection-node--target{right:2%}.bf-connection-node--switch{left:50%;transform:translateX(-50%);border-color:#5985b7}.bf-connection-node.is-missing{border-style:dashed;border-color:#a74a59;background:#281a20;color:#ff9ba5}.bf-connection-diagnostics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 10px;margin-top:8px;font-size:.76rem}.bf-connection-diagnostics span{display:flex;justify-content:space-between;gap:8px;padding:3px 0;border-bottom:1px solid #213047}.bf-connection-diagnostics b{overflow-wrap:anywhere}.bf-connection-diagnostics .is-ok{color:#55e6a5}.bf-connection-diagnostics .is-error{color:#ff7b8a}.bf-connection-diagnostics .is-warn{color:#ffc857}
.bf-qa-toolbar{display:flex;align-items:center;gap:8px 12px;flex-wrap:wrap;padding:12px;border:1px solid #36516f;border-radius:9px;background:#0c1725}.bf-qa-stat{display:inline-flex;align-items:center;gap:7px;padding:5px 9px;border:1px solid #2e425c;border-radius:999px;background:#0a1320}.bf-qa-stat span{color:#9eafc4}.bf-test-meta{margin:-2px 0 10px;color:#9eafc4;font-size:.78rem}.bf-test-list li{min-height:42px;align-items:start}.bf-test-list li span{overflow-wrap:anywhere}.bf-card--qa{grid-column:1/-1}.bf-visual-status{margin-top:8px;color:#9eafc4;font-size:.8rem}
/* Make delivery geometry explicit instead of inheriting mutable Joint display options. */
.bf-delivery-stage .bf-svg{z-index:2}.bf-delivery-stage .bf-delivery-overlay{z-index:7;overflow:visible}.bf-delivery-stage .bf-joint-path{filter:drop-shadow(0 0 3px rgba(91,166,255,.25))}
@media(max-width:860px){.bf-connection-grid{grid-template-columns:1fr}.bf-connection-card--wide{grid-column:auto}.bf-connection-diagnostics{grid-template-columns:1fr}}
@media(max-width:620px){.bf-connection-stage{height:170px}.bf-connection-node{top:58px;width:32%;font-size:.76rem;padding:7px 5px}}

/* Formal Joint visual parity */
.bone-label-test-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.bone-label-overall-summary{display:grid;grid-template-columns:minmax(145px,1.2fr) repeat(6,minmax(100px,1fr));align-items:center;margin:0 0 18px;border:1px solid #33445c;border-radius:8px;background:#0e1724;overflow:hidden}.bone-label-overall-summary>div{display:grid;gap:4px;place-items:center;min-height:66px;padding:8px 12px;border-left:1px solid #33445c;text-align:center}.bone-label-overall-summary>div span{font-size:.78rem;color:#98a9bf}.bone-label-overall-summary>div strong{font-size:1rem;color:#eef4ff}.bone-label-overall-summary .bf-overall{display:grid;place-items:center;min-height:42px;margin:12px;border-radius:6px;background:#172438;font-size:1.1rem;font-weight:800}.bone-label-result-section{margin-top:15px;border:1px solid #30425b;border-radius:8px;background:#0c1522;overflow:hidden}.bone-label-result-section>h3{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0;padding:9px 14px;border-bottom:1px solid #305798;background:linear-gradient(90deg,#123f87,#174f9b);color:#fff;font-size:1.08rem}.bone-label-result-badge{display:inline-flex;align-items:center;justify-content:center;min-width:88px;padding:4px 11px;border:1px solid currentColor;border-radius:999px;background:#172438;font-size:.76rem;font-weight:800}.bone-label-result-badge.is-not-run{color:#aebbd0}.bone-label-result-badge.is-pass{color:#67efb1;background:#123a31}.bone-label-result-badge.is-fail{color:#ff7d8d;background:#421d27}.bone-label-validation-list{display:grid;gap:7px;padding:12px 14px}.bone-label-validation-list--columns{grid-template-columns:repeat(2,minmax(0,1fr))}.bone-label-validation-row{display:grid;grid-template-columns:28px 58px minmax(0,1fr);gap:10px;align-items:start;padding:10px 12px;border:1px solid #2c3a50;border-radius:7px;background:#111b2a}.bone-label-validation-row.is-fail{border-color:#7a3844;background:#21151d}.bone-label-validation-number{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#203049;color:#cfe1f8;font-weight:700}.bone-label-validation-detail{display:grid;gap:3px}.bone-label-validation-name{font-weight:700}.bone-label-validation-reason{font-size:.9rem;color:#aebbd0}.bf-connection-stage .bf-joint-flow-indicator,.bf-delivery-stage .bf-joint-flow-indicator{z-index:6}.bf-connection-stage .bf-joint-direction-marker,.bf-delivery-stage .bf-joint-direction-marker{display:block}.bf-connection-stage .bf-svg,.bf-delivery-stage .bf-svg{overflow:visible}@media(max-width:900px){.bone-label-overall-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.bone-label-validation-list--columns{grid-template-columns:1fr}}


/* Theme / layout / Parent Dependency / Active border effects */
.bone-switch{--bsw-text:#eef6ff;--bsw-placeholder:#71839c;--bsw-border:#64748b;--bsw-accent:#5ba6ff;--bsw-focus-glow:rgba(91,166,255,.18);--bsw-effect-color:var(--bsw-accent);--bsw-effect-duration:1.2s;--bone-switch-background:#0c1420;position:relative;min-width:0;max-width:100%}
.bone-switch[data-theme="dark"]{--bsw-text:#f1f6ff;--bsw-placeholder:#7f91aa;--bsw-border:#52657f;--bsw-accent:#68d6ff;--bsw-focus-glow:rgba(104,214,255,.20)}
.bone-switch[data-theme="light"]{--bsw-text:#172033;--bsw-placeholder:#6b7280;--bsw-border:#8996a8;--bsw-accent:#2457d6;--bsw-focus-glow:rgba(36,87,214,.17)}
.bone-switch[data-theme="neon"]{--bsw-text:#e9fdff;--bsw-placeholder:#69a7b5;--bsw-border:#1c8ca2;--bsw-accent:#35f4ff;--bsw-focus-glow:rgba(53,244,255,.25);filter:drop-shadow(0 0 5px rgba(53,244,255,.10))}
.bone-switch__control{position:relative;width:100%;height:var(--bsw-control-height,44px);min-width:0;border-radius:inherit}
.bone-switch__input{position:relative;z-index:1;width:100%;height:100%;min-width:0;padding:10px 12px;color:var(--bsw-text);border-color:var(--bsw-border);background:var(--bone-switch-background);transition:border-color .12s,box-shadow .12s,background .12s,color .12s,border-radius .12s;font:inherit;outline:none}
.bone-switch__input::placeholder{color:var(--bsw-placeholder)}
.bone-switch__active-border{position:absolute;z-index:2;inset:-2px;display:block;border-radius:10px;pointer-events:none;opacity:0}
.bone-switch[data-inherit-parent="false"][data-position="top-left"]{justify-self:start;align-self:start}.bone-switch[data-inherit-parent="false"][data-position="top-center"]{justify-self:center;align-self:start}.bone-switch[data-inherit-parent="false"][data-position="top-right"]{justify-self:end;align-self:start}.bone-switch[data-inherit-parent="false"][data-position="middle-left"]{justify-self:start;align-self:center}.bone-switch[data-inherit-parent="false"][data-position="center"]{justify-self:center;align-self:center}.bone-switch[data-inherit-parent="false"][data-position="middle-right"]{justify-self:end;align-self:center}.bone-switch[data-inherit-parent="false"][data-position="bottom-left"]{justify-self:start;align-self:end}.bone-switch[data-inherit-parent="false"][data-position="bottom-center"]{justify-self:center;align-self:end}.bone-switch[data-inherit-parent="false"][data-position="bottom-right"]{justify-self:end;align-self:end}
.bone-switch.is-readonly .bone-switch__input{filter:saturate(.78)}
/* Parent Dependency: 単体の幅/高さ/位置/背景/通常枠を描画上無視。 */
.bone-switch[data-inherit-parent="true"]{width:100%!important;height:100%;max-width:none;justify-self:stretch!important;align-self:stretch!important;color:var(--bsw-parent-text,inherit);border:0!important;border-radius:var(--bsw-parent-radius,inherit)}.bone-switch[data-inherit-parent="true"] .bone-switch__control{width:100%;height:100%;border:0!important;border-radius:var(--bsw-parent-radius,inherit)}.bone-switch[data-inherit-parent="true"] .bone-switch__active-border{border-radius:var(--bsw-parent-radius,inherit)}.bone-switch[data-inherit-parent="true"] .bone-switch__feedback{position:absolute;top:100%;left:0;right:0;z-index:9}
#switch-host{display:grid;position:relative;width:100%;min-height:140px;padding:12px;border:1px dashed #435872;border-radius:10px;background:#162234;color:#eaf2ff;overflow:visible}#switch-host[data-parent-dependent="true"]{padding:0}#switch-host[data-preview-theme="dark"]{background:#0b1420;color:#f1f6ff}#switch-host[data-preview-theme="light"]{background:#f4f7fb;color:#172033;border-color:#a9b7c8}#switch-host[data-preview-theme="default"]{background:#162234;color:#eaf2ff}#switch-host[data-preview-theme="neon"]{background:#06131d;color:#e9fdff;border-color:#35f4ff;box-shadow:0 0 16px rgba(53,244,255,.18)}
.bf-parent-preview{border:2px solid #6a8ab6;border-radius:14px;background:#26354a;color:#f3d36a}.bf-parent-note{margin-top:6px;font-size:.78rem;color:var(--bf-sub)}.bf-parent-settings,.bf-self-settings,.bf-effect-settings{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:11px;border:1px solid #31425a;border-radius:9px;background:#0d1623}.bf-property-group-title{grid-column:1/-1;margin:0;color:#cfe1f7;font-size:.9rem}.bf-property-group-note{grid-column:1/-1;margin:0;color:#90a5be;font-size:.76rem}.bf-field.is-ignored,.bf-check.is-ignored{opacity:.42}.bf-field.is-ignored input,.bf-field.is-ignored select{cursor:not-allowed}.bf-background-controls{display:grid;grid-template-columns:minmax(0,1fr) 84px;gap:8px;align-items:end}.bf-background-controls input[type="color"]{width:100%;height:38px;padding:2px;border:1px solid #50627d;border-radius:8px;background:#0c1420}
@media(max-width:860px){.bf-parent-settings,.bf-self-settings,.bf-effect-settings{grid-template-columns:1fr}}

.bf-flow-map{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1.2fr);gap:10px;align-items:stretch}.bf-flow-step{padding:10px;border:1px solid var(--bf-line);border-radius:10px;background:#0e1825;display:grid;gap:6px;align-content:start}.bf-flow-step span{font-size:12px;color:var(--bf-sub)}.bf-flow-step strong{font-size:14px;overflow-wrap:anywhere}.bf-flow-step small{font-size:11px;color:#cfe1fa;overflow-wrap:anywhere}.bf-flow-arrow{display:grid;place-items:center;font-size:26px;color:var(--bf-accent)}.bf-flow-note{font-size:12px;color:#9bb0c8;padding:2px 2px 0}@media(max-width:960px){.bf-flow-map{grid-template-columns:1fr}.bf-flow-arrow{transform:rotate(90deg)}}

.bf-preview-node{position:relative;z-index:3;min-height:110px;padding:14px 16px;border:1px solid #50627d;border-radius:10px;background:#172337;display:grid;gap:8px;align-content:start;box-shadow:0 8px 20px rgba(0,0,0,.15)}.bf-preview-node span{font-size:12px;color:var(--bf-sub)}.bf-preview-node strong{font-size:14px;overflow-wrap:anywhere}.bf-preview-node small{font-size:11px;color:#cfe1fa;overflow-wrap:anywhere}.bf-preview-flow-stage .bf-svg{position:absolute;inset:0;width:100%;height:100%;z-index:1;overflow:visible}.bf-preview-flow-stage .bf-delivery-overlay{z-index:4;pointer-events:none}@media(max-width:960px){.bf-preview-flow-stage{grid-template-columns:1fr;gap:18px;min-height:360px;padding:18px}}

.bf-security-stage{position:relative;display:grid;grid-template-columns:minmax(180px,1fr) minmax(190px,1fr) minmax(220px,1.2fr);gap:52px;align-items:center;min-height:190px;margin-top:14px;padding:22px 26px;border:1px solid var(--bf-line);border-radius:10px;background:#0c1420;overflow:visible}.bf-security-node{position:relative;z-index:3;min-height:104px;padding:12px 14px;border:1px solid #50627d;border-radius:10px;background:#172337;display:grid;gap:6px;align-content:start}.bf-security-node span{font-size:12px;color:var(--bf-sub)}.bf-security-node strong{font-size:14px;overflow-wrap:anywhere}.bf-security-node small{font-size:11px;color:#cfe1fa;overflow-wrap:anywhere}.bf-security-node--gate{border-style:dashed}.bf-security-stage .bf-svg{position:absolute;inset:0;width:100%;height:100%;z-index:1;overflow:visible}.bf-security-stage .bf-delivery-overlay{z-index:4;pointer-events:none}@media(max-width:900px){.bf-security-stage{grid-template-columns:1fr;gap:18px;min-height:360px;padding:18px}}




/* #035 connection image scope */
#connection-images .bone-switch-test-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
#connection-images .bone-switch-test-card{background:#101827;border:1px solid #31425a;border-radius:8px;padding:12px;min-width:0}
#connection-images .bone-switch-test-card--wide{grid-column:1/-1}
#connection-images .bone-switch-test-card h3{margin:0 0 4px;color:#f5f8fc;font-size:1rem}
#connection-images .bone-switch-usage-flow{position:relative;min-height:168px;display:flex;align-items:center;justify-content:space-around;gap:28px;padding:24px;overflow:hidden}
#connection-images .bone-switch-usage-flow>svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1;overflow:hidden}
#connection-images .bone-switch-node{position:relative;z-index:2;min-width:96px;padding:12px;border:1px solid #4c6584;border-radius:7px;text-align:center;background:#172235;color:#f5f8fc}
#connection-images .bone-switch-node strong{color:#55e6a5}
#connection-images .bone-switch-node--source strong{color:#65aaff}
#connection-images .bone-switch-node--text strong,#connection-images .bone-switch-node--target strong{color:#67e487}
#connection-images .bone-switch-joint-diagnostic{display:grid;gap:5px;margin-top:8px}
#connection-images .bone-switch-joint-diagnostic>div{display:flex;justify-content:space-between;gap:12px;padding:5px 8px;border-radius:5px;background:#1a2331;font-size:.78rem}
#connection-images .bone-switch-joint-diagnostic strong{text-align:right;overflow-wrap:anywhere}
#connection-images .bone-switch-joint-diagnostic strong{color:#eef4ff}
#connection-images .bone-switch-usage-flow--in-missing,#connection-images .bone-switch-usage-flow--in-mismatch,#connection-images .bone-switch-usage-flow--out-missing,#connection-images .bone-switch-usage-flow--out-mismatch{display:grid;grid-template-columns:1fr 1fr;justify-items:center;align-items:center}
#connection-images .bone-switch-usage-flow--out-missing .bone-switch-node--text{grid-column:1}
#connection-images .bone-switch-usage-flow--in-missing .bone-switch-node--source{grid-column:1}
#connection-images .bone-switch-usage-flow--in-missing .bone-switch-node--text{grid-column:2}
#connection-images .bone-label-joint-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
#connection-images .bone-label-joint-line{pointer-events:stroke}
#connection-images .bone-switch-joint-legend{margin-top:12px;border:1px solid #31425a;border-radius:8px;padding:10px;color:#cbd8e8}
#connection-images .bone-switch-joint-legend-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
#connection-images .bone-switch-joint-legend-line{display:inline-block;width:40px;height:3px;margin-right:8px;vertical-align:middle}
#connection-images .bone-switch-joint-legend-line.is-blue{background:#5ba6ff}
#connection-images .bone-switch-joint-legend-line.is-green{background:#4be06b}
#connection-images .bone-switch-joint-legend-line.is-orange{background:#f5a623}
#connection-images .bone-switch-joint-legend-line.is-red{background:#ff5b73}
#connection-images .bf-joint-path{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
#connection-images .bf-joint-path--straight{stroke-linejoin:miter}
#connection-images .bf-joint-marker{transform-box:fill-box;transform-origin:center}
#connection-images .bf-joint-marker-shape{fill:#111722;stroke:#68d6ff;stroke-width:4;vector-effect:non-scaling-stroke}
#connection-images .bf-joint-start--filled-circle .bf-joint-marker-shape,#connection-images .bf-joint-start--filled-square .bf-joint-marker-shape,#connection-images .bf-joint-end--filled-circle .bf-joint-marker-shape,#connection-images .bf-joint-end--filled-square .bf-joint-marker-shape{fill:#68d6ff}
#connection-images .bf-joint-start--error .bf-joint-marker-shape{stroke:#ff697a}
#connection-images .bf-joint-end-error line{stroke:#ff475d;stroke-width:4;stroke-linecap:round;vector-effect:non-scaling-stroke}
#connection-images .bf-joint-end-error-text{fill:#ff475d;font-size:22px;font-weight:900}
#connection-images .bf-joint-label{pointer-events:none;filter:drop-shadow(0 2px 3px rgba(0,0,0,.45))}
#connection-images .bf-joint-label rect{vector-effect:non-scaling-stroke}
#connection-images .bf-joint-label text{font-family:Meiryo,"Yu Gothic",sans-serif;font-weight:700;dominant-baseline:alphabetic;pointer-events:none}
#connection-images .bf-joint-label-tail{stroke:#7f93ad;stroke-width:1.5;stroke-dasharray:3 3;vector-effect:non-scaling-stroke;pointer-events:none}
#connection-images .bf-joint-label-anchor{fill:#0e1622;stroke:#8bdfff;stroke-width:2;vector-effect:non-scaling-stroke;pointer-events:none}
@media(max-width:760px){
  #connection-images .bone-switch-test-grid{grid-template-columns:1fr}
  #connection-images .bone-switch-test-card--wide{grid-column:auto}
  #connection-images .bone-switch-joint-legend-items{grid-template-columns:1fr}
}


/* #035 Switch v1.0.1 - Switch-specific rendering over the common Input UI surface. */
.bone-switch__control{
    position:relative;
    display:flex;
    align-items:center;
    justify-content:flex-start;
    width:100%;
    height:max(var(--bsw-control-height,44px),calc(var(--bsw-switch-size,24px) + 16px));
    min-width:0;
    padding:8px 12px;
    border:1px solid var(--bsw-border,#64748b);
    border-radius:8px;
    background:var(--bone-switch-background,#0c1420);
    transition:border-color .12s,box-shadow .12s,background .12s;
    gap:var(--bsw-label-gap,8px);
}
.bone-switch__label{
    position:relative;
    z-index:3;
    flex:0 1 auto;
    width:auto!important;
    height:auto!important;
    min-width:0!important;
    max-width:100%!important;
    padding:0!important;
    color:inherit;
    line-height:1.35;
    overflow:hidden!important;
    text-overflow:ellipsis;
    white-space:nowrap;
    user-select:none;
}
.bone-switch__label .bone-label-text{font-size:var(--bsw-label-font-size,14px)!important;color:inherit!important;line-height:1.35!important;white-space:nowrap!important}
.bone-switch__input{
    appearance:none;
    -webkit-appearance:none;
    position:relative;
    z-index:3;
    flex:0 0 auto;
    width:var(--bsw-switch-size,24px);
    height:var(--bsw-switch-size,24px);
    margin:0;
    padding:0;
    border:2px solid var(--bsw-border,#64748b);
    border-radius:6px;
    background:transparent;
    color:var(--bsw-text,#eef6ff);
    cursor:pointer;
    outline:none;
    box-shadow:none;
}
.bone-switch__input:checked{
    border-color:var(--bsw-accent,#5ba6ff);
    background:var(--bsw-accent,#5ba6ff);
}
.bone-switch__input:checked::after{
    content:"";
    position:absolute;
    left:27%;
    top:8%;
    width:26%;
    height:52%;
    border:solid #06111e;
    border-width:0 max(2px,calc(var(--bsw-switch-size,24px) * .11)) max(2px,calc(var(--bsw-switch-size,24px) * .11)) 0;
    transform:rotate(45deg);
}
.bone-switch[data-theme="light"] .bone-switch__input:checked::after{border-color:#fff}
.bone-switch.is-focused .bone-switch__control{border-color:var(--bsw-border,#64748b);box-shadow:none}
.bone-switch.is-invalid .bone-switch__control{border-color:var(--bf-error);box-shadow:0 0 0 3px rgba(255,123,138,.12)}
.bone-switch.is-readonly .bone-switch__input{cursor:default;opacity:.78}
.bone-switch.is-disabled .bone-switch__control{opacity:.55}
.bone-switch.is-dirty .bone-switch__control{border-style:dashed}
.bone-switch.is-waiting .bone-switch__control{border-color:#d5a733;box-shadow:0 0 0 3px rgba(255,200,87,.11)}
.bone-switch.is-blocked .bone-switch__control{border-color:#eb5055;box-shadow:0 0 0 3px rgba(235,80,85,.14)}
.bone-switch[data-security-state="rejected"] .bone-switch__control{border-color:#ff7b8a;background:#21131a}
.bone-switch[data-inherit-parent="true"] .bone-switch__control{
    width:100%;
    height:100%;
    padding:8px 12px;
    background:var(--bsw-parent-background,inherit)!important;
    color:var(--bsw-parent-text,inherit)!important;
    border:0!important;
    border-radius:var(--bsw-parent-radius,inherit);
    box-shadow:none;
}
.bone-switch[data-inherit-parent="true"] .bone-switch__input{
    width:var(--bsw-switch-size,24px);
    height:var(--bsw-switch-size,24px);
    border:2px solid var(--bsw-parent-text,currentColor);
    border-radius:6px;
    background:transparent;
}
.bone-switch[data-inherit-parent="true"] .bone-switch__input:checked{
    background:var(--bsw-effect-color);
    border-color:var(--bsw-effect-color);
}
.bf-field input[type="checkbox"]{accent-color:#5ba6ff}

/* #035 Switch v1.0.1 - optional whole-control click target */
.bone-switch[data-element-click-toggle="true"] .bone-switch__control{cursor:pointer}
.bone-switch[data-element-click-toggle="true"].is-readonly .bone-switch__control,.bone-switch[data-element-click-toggle="true"].is-disabled .bone-switch__control{cursor:default}


/* #035 Switch v1.0.1 - visible label + spacing */
.bone-switch[data-element-click-toggle="true"] .bone-switch__label{cursor:pointer}
.bone-switch[data-element-click-toggle="false"] .bone-switch__label{cursor:default}

/* #035 Switch v1.0.1 - #020 Bone Label delegation */
.bone-switch__input{transition:width .12s,height .12s,border-color .12s,background .12s,box-shadow .12s}


/* #035 Switch v1.0.1 - geometry QA sandbox */
#qa-sandbox{position:fixed;left:-12000px;top:0;width:1200px;min-height:900px;display:block;overflow:hidden;opacity:.001;pointer-events:none;z-index:-1}


/* #035 Switch v1.0.1 - Switch-specific track / thumb rendering. */
.bone-switch__input{
    width:var(--bsw-track-width);
    height:var(--bsw-switch-size,24px);
    min-width:var(--bsw-track-width);
    border:2px solid var(--bsw-border,#64748b);
    border-radius:999px;
    background:color-mix(in srgb,var(--bone-switch-background,#0c1420) 72%,#94a3b8 28%);
    transition:border-color .16s,background .16s,box-shadow .16s;
}
.bone-switch__input::after{
    content:"";
    position:absolute;
    width:var(--bsw-thumb-size);
    height:var(--bsw-thumb-size);
    left:2px;
    top:2px;
    border:0;
    border-radius:50%;
    background:#f8fafc;
    box-shadow:0 1px 4px rgba(0,0,0,.42);
    transform:none;
    transition:transform .16s,background .16s;
}
.bone-switch__input:checked{
    border-color:var(--bsw-accent,#5ba6ff);
    background:var(--bsw-accent,#5ba6ff);
}
.bone-switch__input:checked::after{
    left:2px;
    top:2px;
    width:var(--bsw-thumb-size);
    height:var(--bsw-thumb-size);
    border:0;
    border-radius:50%;
    background:#ffffff;
    transform:translateX(calc(var(--bsw-track-width) - var(--bsw-thumb-size) - 4px));
}
.bone-switch[data-inherit-parent="true"] .bone-switch__input{width:var(--bsw-track-width);height:var(--bsw-switch-size,24px);border-radius:999px;background:color-mix(in srgb,var(--bsw-parent-background,transparent) 70%,var(--bsw-parent-text,currentColor) 30%)}
.bone-switch[data-inherit-parent="true"] .bone-switch__input:checked{background:var(--bsw-effect-color);border-color:var(--bsw-effect-color)}


/* #035 Switch v1.0.3 - displayPattern. appearance Property removed; track/thumb geometry is pattern-owned. */
.bone-switch__visual{position:relative;display:inline-grid;place-items:center;flex:0 0 auto;line-height:1;--bsw-track-width:calc(var(--bsw-switch-size,24px) * 1.75);--bsw-thumb-size:calc(var(--bsw-switch-size,24px) - 8px)}
.bone-switch__visual>.bone-switch__input{grid-area:1/1;z-index:1}
.bone-switch__pattern-text,.bone-switch__pattern-icon{grid-area:1/1;z-index:2;display:none;align-items:center;justify-content:center;pointer-events:none;user-select:none;font-weight:800;line-height:1}
/* 1. standard: existing v1.0.1 track + round thumb. No override by design. */

/* 2. soft-rounded: weaker rounding on track/thumb while preserving the same ON/OFF mechanics. */
.bone-switch[data-display-pattern="soft-rounded"] .bone-switch__input{border-radius:9px}
.bone-switch[data-display-pattern="soft-rounded"] .bone-switch__input::after,.bone-switch[data-display-pattern="soft-rounded"] .bone-switch__input:checked::after{border-radius:6px}

/* 3. text: ON/OFF text is rendered inside a slightly wider switch. */
.bone-switch[data-display-pattern="text"] .bone-switch__visual{--bsw-track-width:calc(var(--bsw-switch-size,24px) * 2.45)}
.bone-switch[data-display-pattern="text"] .bone-switch__pattern-text{display:flex;width:var(--bsw-track-width);height:var(--bsw-switch-size,24px);padding:0 calc(var(--bsw-switch-size,24px) * .18);justify-content:flex-end;color:var(--bsw-text,#eef6ff);font-size:max(9px,calc(var(--bsw-switch-size,24px) * .31))}
.bone-switch[data-on="true"][data-display-pattern="text"] .bone-switch__pattern-text{justify-content:flex-start;color:#06111e}
.bone-switch[data-theme="light"][data-on="true"][data-display-pattern="text"] .bone-switch__pattern-text{color:#fff}

/* 4. icon: compact state icon appears opposite the moving thumb. */
.bone-switch[data-display-pattern="icon"] .bone-switch__visual{--bsw-track-width:calc(var(--bsw-switch-size,24px) * 2.05)}
.bone-switch[data-display-pattern="icon"] .bone-switch__pattern-icon{display:flex;width:var(--bsw-track-width);height:var(--bsw-switch-size,24px);padding:0 calc(var(--bsw-switch-size,24px) * .18);justify-content:flex-end;color:var(--bsw-text,#eef6ff);font-size:max(11px,calc(var(--bsw-switch-size,24px) * .42))}
.bone-switch[data-on="true"][data-display-pattern="icon"] .bone-switch__pattern-icon{justify-content:flex-start;color:#06111e}
.bone-switch[data-theme="light"][data-on="true"][data-display-pattern="icon"] .bone-switch__pattern-icon{color:#fff}

/* 5. button: rectangular ON/OFF button; no moving thumb. */
.bone-switch[data-display-pattern="button"] .bone-switch__visual{--bsw-track-width:calc(var(--bsw-switch-size,24px) * 2.55)}
.bone-switch[data-display-pattern="button"] .bone-switch__input{width:var(--bsw-track-width);min-width:var(--bsw-track-width);border-radius:8px;background:color-mix(in srgb,var(--bone-switch-background,#0c1420) 82%,#94a3b8 18%)}
.bone-switch[data-display-pattern="button"]:not([data-inherit-parent="true"]) .bone-switch__input:checked{background:var(--bsw-accent,#5ba6ff);border-color:var(--bsw-accent,#5ba6ff)}
.bone-switch[data-display-pattern="button"] .bone-switch__input::after,.bone-switch[data-display-pattern="button"] .bone-switch__input:checked::after{display:none;content:none}
.bone-switch[data-display-pattern="button"] .bone-switch__pattern-text{display:flex;width:var(--bsw-track-width);height:var(--bsw-switch-size,24px);color:var(--bsw-text,#eef6ff);font-size:max(10px,calc(var(--bsw-switch-size,24px) * .34));letter-spacing:.08em}
.bone-switch[data-on="true"][data-display-pattern="button"] .bone-switch__pattern-text{color:#06111e}
.bone-switch[data-theme="light"][data-on="true"][data-display-pattern="button"] .bone-switch__pattern-text{color:#fff}

/* Parent dependency keeps pattern geometry but not standalone component placement/background. */
.bone-switch[data-inherit-parent="true"] .bone-switch__visual{flex:0 0 auto}
