:root{--fo-bg:#122331;--fo-soft:#192d3d;--fo-line:#2c4455;--fo-text:#e7f0f7;--fo-muted:#9aafbf;--fo-accent:#8cd8e7;--fo-unknown:#385267}
html[data-theme=light]{--fo-bg:#fff;--fo-soft:#f2f6fa;--fo-line:#d6e1ea;--fo-text:#172f43;--fo-muted:#52697a;--fo-accent:#126c86;--fo-unknown:#d0dce6}
#surface.floor-dashboard,#surface.has-factory-scene.floor-dashboard.floor-surface{display:block;height:auto;padding-bottom:32px;overflow:visible}
.floor-dashboard .floor-layout{grid-template-columns:minmax(0,1fr);margin-bottom:26px}
.floor-dashboard .area-detail{display:none}
.floor-dashboard.floor-area-open .floor-layout{grid-template-columns:minmax(0,1fr) 260px}
.floor-dashboard.floor-area-open .area-detail{display:block;overflow:auto}
.floor-dashboard .floor-card{height:auto!important;min-width:0}
.floor-dashboard .floor-toolbar{flex-wrap:wrap;gap:10px;padding:12px 16px}
.floor-dashboard .map-options{flex-wrap:wrap;gap:8px}
.floor-dashboard .floor-toolbar button,.floor-dashboard .scene-caption button{min-height:44px;font-size:14px}
.floor-dashboard .zoom-controls output{min-height:44px;min-width:50px;display:grid;place-items:center;padding:0 8px}
.floor-dashboard #floorCanvas.floor-canvas{height:clamp(250px,43dvh,470px)!important;min-height:0!important;overflow:hidden!important;display:block}
#surface.floor-dashboard #floorCanvas .floor-svg{width:100%;height:100%;min-width:0;max-height:none!important;touch-action:auto;user-select:none}
#surface.floor-dashboard #floorCanvas .floor-svg[data-map-interaction=map]{touch-action:none}
.floor-dashboard #planInteraction[aria-pressed=true]{border-color:#68bccb;background:#1c5163;color:#f1fbff}
.plan-gesture-hint{font-size:13px;line-height:1.5;margin:0;color:var(--fo-muted);flex:0 0 100%;white-space:normal}
.floor-dashboard .floor-toolbar button{touch-action:manipulation}
.floor-dashboard .scene-mobile-brand{display:none}
.fo-pulse{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.fo-pulse>button{display:flex;flex-direction:column;align-items:flex-start;text-align:left;padding:16px 20px;border:1px solid var(--fo-line);border-radius:12px;background:var(--fo-bg);color:var(--fo-text);min-width:0;cursor:pointer}
.fo-pulse>button:hover{border-color:var(--fo-accent);background:var(--fo-soft)}
.fo-pulse>button>span{font-size:14px;color:var(--fo-muted)}
.fo-pulse strong{display:flex;align-items:baseline;gap:8px;font-size:30px;line-height:1.3;margin:5px 0;font-weight:600;font-variant-numeric:tabular-nums}
.fo-pulse strong b{font-weight:inherit}.fo-pulse strong small{font-size:16px;color:var(--fo-muted);font-weight:400}
.fo-pulse em{font-size:13px;color:var(--fo-muted);font-style:normal;line-height:1.4}
.fo-pulse .is-danger strong{color:#ec7080}
.factory-overview{color:var(--fo-text);font-size:16px;line-height:1.5}
.factory-overview button,.factory-overview select{font:inherit;min-height:44px;cursor:pointer;touch-action:manipulation}
.factory-overview button{border:1px solid var(--fo-line);border-radius:8px;background:var(--fo-soft);color:var(--fo-text);padding:8px 13px;font-size:14px}
.factory-overview button:hover{border-color:var(--fo-accent)}
.factory-overview :focus-visible,.fo-pulse :focus-visible,.appearance-toggle:focus-visible{outline:3px solid var(--fo-accent);outline-offset:3px}
.fo-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:0 0 18px}
.fo-eyebrow{font-size:12px;letter-spacing:.13em;color:var(--fo-accent);font-weight:600}
.fo-heading h2{font-size:24px;font-weight:600;letter-spacing:-.03em;margin:4px 0 0}
.fo-actions{display:flex;gap:8px}.fo-actions button:first-child{background:#176d84;color:#fff;border-color:#176d84}
.fo-grid{display:grid;grid-template-columns:1.05fr 1fr 1fr;gap:16px;align-items:stretch}
.fo-card{background:var(--fo-bg);border:1px solid var(--fo-line);border-radius:13px;padding:20px;min-width:0}
.fo-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:17px}
.fo-card h3{font-size:17px;font-weight:600;margin:0}.fo-card-head p{font-size:14px;color:var(--fo-muted);margin:6px 0 0}
.fo-card-head label{font-size:12px;color:var(--fo-muted);min-width:130px}
.fo-card-head select{display:block;margin:3px 0 0;width:100%;max-width:100%;font-size:14px;background:var(--fo-soft);color:var(--fo-text);border:1px solid var(--fo-line);border-radius:7px;padding:7px 9px}
.fo-card-head>button{font-size:13px;padding:6px 10px}
.fo-status-chart{display:flex;align-items:center;gap:24px;justify-content:center}
.fo-donut{flex:0 0 145px;height:145px;background:var(--fo-ring);border-radius:50%;display:grid;place-items:center}
.fo-donut>div{width:113px;height:113px;background:var(--fo-bg);border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center}
.fo-donut b{font-size:35px;line-height:1.2;font-weight:600}.fo-donut span{font-size:12px;color:var(--fo-muted)}
.fo-legend{display:grid;gap:10px;flex:1;font-size:13px;max-width:210px}.fo-legend>span{display:flex;gap:8px;align-items:center;color:var(--fo-muted)}.fo-legend i{width:9px;height:9px;border-radius:50%;flex-shrink:0}.fo-legend b{margin-left:auto;color:var(--fo-text);font-size:15px}
.fo-record-note{font-size:13px;color:var(--fo-muted);margin:18px 0 10px}.fo-record-note b{color:var(--fo-text);font-weight:500}
.fo-work-ratio{display:flex;justify-content:space-between;gap:10px;align-items:center;padding-top:12px;border-top:1px solid var(--fo-line);font-size:14px}.fo-work-ratio b{font-size:22px;color:var(--fo-accent);white-space:nowrap}
.fo-fine{color:var(--fo-muted);font-size:12px;margin:8px 0 0}
.fo-machine-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin-top:14px}.fo-machine-grid button{padding:5px;min-height:44px;font-size:12px}
.fo-machine-grid [data-status=run]{border-color:#30b78b;color:#30b78b}.fo-machine-grid [data-status=stop]{border-color:#ea6672;color:#ea6672}.fo-machine-grid [data-status=wait]{border-color:#e7ae43;color:#b98218}
.fo-progress-total{display:flex;align-items:center;gap:18px;margin-bottom:13px}.fo-progress-total>b{font-size:34px;color:var(--fo-accent);font-weight:550}.fo-progress-total>span{font-size:14px;color:var(--fo-muted)}
.factory-overview progress{appearance:none;-webkit-appearance:none;width:100%;height:7px;border:0;border-radius:9px;background:var(--fo-soft);display:block;overflow:hidden;accent-color:#30b78b}.factory-overview progress::-webkit-progress-bar{background:var(--fo-soft)}.factory-overview progress::-webkit-progress-value{background:#30b78b}.factory-overview progress::-moz-progress-bar{background:#30b78b}
.fo-stage-bars{display:grid;gap:6px;margin-top:18px}.fo-stage-bars>button{display:grid;grid-template-columns:110px minmax(0,1fr) 24px;align-items:center;gap:10px;border:0;background:transparent;padding:4px 0;min-height:30px;text-align:left;font-size:13px}.fo-stage-bars i{position:relative;height:6px;background:var(--fo-soft);border-radius:5px;overflow:hidden}.fo-stage-bars i:after{content:'';display:block;width:var(--bar);height:100%;border-radius:5px;background:#4faac0}.fo-stage-bars b{text-align:right}
.fo-warning .fo-card-head>span{font-size:13px;white-space:nowrap;color:var(--fo-muted)}.fo-alert{display:flex;align-items:center;gap:12px;width:100%;text-align:left;margin:9px 0;padding:12px!important;line-height:1.5}.fo-alert>i{display:grid;place-items:center;width:28px;height:28px;flex:0 0 28px;border-radius:8px;color:var(--fo-accent);background:var(--fo-bg);font-style:normal;font-weight:600}.fo-alert>span{flex:1}.fo-alert>b{color:var(--fo-muted)}.fo-alert.danger{border-left:3px solid #d65b6d}.fo-alert.warning{border-left:3px solid #d49a35}.fo-alert.info{border-left:3px solid #54a3be}
.fo-jobs{margin-top:16px}.fo-job{padding:15px 0;border-top:1px solid var(--fo-line)}.fo-job-main{width:100%;display:grid;grid-template-columns:125px minmax(150px,1.3fr) minmax(115px,.8fr) minmax(100px,.8fr) minmax(130px,.9fr);align-items:center;gap:18px;text-align:left;background:transparent!important;border:0!important;padding:0!important}.fo-job-main>span{display:flex;flex-direction:column;gap:5px;min-width:0;font-size:14px}.fo-job-main b{font-weight:500;overflow-wrap:anywhere}.fo-job-main small{font-size:12px;color:var(--fo-muted);line-height:1.5}.fo-job-code{color:var(--fo-accent);font-weight:600}.fo-job-code small{font-weight:400}.fo-job-actions{display:flex;gap:8px;margin-top:12px;justify-content:flex-end}.fo-job-actions button{font-size:13px;padding:6px 12px}.fo-empty{padding:20px 0;color:var(--fo-muted);font-size:14px}
.appearance-toggle{width:44px;height:44px;min-width:44px;min-height:44px;border-radius:50%;border:1px solid #3d586b;background:#192d3d;color:#c5e6f2;display:grid;place-items:center;position:relative;padding:9px;cursor:pointer;touch-action:manipulation}.appearance-toggle svg{width:24px;height:24px;pointer-events:none}
.appearance-toggle::after{content:attr(aria-label);position:absolute;right:0;top:calc(100% + 10px);z-index:100;white-space:nowrap;border-radius:8px;border:1px solid #3d586b;background:#142634;color:#e3f2fa;padding:9px 12px;font-size:14px;line-height:1.4;box-shadow:0 6px 20px #0002;pointer-events:none;visibility:hidden;opacity:0;transition:opacity .12s}
.appearance-toggle:focus-visible::after{visibility:visible;opacity:1}
@media(hover:hover){.appearance-toggle:hover::after{visibility:visible;opacity:1}}
.workspace-header .header-right{gap:12px}.workspace-header button{min-height:44px;min-width:44px}
.workspace-header .breadcrumb h1{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.main-dialog .dialog-head>[data-close]{min-width:44px;min-height:44px}
.main-dialog .editor-form :is(input:not([type=checkbox]):not([type=radio]),select,textarea){font-size:16px!important;min-height:44px}
.main-dialog .editor-form button{min-height:44px}
.fo-extra{margin-top:20px;border:1px solid var(--fo-line);border-radius:12px;background:var(--fo-bg);color:var(--fo-text);padding:15px 20px}.fo-extra>summary{cursor:pointer;font-size:14px;min-height:28px}.fo-extra .op-enhancements{margin-top:18px}
@media(max-width:1200px){.fo-grid{grid-template-columns:1fr 1fr}.fo-warning{grid-column:1/-1}#foWarnings{display:grid;grid-template-columns:1fr 1fr;gap:8px}.fo-alert{margin:0}.fo-pulse>button{padding:14px}.fo-pulse em{font-size:12px}.fo-job-main{grid-template-columns:100px minmax(140px,1.3fr) minmax(100px,.8fr) minmax(100px,.8fr)}.fo-job-main>span:last-child{grid-column:2/-1;flex-direction:row;flex-wrap:wrap;column-gap:12px}.fo-job-main>span:last-child b{margin-right:14px}}
@media(max-width:960px){.fo-grid{grid-template-columns:1fr 1fr}.floor-dashboard.floor-area-open .floor-layout{grid-template-columns:1fr}.floor-dashboard .floor-toolbar{gap:8px}.floor-dashboard .floor-toolbar .map-options{width:100%;justify-content:flex-start}.floor-dashboard #floorCanvas.floor-canvas{height:clamp(260px,38dvh,440px)!important}.floor-dashboard .area-detail{max-height:420px}.fo-heading h2{font-size:22px}.fo-actions{flex-wrap:wrap}.fo-pulse{gap:9px}.fo-pulse strong{font-size:27px}.fo-pulse>button>span{font-size:13px}}
@media(max-width:680px){.fo-pulse{grid-template-columns:1fr 1fr;margin-bottom:14px}.fo-pulse>button{padding:13px}.fo-pulse strong{font-size:27px;margin:3px 0}.fo-grid{grid-template-columns:1fr}.fo-warning{grid-column:auto}#foWarnings{grid-template-columns:1fr}.fo-heading{align-items:flex-start;flex-direction:column;gap:12px}.fo-heading h2{font-size:23px}.fo-actions{width:100%}.fo-actions button{flex:1}.fo-card{padding:17px}.fo-card-head label{min-width:140px}.fo-jobs>.fo-card-head{flex-wrap:wrap}.fo-job-main{grid-template-columns:1fr 1fr;gap:14px}.fo-job-main>span:nth-child(2){grid-column:1/-1;grid-row:1}.fo-job-main>span:last-child{grid-column:1/-1}.fo-job-actions{justify-content:flex-start;flex-wrap:wrap}.fo-job-actions button{flex:1}.floor-dashboard .floor-layout{margin-bottom:23px}.floor-dashboard .floor-toolbar{padding:10px}.floor-dashboard .scene-floor-tabs{flex-wrap:wrap;width:100%}.floor-dashboard .scene-floor-tabs>button{flex:1;font-size:12px;white-space:normal}.floor-dashboard #floorCanvas.floor-canvas{height:260px!important}.floor-dashboard .scene-corner{max-width:calc(100% - 20px)}.floor-dashboard .scene-caption-bottom{gap:8px}.floor-dashboard .scene-provenance{white-space:normal}.floor-dashboard .status-legend{flex-wrap:wrap}.fo-stage-bars>button{min-height:44px}.workspace-header .breadcrumb{flex:1}.workspace-header .header-right{gap:9px}.workspace-header .connection-label{display:none}.fo-status-chart{gap:20px}}
@media(prefers-reduced-motion:reduce){.factory-overview *{scroll-behavior:auto;transition:none}}
