/* GreenHouse · Atelier theme (16.10.2026)
   The production board of a timber-frame wall factory.
   Brand band = the logo's own forest. Working surface = cool board grey. Content = white sheets.
   One family (var(--f)) used across its width axis: wide for titles, normal for reading, narrow for dense data.
   The workshop plan (Weinmann tables) and the saw / CNC modules keep their original look: see the end of this file. */

:root{
  --forest:#0D1F0E; --forest-2:#2a302c; --forest-line:#3a413c; --leaf:#8fae94; --on-forest:#e6e8e6; --on-forest-2:#a9b0ab;
  --green:#2f5b3f; --green-hover:#264a33; --green-ink:#264a33; --green-wash:#eef0ee;
  --ground:#f2f2f0; --sheet:#FFFFFF; --sheet-2:#F6F7F4;
  --ink:#1e2220; --ink2:#5b605c; --muted:#5b605c;
  --rule:#d8dad6; --rule-strong:#b7bbb6;
  --timber:#9A6420; --timber-fill:#cdb07a; --timber-wash:#FBF3E4;
  --warn:#B3261E; --warn-wash:#FCEDEB;
  /* legacy names, remapped */
  --bg:var(--ground); --panel:var(--sheet); --panel2:var(--sheet-2); --line:var(--rule);
  --accent:var(--green); --accent-ink:#fff; --ok:var(--green); --focus:var(--green);
  /* phases, in line order: raw → frame → closing → plaster → windows → depot → loaded */
  --s0:#D9DED6; --s0i:#6B776F; --s1:#cdb07a; --s3:#9db39a; --s4:#aaa2b5; --s2:#8fa6ba; --s6:#6e8f8a; --s5:#2f5b3f;
  --r-ctl:3px; --r-sheet:4px;
  --f:"Aptos","Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;
  color-scheme:light;
}

/* ---------- type ---------- */
body{font-family:var(--f);font-size:14.5px;line-height:1.45;background:var(--ground);color:var(--ink);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:var(--f);font-stretch:normal;font-weight:600;letter-spacing:0;line-height:1.12;color:var(--ink)}
h1{font-size:26px}
h2{font-size:20px}
h3{font-size:16px;font-stretch:normal;font-weight:650}
small{font-size:12.5px}
:focus-visible{outline:2px solid var(--green);outline-offset:2px}
::selection{background:#d3d7d3;color:var(--ink)}
input::placeholder,textarea::placeholder{color:#7A867E}

/* ---------- controls ---------- */
.btn,.btn.small{font-family:var(--f);font-stretch:normal;font-weight:600;letter-spacing:.005em;background:var(--sheet);color:var(--ink);border:1px solid var(--rule-strong);border-radius:var(--r-ctl);transition:background-color .12s,border-color .12s}
.btn{font-size:13.5px;padding:7px 13px;min-height:36px}
.btn.small{font-size:12.5px;padding:5px 10px;min-height:30px}
.btn:hover:not(:disabled){background:var(--sheet-2);border-color:var(--ink2)}
.btn.primary,.btn.primary:hover:not(:disabled){background:var(--green);border-color:var(--green);color:#fff}
.btn.primary:hover:not(:disabled){background:var(--green-hover);border-color:var(--green-hover)}
.btn:disabled{opacity:.45}
input,select,textarea{font-family:var(--f)}
.modal input[type=text],.modal input[type=password],.modal input:not([type]),.modal input[type=number],.modal input[type=date],.modal select,.modal textarea,
.tools input[type=search],.production-day input,.view-project select,.depot-pick select,.depot-wall select,.load-add select,.gl-fields input,.gl-op input,
.material-config input,.material-config select,.excel-table input,.excel-table select,.ins select,.ins input,.note textarea,.station-note textarea,#username,#password{
  background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-ctl);color:var(--ink);font-family:var(--f)}
.modal input:focus,.modal select:focus,.modal textarea:focus,.tools input:focus,.view-project select:focus,.note textarea:focus,#username:focus,#password:focus,.material-config input:focus{border-color:var(--green);outline:2px solid #24753A33;outline-offset:0}
input[type=checkbox]{accent-color:var(--green)}

/* ---------- brand band ---------- */
.connection{background:var(--forest);border-bottom:0;color:var(--on-forest);padding:0 16px 0 4px;min-height:56px;gap:8px}
.connection .header-logo{width:150px;border-radius:0;margin-right:auto}
.connection .btn,#logout{background:transparent;color:var(--on-forest);border:1px solid var(--forest-line)}
.connection .btn:hover:not(:disabled),#logout:hover:not(:disabled){background:var(--forest-2);border-color:#3E6442;color:#fff}
#syncState{color:var(--on-forest-2)}

/* ---------- page head ---------- */
.main .top{background:var(--sheet);border-bottom:1px solid var(--rule);padding:14px 22px;gap:8px 10px;align-items:center}
.top .grow{flex:1 1 260px}
.top h1{font-size:28px;font-stretch:normal;letter-spacing:-.015em}
.top .hint{font-size:13px;color:var(--ink2);margin-top:3px;font-stretch:normal}
.main .side-toggle{background:var(--sheet);border:1px solid var(--rule-strong);color:var(--ink);font-family:var(--f);font-weight:600;min-height:36px;padding:6px 12px}
.wrap,.main>.wrap{padding:22px 22px 72px;max-width:1520px}

/* ---------- menu ---------- */
.shell>.side{background:var(--forest);color:var(--on-forest);border-right:0;box-shadow:24px 0 60px #0006;width:min(300px,86vw)}
.menu-heading{border-bottom:1px solid var(--forest-line);padding:16px 16px 14px}
.menu-heading strong{color:var(--leaf);font-stretch:normal;font-weight:700;font-size:22px;letter-spacing:-.01em}
.menu-heading .btn{background:transparent;color:var(--on-forest);border-color:var(--forest-line);min-width:38px}
.menu-links{padding:12px 10px;gap:2px}
.menu-links button{font-family:var(--f);font-stretch:normal;font-size:17px;font-weight:550;color:var(--on-forest);border:0;border-left:3px solid transparent;border-radius:0 var(--r-ctl) var(--r-ctl) 0;padding:10px 14px;min-height:42px}
.menu-links button:hover{background:var(--forest-2)}
.menu-links button.on{background:var(--forest-2);color:#fff;border-left-color:var(--leaf);font-weight:700}
.menu-context{color:var(--on-forest-2);font-size:12.5px;padding:0 16px;margin:14px 0 8px}
.side-head2{padding:0 12px 10px;gap:6px}
.side .btn{background:transparent;color:var(--on-forest);border-color:var(--forest-line)}
.side .btn.primary{background:var(--leaf);border-color:var(--leaf);color:var(--forest)}
.side .btn.primary:hover:not(:disabled){background:#8fae94;border-color:#8fae94}
.side .btn:hover:not(:disabled){background:var(--forest-2)}
.side-list{padding:4px 10px 16px}
.side-item{color:var(--on-forest);border-radius:0 var(--r-ctl) var(--r-ctl) 0;border-left:3px solid transparent}
.side-item:hover,.side-item.on{background:var(--forest-2)}
.side-item.on{border-left-color:var(--leaf)}
.side-item.on .nm{color:#fff}
.side-item .mt,.side-sect,.side-empty{color:var(--on-forest-2)}
.side-sect{text-transform:none;letter-spacing:0;font-size:12.5px}
.menu-backdrop{background:#0D1F0E99}

/* ---------- project overview: the production line ---------- */
.project-dashboard{display:grid;grid-template-columns:1fr;gap:0;padding:0;background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-sheet);margin:0 0 18px;overflow:hidden}
.dashboard-intro{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 18px;padding:18px 20px 14px}
.dashboard-eyebrow{flex-basis:100%;margin:0 0 4px;font-size:11.5px;letter-spacing:.08em;font-weight:600;color:var(--ink2)}
.dashboard-intro h2{font-size:30px;font-stretch:normal;font-weight:700;letter-spacing:0;margin:0;line-height:1}
.dashboard-intro p{margin:0;font-size:15px;color:var(--ink2)}
.dashboard-intro p strong{color:var(--green-ink);font-size:17px}
.dashboard-intro small{order:4;max-width:none;font-size:12.5px;color:var(--ink2)}
.project-line{display:flex;height:22px;margin:0 20px;border-radius:3px;overflow:hidden;background:var(--s0);gap:2px}
.project-line-part{min-width:4px;flex-basis:0}
.phase-legend{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:0;margin-top:14px;border-top:1px solid var(--rule)}
.phase-legend button{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;align-items:baseline;gap:2px 8px;text-align:left;padding:12px 14px 14px;border:0;border-left:1px solid var(--rule);border-radius:0;background:transparent;color:var(--ink);font-size:13px;position:relative}
.phase-legend button:first-child{border-left:0}
.phase-legend button:hover{background:var(--sheet-2)}
.phase-legend button.active{background:var(--green-wash)}
.phase-legend button.active:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--green)}
.phase-legend .phase-dot{grid-row:1;width:10px;height:10px;border-radius:2px;border:0;align-self:center}
.phase-legend button>span:not(.phase-dot){grid-row:1;font-weight:600;font-stretch:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.phase-legend strong{grid-column:1/3;grid-row:2;text-align:left;font-size:26px;font-stretch:normal;font-weight:700;line-height:1.1}
.phase-legend small{grid-column:1/3;grid-row:2;justify-self:end;align-self:end;text-align:right;color:var(--ink2);font-size:12px;padding-bottom:4px}
.phase-legend>p{grid-column:1/-1;padding:12px 20px;margin:0;color:var(--ink2)}
@media(max-width:900px){.phase-legend{grid-template-columns:repeat(4,minmax(0,1fr))}.phase-legend button:nth-child(5){border-left:0}.phase-legend button:nth-child(n+5){border-top:1px solid var(--rule)}}
@media(max-width:520px){
  .dashboard-intro{padding:14px 14px 12px}.dashboard-intro h2{font-size:26px}
  .project-line{margin:0 14px;height:18px}
  .phase-legend{grid-template-columns:repeat(2,minmax(0,1fr))}
  .phase-legend button{border-left:0;border-top:1px solid var(--rule);padding:10px 14px}
  .phase-legend button:nth-child(2n){border-left:1px solid var(--rule)}
  .phase-legend button:first-child{border-top:0}
  .phase-legend button:first-child{grid-column:1/-1}
  .phase-legend button:nth-child(2n){border-left:0}.phase-legend button:nth-child(2n+1):not(:first-child){border-left:1px solid var(--rule)}
  .phase-legend strong{font-size:22px}
}

/* ---------- toolbars ---------- */
.tools{margin:0 0 14px}
.tools input[type=search]{min-width:240px;padding:9px 12px;min-height:38px}
.view-project{font-weight:600;font-stretch:normal;margin-bottom:6px}
.view-project select{padding:8px 12px;min-height:38px;border-color:var(--rule-strong)}
.production-day{margin:4px 0 14px;font-weight:600}
.production-day input{min-height:36px;padding:6px 10px}
.portfolio-toolbar{margin-bottom:6px}
.portfolio-toolbar>span{font-size:13px}

/* ---------- sheets ---------- */
.mes-board,.chart-card,.daily-analytics,.gross-production,.material-config,.client-summary,.global-charts>section,.depot-zone,.load-card,.compact-production,.production-other details,.station{
  background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-sheet);box-shadow:none}
.mes-board{padding:18px 20px;margin:18px 0}
.mes-board header{align-items:baseline}
.mes-board h2,.compact-production h2,.gross-production h2,.daily-analytics h2,.material-config h2,.depot h2,.trucks h2{font-size:21px}
.mes-live{color:var(--ink2);font-size:12.5px;font-weight:600;font-stretch:normal;padding:3px 8px;border:1px solid var(--rule);border-radius:4px}
.mes-bottleneck{background:var(--timber-wash);border:1px solid #EBD4A6;border-left:4px solid var(--timber-fill);border-radius:var(--r-ctl);padding:12px 14px}
.mes-bottleneck h3{color:#6E4813;font-stretch:normal;font-size:17px}
.mes-queue .mes-wall,.mes-unpositioned{background:var(--sheet-2);border:1px solid var(--rule);border-radius:var(--r-ctl)}

/* ---------- wall table ---------- */
.compact-production{padding:0;overflow:hidden}
.compact-production header{padding:16px 18px 12px;margin:0;border-bottom:1px solid var(--rule)}
.compact-production-scroll{border:0;border-radius:0}
.compact-production table{font-size:13px}
.compact-production thead th{position:sticky;top:0;background:var(--sheet-2);color:var(--ink2);font-weight:600;font-stretch:normal;font-size:12px;border-bottom:1px solid var(--rule);z-index:1}
.compact-production th,.compact-production td{padding:8px 10px;border-bottom:1px solid #e7e8e5}
.compact-production tbody tr:hover td,.compact-production tbody tr:hover th{background:#F3F6F1}
.wall-row-open{color:var(--green-ink);font-family:var(--f);font-stretch:normal;font-weight:700;font-size:13.5px;text-decoration-color:#24753A55;text-underline-offset:3px}
.wall-row-open:hover{text-decoration-color:currentColor}
.process-legend{gap:6px}
.process-status{font-family:var(--f);font-stretch:normal;font-size:11.5px;font-weight:600;border-radius:4px;padding:3px 7px;border:1px solid transparent}
.process-status.not-started{background:#F1F3EF;color:#5E6A62;border-color:#E0E5DD}
.process-status.running{background:#eef0ee;color:#264a33;border-color:#d3d7d3}
.process-status.paused{background:var(--timber-wash);color:#7A4E14;border-color:#EBD4A6}
.process-status.waiting{background:#EEF2F5;color:#4A5966;border-color:#D8E0E6}
.process-status.complete{background:var(--green);color:#fff;border-color:var(--green)}

/* ---------- figure strips (no card grids) ---------- */
.ship-kpis,.analytics-kpis,.gross-production-grid,.euro-dashboard,.gl-result{display:grid;gap:0;background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-sheet);overflow:hidden}
.ship-kpis>div,.analytics-kpis>div,.gross-production-grid>div,.euro-card,.gl-result>div{border:0;border-left:1px solid var(--rule);border-radius:0;background:transparent;box-shadow:none;padding:14px 16px}
.ship-kpis>div:first-child,.analytics-kpis>div:first-child,.gross-production-grid>div:first-child,.euro-card:first-child,.gl-result>div:first-child{border-left:0}
.ship-kpis strong,.analytics-kpis strong,.gross-production-grid strong,.gl-result strong{font-stretch:normal;font-weight:700;color:var(--ink);font-size:28px;line-height:1.05}
.ship-kpis span,.analytics-kpis span,.gross-production-grid span,.gl-result span{color:var(--ink2);font-size:12.5px}
.ship-kpis .warn strong{color:var(--timber)}
.gross-production{padding:16px 18px}
.gross-production .gross-production-grid{margin:12px 0 6px}
.current-production-grid .current-running,.current-production-grid .current-paused,.current-production-grid .current-waiting{border-top:0;position:relative}
.current-production-grid>div:before{content:"";position:absolute;left:16px;top:0;width:28px;height:3px;background:var(--rule-strong)}
.current-production-grid .current-total:before{background:var(--ink)}
.current-production-grid .current-running:before{background:var(--green)}
.current-production-grid .current-paused:before{background:var(--timber-fill)}
.current-production-grid .current-waiting:before{background:#9AA7B2}
.euro-dashboard{margin:14px 0}
.euro-card,.euro-current,.euro-week,.euro-month{border-top:0;background:transparent}
.euro-card h3{font-size:15px;margin:0 0 10px}
.euro-card strong{font-stretch:normal;font-size:24px}
.euro-buy{color:var(--timber)}
.euro-sell{color:var(--green-ink)}
@media(max-width:1000px){.euro-dashboard{grid-template-columns:repeat(2,minmax(0,1fr))}.euro-card:nth-child(3){border-left:0}.euro-card:nth-child(n+3){border-top:1px solid var(--rule)}}
@media(max-width:760px){.current-production-grid>div:nth-child(3){border-left:0}.current-production-grid>div:nth-child(n+3){border-top:1px solid var(--rule)}}
@media(max-width:540px){.gross-production-grid>div{border-left:0;border-top:1px solid var(--rule)}.gross-production-grid>div:first-child{border-top:0}}
@media(max-width:420px){.current-production-grid>div{border-left:0!important;border-top:1px solid var(--rule)}.current-production-grid>div:first-child{border-top:0}}

/* ---------- analytics ---------- */
.daily-analytics{padding:18px 20px}
.analytics-kpis{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.analytics-kpis strong{color:var(--ink)}
.chart-grid{gap:14px}
.chart-card{padding:16px 18px}
.chart-card h3{font-size:16px}
.column-fill{background:var(--green)}
.column-track{border-color:var(--rule);background:repeating-linear-gradient(to top,transparent 0,transparent 44px,#efefed 44px,#efefed 45px)}
.chart-donut>span{background:var(--sheet)}
.time-track{background:#efefed}
.global-bars i{background:var(--green)}
.daily-analytics th,.daily-analytics td,.active-analytics td,.active-analytics th,.material-config th,.material-config td,.mes-metrics th,.mes-metrics td{border-bottom:1px solid #e7e8e5}
.daily-analytics thead th,.active-analytics thead th,.material-config thead th,.mes-metrics thead th{color:var(--ink2);font-weight:600;font-size:12.5px;font-stretch:normal}
.active-analytics>h2{margin-top:6px}
details>summary{cursor:pointer}
.analytics-details summary,.mes-metrics summary,.material-config summary,.active-analytics details>summary{font-weight:650;font-stretch:normal}

/* ---------- materials ---------- */
.material-config{padding:18px 20px}
.material-config p{color:var(--ink2);max-width:80ch}
.material-links{gap:10px 14px}
.material-links label{color:var(--ink2);font-weight:500}
.material-config td input{max-width:110px}

/* ---------- projects / clients ---------- */
.portfolio-card,.ccard{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-sheet);padding:16px 18px;box-shadow:none}
.ccard:hover{border-color:var(--ink2)}
.portfolio-heading .cn,.ccard .cn{font-family:var(--f);font-stretch:normal;font-weight:700;font-size:21px}
.ccard .cs{background:var(--green-wash);color:var(--green-ink);border:1px solid #d3d7d3;border-radius:4px;font-size:11.5px;font-weight:650;padding:2px 7px}
.ccard .cs.a{background:var(--sheet-2);color:var(--ink2);border-color:var(--rule)}
.portfolio-metrics strong{font-stretch:normal;font-size:20px}
.portfolio-progress{height:6px;border-radius:2px;background:#e7e8e5}
.portfolio-progress::-webkit-progress-bar{background:#e7e8e5;border-radius:2px}
.portfolio-progress::-webkit-progress-value{background:var(--green);border-radius:2px}
.portfolio-progress::-moz-progress-bar{background:var(--green)}
.client-summary{background:var(--sheet);padding:16px 18px}
.client-choices .btn{min-height:34px}

/* ---------- wall sheet (details) ---------- */
.drawer{background:var(--sheet);border:0;border-radius:var(--r-sheet);box-shadow:0 4px 14px #0000001f}
.drawer-backdrop{background:#0D1F0E8C}
.drawer .head{padding:18px 20px 14px;border-bottom:1px solid var(--rule)}
.drawer .head h2{font-size:30px;font-stretch:normal;letter-spacing:-.02em}
.drawer .head .sub{font-size:13px}
.drawer .body{padding:16px 20px}
.drawer .foot{border-top:1px solid var(--rule);background:var(--sheet-2)}
.drawer .wall-dimensions{color:var(--ink2)}
.drawer .next-stage-panel{background:var(--sheet-2);border:1px solid var(--rule);border-left:4px solid var(--s6);border-radius:var(--r-ctl)}
.drawer .next-stage-panel small{color:var(--ink2)}
.drawer .next-stage-panel h3{font-size:22px;font-stretch:normal}
.drawer .stage-row{border-radius:4px;color:var(--ink2);font-stretch:normal}
.drawer .stage-row .sw{border-radius:2px}
.drawer .stage-row.on{background:var(--green-wash);color:var(--green-ink);font-weight:700}
.wall-responsible{background:var(--sheet-2);border:1px solid var(--rule);border-left:4px solid var(--green);border-radius:var(--r-ctl)}
.wall-responsible>span{text-transform:none;letter-spacing:0;font-size:12px}
.wall-responsible>strong{color:var(--ink);font-stretch:normal}
.drawer .layers h2{font-size:18px}
.layer-state.complete{color:var(--green)}
.drawer .layers .addbtn,.addbtn{color:var(--green-ink);font-family:var(--f)}
.glulam-line{background:var(--timber-wash);border:1px solid #EBD4A6;border-radius:var(--r-ctl)}
.glulam-line b{font-stretch:normal}
.glulam-line strong{color:var(--timber)}
.depot-line{background:var(--sheet-2);border:1px solid var(--rule);border-radius:var(--r-ctl)}
.glulam-ok{color:var(--green-ink)}
.glulam-warn,.depot-kg.unconfirmed,.load-warn{color:var(--timber)}
.load-tag{background:#eef0ef;color:#1F5F57;border-radius:4px;font-weight:650}

/* ---------- dialogs ---------- */
.modal{background:#0D1F0E8C}
.modal .box{background:var(--sheet);border:0;border-radius:var(--r-sheet);box-shadow:0 4px 14px #0000001f;padding:22px}
.modal .box h2{font-size:22px;font-stretch:normal;margin-bottom:8px}
.modal p{color:var(--ink2)}
.modal label{font-weight:600;font-stretch:normal}
.modal .err,#loginError{color:var(--warn)}
.status{background:var(--forest);color:var(--on-forest);border-left:4px solid var(--leaf);border-radius:var(--r-ctl);box-shadow:0 4px 14px #0000001f;font-weight:600}
.glulam-sketch{background:var(--sheet-2);border:1px solid var(--rule);border-radius:var(--r-ctl)}

/* ---------- depot & trucks ---------- */
.depot-zone{padding:12px 14px}
.depot-zone.none{background:var(--timber-wash);border-color:#EBD4A6}
.depot-zone h3{font-size:17px;font-stretch:normal}
.depot-wall{border-top-color:#e7e8e5}
.load-card{padding:16px 18px}
.load-card.shipped{background:var(--sheet-2);opacity:1}
.load-card h3{font-size:21px;font-stretch:normal}
.load-weight strong{font-stretch:normal;font-size:28px;color:var(--timber)}
.load-weight.over strong{color:var(--warn)}
.load-weight progress{accent-color:var(--timber-fill);height:8px}
.load-card thead th{color:var(--ink2);font-size:12px;font-weight:600}

/* ---------- empty & misc ---------- */
.empty{background:var(--sheet);border:1px dashed var(--rule-strong);border-radius:var(--r-sheet)}
.qr-screen .mes-status,.mes-status,.qr-stage{border-radius:var(--r-ctl)}
.pending-walls{background:var(--sheet);border:1px solid var(--rule);border-left:4px solid var(--green);border-radius:var(--r-sheet)}
.pending-walls h2,.pending-walls header>strong{color:var(--green-ink)}
.pending-walls header>strong{background:var(--green-wash)}
.tile.s5{color:#fff}

/* ---------- sign-in: the logo's own forest ---------- */
#loginGate{background:var(--forest);align-items:center}
.welcome-brand img{max-width:560px;border-radius:0}
.welcome-brand h1{color:var(--on-forest);font-stretch:normal;font-weight:600;letter-spacing:-.01em;font-size:clamp(22px,2.6vw,30px);margin:0 0 28px}
#loginForm{background:var(--sheet);border:0;border-radius:var(--r-sheet);box-shadow:0 4px 14px #0000001f;padding:28px}
#loginForm label{font-weight:600;font-stretch:normal;margin:16px 0 6px}
#loginForm label:first-child{margin-top:0}
#username,#password{padding:11px 12px;min-height:44px}
#loginSubmit{min-height:44px;font-size:15px}
#loginError{font-size:13px;margin:12px 0 0}

/* ---------- small screens ---------- */
@media(max-width:560px){
  .connection{padding:0 10px 0 0;min-height:50px}
  .connection .header-logo{width:118px}
  .main .top{padding:10px 12px}
  .top h1{font-size:22px}
  .wrap,.main>.wrap{padding:14px 12px 48px}
  .mes-board{padding:14px}
  .tools input[type=search]{min-width:0;width:100%}
  .ship-kpis>div,.analytics-kpis>div{padding:12px}
  .ship-kpis strong,.analytics-kpis strong{font-size:24px}
  .ship-kpis{grid-template-columns:1fr 1fr}.ship-kpis>div:nth-child(3){border-left:0}.ship-kpis>div:nth-child(n+3){border-top:1px solid var(--rule)}
  .gl-result>div:nth-child(3){border-left:0}.gl-result>div:nth-child(n+3){border-top:1px solid var(--rule)}
  .drawer .head h2{font-size:26px}
}
@media(prefers-reduced-motion:reduce){.btn{transition:none}}
@media(pointer:coarse){.btn,.btn.small,.main .side-toggle,.menu-links button{min-height:42px}.workshop-layout .btn,.workshop-layout .btn.small{min-height:40px}}

/* ---------- untouched: workshop plan (Weinmann tables) and saw / CNC modules ----------
   Restores the previous look inside the workshop area: var(--f), the previous colours and buttons. */
.workshop-layout{font-family:var(--f);font-variant-numeric:normal;--line:#dcdfdc;--panel:#FFFFFF;--panel2:#f3f4f3;--ink:#26302a;--ink2:#53685B;--accent:#2f5b3f;--ok:#2f5b3f;--muted:#53685B;color:#26302a}
.workshop-layout h3{font-family:var(--f);font-stretch:normal;font-weight:600;letter-spacing:0;color:#26302a}
.workshop-layout .btn,.workshop-layout .btn.small{font-family:var(--f);font-stretch:normal;letter-spacing:0;background:#f2f3f2;color:#2f5b3f;border:1px solid #d5d8d5;border-radius:4px;font-weight:500;font-size:13px;padding:6px 10px;min-height:32px}
.workshop-layout .btn.small{font-size:12px;padding:4px 8px;min-height:28px}
.workshop-layout .btn:hover:not(:disabled){background:#eceeec;border-color:#2f5b3f}
.workshop-layout .mes-wall{background:#f4f5f4}

/* ---------- refinements ---------- */
.connection .header-logo{width:250px;height:56px;object-fit:cover;object-position:50% 47%;margin-left:-28px}
.process-status.complete{background:#eef0ee;color:#264a33;border-color:#d3d7d3}
.process-status.running{background:var(--green);color:#fff;border-color:var(--green)}
.depot-wall .wall-row-open{white-space:nowrap}
progress{appearance:none;-webkit-appearance:none;border:0;border-radius:2px;background:#e7e8e5;overflow:hidden}
progress::-webkit-progress-bar{background:#e7e8e5;border-radius:2px}
progress::-webkit-progress-value{background:var(--green);border-radius:2px}
progress::-moz-progress-bar{background:var(--green)}
.load-weight progress::-webkit-progress-value{background:var(--timber-fill)}
.load-weight progress::-moz-progress-bar{background:var(--timber-fill)}
.load-weight.over progress::-webkit-progress-value{background:var(--warn)}
.load-weight.over progress::-moz-progress-bar{background:var(--warn)}
.active-analytics>h3,.active-analytics>h2{margin-top:22px}
@media(max-width:560px){
  .connection .header-logo{width:190px;height:50px;margin-left:-22px}
  .main .top{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;align-items:stretch}
  .main .top .side-toggle{grid-column:1;align-self:start;justify-self:start}
  .main .top .grow{grid-column:2/4}
  .main .top #btnScanQR{grid-column:1/-1;min-height:44px;font-size:15px}
  .main .top .btn:not(.side-toggle):not(#btnScanQR){white-space:normal;line-height:1.2;font-size:12.5px;padding:6px 8px;min-height:40px}
}
.connection .header-logo{object-position:50% 33%}
@media(max-width:560px){.connection .header-logo{object-position:50% 6%}}
.connection .header-logo{width:250px;height:40px;object-position:50% 48%}
@media(max-width:560px){.connection .header-logo{width:190px;height:30px;object-position:50% 53%}}
.portfolio-metrics strong{font-stretch:normal;font-size:19px;white-space:nowrap}
input[type=file]{font-family:var(--f);font-size:13.5px;color:var(--ink2)}
input[type=file]::file-selector-button{font-family:var(--f);font-weight:600;font-size:13.5px;margin-right:12px;padding:8px 14px;border:1px solid var(--rule-strong);border-radius:var(--r-ctl);background:var(--sheet-2);color:var(--ink);cursor:pointer}
input[type=file]::file-selector-button:hover{border-color:var(--ink2)}
.load-card td,.process-status{white-space:nowrap}
/* keep the workshop plan at its original rendered size (the page gutters grew by 14px) */
@media(min-width:561px){.mes-board .workshop-layout{margin-left:-14px;margin-right:-14px}}
.qr-actions{align-items:center}
.qr-actions .btn,.qr-screen .qr-actions .btn{min-height:40px;padding:8px 14px}
.modal input,.modal select,.modal textarea,.gl-fields input,.gl-op input{font-weight:400}
.top h1{font-size:26px;font-stretch:normal}

/* Excel import: layers typed by hand when the file has none */
.excel-manual{margin:14px 0 6px;padding:14px 16px;border:1px solid #EBD4A6;border-left:4px solid var(--timber-fill);border-radius:var(--r-ctl);background:var(--timber-wash)}
.excel-manual.applied{border-color:#d3d7d3;border-left-color:var(--green);background:var(--green-wash)}
.excel-manual h3{margin:0 0 4px;font-size:17px}
.excel-manual>p{margin:0 0 10px}
.excel-manual-type{border:1px solid var(--rule);border-radius:var(--r-ctl);background:var(--sheet);padding:10px 12px 12px;margin:0 0 10px;min-width:0}
.excel-manual-type legend{font-weight:700;font-stretch:normal;padding:0 6px}
.excel-manual-type>small{display:block;color:var(--ink2);margin:0 0 6px}
.excel-manual-row{display:grid;grid-template-columns:minmax(0,1fr) auto 36px;gap:8px;align-items:center;margin:0 0 6px}
.modal .excel-manual-row label{display:flex;align-items:center;gap:6px;margin:0;font-weight:500;white-space:nowrap;color:var(--ink2);font-size:13px}
.excel-manual-row input[list]{width:100%;min-height:38px;padding:7px 10px}
.excel-manual-row input[type=number]{width:64px;min-height:38px;padding:7px 8px}
.excel-manual-row .rm{border:0;background:transparent;font-size:20px;color:var(--ink2);cursor:pointer;min-height:38px}
.excel-manual-row .rm:hover{color:var(--warn)}
@media(max-width:520px){.excel-manual-row{grid-template-columns:minmax(0,1fr) 36px}.excel-manual-row label{grid-column:1;grid-row:2}}

/* Materialet · layers per wall type (defined by the user, no standard) */
.wall-type-layers>p{max-width:80ch}
.wt-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px;margin:12px 0}
.wt-type{border:1px solid var(--rule);border-radius:var(--r-ctl);padding:10px 12px 12px;margin:0;min-width:0;background:var(--sheet)}
.wt-type legend{font-weight:700;font-stretch:normal;font-size:16px;padding:0 6px}
.wt-rows{list-style:none;margin:0 0 10px;padding:0;counter-reset:wt}
.wt-row{display:grid;grid-template-columns:20px minmax(0,1fr) auto auto auto;gap:6px;align-items:center;padding:5px 0;border-bottom:1px solid #e7e8e5;counter-increment:wt}
.wt-row:before{content:counter(wt);color:var(--ink2);font-size:12px;font-variant-numeric:tabular-nums;text-align:right}
.wt-row select,.wt-row input{min-height:36px;padding:6px 8px;border:1px solid var(--rule-strong);border-radius:var(--r-ctl);background:var(--sheet);font:inherit;font-size:13.5px;min-width:0}
.wt-row label{display:flex;align-items:center;gap:4px;font-size:12.5px;color:var(--ink2);white-space:nowrap}
.wt-row input[type=number]{width:52px}
.wt-move{display:flex;gap:2px}
.wt-move .rm{border:1px solid var(--rule);background:var(--sheet-2);border-radius:var(--r-ctl);min-width:30px;min-height:32px;cursor:pointer;color:inherit}
.wt-move .rm:disabled{opacity:.35;cursor:default}
.wt-empty{color:var(--ink2);font-size:13.5px;margin:4px 0 10px}
.wt-foot{display:flex;align-items:center;gap:12px}
.wt-foot span{color:var(--timber);font-size:13px;font-weight:600}
@media(max-width:560px){.wt-row{grid-template-columns:18px minmax(0,1fr) auto}.wt-row label{grid-column:2}.wt-row select[data-wt-phase]{grid-column:3;grid-row:2}.wt-move{grid-column:2/4;justify-content:flex-end}}
.wt-row{grid-template-columns:20px auto auto 1fr;grid-template-areas:"n m m m" ". c p v";row-gap:6px;padding:8px 0}
.wt-row:before{grid-area:n}
.wt-row select[data-wt-material]{grid-area:m;width:100%}
.wt-row label{grid-area:c}
.wt-row select[data-wt-phase]{grid-area:p}
.wt-row .wt-move{grid-area:v;justify-content:flex-end}
@media(max-width:560px){.wt-row{grid-template-columns:18px auto auto 1fr}.wt-row label,.wt-row select[data-wt-phase],.wt-move{grid-column:auto;grid-row:auto}}

/* Frame editor (skeleti) — sketch first, one contextual panel */
.modal .box.frame-editor{width:min(1040px,100%);padding:0;display:flex;flex-direction:column}
.frame-editor>*{padding-left:22px;padding-right:22px}
.fe-head{display:flex;align-items:flex-start;gap:14px;padding-top:18px;padding-bottom:12px;border-bottom:1px solid var(--rule)}
.fe-head>div{flex:1;min-width:0}.fe-head h2{margin:0;font-size:24px;font-stretch:normal}.fe-head p{margin:2px 0 0}
.fe-head .close{border:0;background:transparent;font-size:24px;line-height:1;padding:2px 6px;cursor:pointer;color:var(--ink2)}
.modal .fe-model{display:flex;align-items:center;gap:8px;margin:2px 0 0;font-weight:600;font-size:13px}
.fe-model select{min-height:36px;padding:6px 10px;width:auto;max-width:240px}
.frame-editor .gl-result{margin:14px 22px 0;padding:0}
.fe-tools{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:12px 0 8px}
.fe-grow{flex:1}
.fe-msg{color:var(--green-ink);font-size:13px;font-weight:600}
.fe-zoom{display:inline-flex;align-items:center;gap:4px;font-size:12.5px;font-variant-numeric:tabular-nums}
.fe-zoom span{min-width:3.2em;text-align:center}
.fe-sketch{margin:0 22px;padding:10px;border:1px solid var(--rule);border-radius:var(--r-ctl);background:var(--sheet);overflow-x:auto;outline:none}
.fe-sketch:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.fe-sketch svg{display:block;width:100%;height:auto;max-height:380px;user-select:none;-webkit-user-select:none}
.fe-sketch .drag{cursor:grab;touch-action:none}.fe-sketch .drag:hover{fill-opacity:.2}
.fe-sketch.dragging,.fe-sketch.dragging .drag{cursor:grabbing}
.fe-sketch .sketch-cap{font-size:12px;color:var(--ink2);margin-top:6px}
.fe-lock:not(:empty){display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:8px 22px 0;padding:8px 12px;border:1px solid #EBD4A6;border-radius:var(--r-ctl);background:var(--timber-wash);font-size:13px}
.fe-lock span{flex:1 1 260px}
.fe-insp{margin:10px 22px 0;padding:10px 12px;border:1px solid var(--rule);border-left:4px solid var(--green);border-radius:var(--r-ctl);background:var(--sheet-2)}
.fe-insp-empty{border-left-color:var(--rule-strong);display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}
.fe-insp-empty p{margin:0;flex:1 1 300px;font-size:13.5px}
.fe-insp-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-bottom:8px}
.fe-insp-head b{font-stretch:normal}
.fe-insp-head input{flex:1 1 160px;min-height:34px;padding:6px 10px;border:1px solid var(--rule-strong);border-radius:var(--r-ctl);background:var(--sheet);font:inherit}
.fe-acts{display:flex;gap:6px}
.fe-danger{color:var(--warn)}
.fe-insp-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px}
.modal .fe-insp-fields label,.modal .fe-opts label{display:grid;gap:3px;margin:0;font-weight:500;font-size:12px;color:var(--ink2)}
.fe-insp-fields input,.fe-insp-fields select,.fe-sk input,.fe-opts input,.fe-opts select{width:100%;min-width:0;min-height:36px;padding:6px 8px;border:1px solid var(--rule-strong);border-radius:var(--r-ctl);background:var(--sheet);font:inherit;font-size:14px;color:var(--ink);font-variant-numeric:tabular-nums}
.frame-editor input.bad{border-color:var(--warn)}
.fe-more{margin:12px 22px 0;border-top:1px solid var(--rule);padding-top:8px}
.fe-more>summary{font-weight:650;font-stretch:normal;padding:4px 0;cursor:pointer}
.fe-more>summary span{font-weight:400;color:var(--ink2);font-size:13px;margin-left:8px;font-stretch:normal}
.fe-sk{display:grid;gap:6px;margin:8px 0}
.fe-sk-row{display:grid;grid-template-columns:170px repeat(3,minmax(0,1fr));gap:8px;align-items:center}
.fe-sk-head span{font-size:12px;color:var(--ink2);font-weight:600}
.fe-sk-name{display:flex;align-items:center;gap:8px;font-weight:600;font-size:13.5px}
.fe-sk-name i{width:12px;height:12px;border-radius:2px;flex:none}.fe-sk-name i.p{background:#a6aaa8}.fe-sk-name i.v{background:#d0702f}
.fe-sk output{font-size:13.5px;padding:7px 8px;border:1px dashed var(--rule);border-radius:var(--r-ctl);background:var(--sheet-2);font-variant-numeric:tabular-nums}
.fe-sk output.bad{border-color:var(--warn);color:var(--warn)}
.fe-opts{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px 12px;align-items:end;margin:8px 0 6px}
.modal .fe-opts .fe-check{display:flex;align-items:center;gap:8px;min-height:36px;font-size:13px;color:var(--ink)}
.fe-check input{width:18px;height:18px;min-height:0;accent-color:var(--green)}
.fe-auto{font-size:13px;color:var(--green-ink);align-self:center}
.frame-editor .err{margin:8px 22px 0}
.fe-foot{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px;padding-top:12px;padding-bottom:14px;border-top:1px solid var(--rule);background:var(--sheet-2);position:sticky;bottom:0}
.modal .fe-model-form label{display:flex;align-items:center;gap:8px;margin:0}
.fe-model-form input{min-height:38px;padding:7px 10px;border:1px solid var(--rule-strong);border-radius:var(--r-ctl);min-width:260px}
.fe-cut table,.frame-editor table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
.frame-editor th,.frame-editor td{padding:6px 8px;border-bottom:1px solid #e7e8e5;text-align:left}
@media(max-width:640px){.frame-editor>*{padding-left:14px;padding-right:14px}.frame-editor .gl-result,.fe-sketch,.fe-insp,.fe-more,.fe-lock:not(:empty){margin-left:14px;margin-right:14px}.fe-sk-row{grid-template-columns:repeat(3,minmax(0,1fr))}.fe-sk-row .fe-sk-name{grid-column:1/-1}.fe-sk-head span:first-child{display:none}.fe-model-form input{min-width:0;width:100%}}
/* apply a frame to many walls */
.modal .box.frame-apply{width:min(900px,100%)}
.frame-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;max-height:52vh;overflow:auto;margin:8px 0}
.frame-pick fieldset{border:1px solid var(--rule);border-radius:var(--r-ctl);padding:6px 10px 8px;margin:0;min-width:0}
.frame-pick legend label{display:flex;align-items:center;gap:6px;font-weight:700;margin:0}
.modal .frame-pick-wall{display:flex;align-items:center;gap:8px;margin:0;padding:4px 0;font-weight:500;border-top:1px solid #efefed}
.frame-pick-wall small{color:var(--ink2);margin-left:auto;font-variant-numeric:tabular-nums}
.frame-pick input[type=checkbox]{width:18px;height:18px;accent-color:var(--green)}
.frame-editor>*{flex-shrink:0}
.frame-editor>[data-editor]{padding-left:0;padding-right:0}
.frame-editor>.fe-more{padding-left:0;padding-right:0}
@media(max-width:640px){.fe-head{flex-wrap:wrap}.fe-head>div{flex:1 1 calc(100% - 44px)}.modal .fe-model{order:3;flex:1 1 100%}.fe-model select{flex:1;max-width:none}}

/* Excel import · step 3 (frame) */
.frame-step{display:grid;gap:10px;margin:8px 0 14px}
.frame-step-auto,.frame-step-manual{display:grid;gap:6px;padding:12px 14px;border:1px solid var(--rule);border-radius:var(--r-ctl);background:var(--sheet)}
.frame-step-manual{border-left:4px solid var(--green)}
.frame-step-auto{border-left:4px solid var(--s3)}
.frame-step b{font-stretch:normal}
.frame-step span,.frame-step small{color:var(--ink2);font-size:13px}
.modal .frame-step-auto label{display:flex;align-items:center;gap:8px;margin:2px 0 0;font-weight:600;font-size:13px}
.frame-step-auto input{width:90px;min-height:34px;padding:6px 8px;border:1px solid var(--rule-strong);border-radius:var(--r-ctl);font:inherit}
.frame-step progress{width:100%;height:8px}
.frame-todo{display:grid;gap:4px}
.frame-todo>div{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 12px;padding:6px 0;border-top:1px solid #efefed}
.frame-todo>div>span{color:var(--ink)}
.frame-todo small{margin-left:6px}
.frame-step-total{margin:0;font-size:14px}
.frame-step-manual>.frame-todo{max-height:320px;overflow:auto;padding-right:4px}
/* calculator: walls of the same size side by side */
.modal:has(.fe-walls){padding:10px}
.modal .box.frame-editor:has(.fe-walls){width:100%;max-width:none;height:calc(100vh - 20px);height:calc(100dvh - 20px);max-height:none;border-radius:4px}
.fe-walls{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(620px,100%),1fr));gap:14px;padding:0 22px}
.fe-wall{margin:0;border:1px solid var(--rule);border-radius:var(--r-ctl);background:var(--sheet);min-width:0;transition:border-color .15s,box-shadow .15s}
.fe-wall figcaption{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;padding:8px 12px 0;font-size:13px}
.fe-wall figcaption b{font-size:14px;letter-spacing:.01em}
.fe-wall figcaption small{color:var(--ink2);font-size:12px;font-variant-numeric:tabular-nums}
.fe-wall .fe-sketch{margin:0;border:0;padding:6px 8px 8px;background:transparent}
.fe-wall .fe-sketch svg{max-height:none}
.fe-wall figcaption{font-size:14px}.fe-wall figcaption b{font-size:16px}.fe-wall figcaption small{font-size:13px}
.fe-wall .fe-sketch .sketch-cap{display:none}
.fe-wall:not(.on){cursor:pointer}.fe-wall:not(.on):hover{border-color:var(--rule-strong)}
.fe-wall:not(.on) svg{opacity:.78}
.fe-wall.on{border-color:var(--green);box-shadow:0 0 0 1px var(--green)}
.fe-wall.on figcaption b{color:var(--green)}
.fe-off{color:var(--warn);font-weight:600}.fe-okk{color:var(--green)}
@media(max-width:640px){.fe-walls{padding:0 14px;grid-template-columns:1fr}}
/* windows: full screen, except short confirmations, the QR screen and the PIN screen */
.modal:has(>.box:not(.small):not(.qr-screen):not(.pin-screen)){padding:10px}
.modal>.box:not(.small):not(.qr-screen):not(.pin-screen){width:100%!important;max-width:none!important;height:calc(100vh - 20px);height:calc(100dvh - 20px);max-height:none!important;overflow:auto;border-radius:4px}
.modal>.box:not(.small):not(.qr-screen):not(.pin-screen):not(.frame-editor){padding:26px 32px}
.modal>.box.small{width:min(560px,100%)}
@media(max-width:640px){.modal:has(>.box:not(.small):not(.qr-screen):not(.pin-screen)){padding:0}.modal>.box:not(.small):not(.qr-screen):not(.pin-screen){height:100dvh;border-radius:0}.modal>.box:not(.small):not(.qr-screen):not(.pin-screen):not(.frame-editor){padding:18px 16px}}
.modal>.box .frame-pick{max-height:none}
.modal>.box.frame-editor:not(:has(.fe-walls)) .fe-sketch svg{max-height:62vh}
.modal>.box.frame-editor .fe-foot{margin-top:auto}
/* admin: total value of each project */
.project-totals{margin:0 0 22px;padding:22px 24px;border:1px solid var(--rule);border-radius:var(--r-sheet);background:var(--sheet)}
.project-totals header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 16px;margin-bottom:14px}
.project-totals h2{margin:0}.project-totals header p{margin:0;color:var(--ink2);font-size:13px}
.pt-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));border:1px solid var(--rule);border-radius:var(--r-ctl);margin-bottom:16px;overflow:hidden}
.pt-kpis>div{display:grid;gap:4px;padding:14px 16px;border-left:1px solid var(--rule)}.pt-kpis>div:first-child{border-left:0}
.pt-kpis span{font-size:12.5px;color:var(--ink2)}
.pt-kpis strong{font-size:24px;font-variant-numeric:tabular-nums;line-height:1.15}
.project-totals table td,.project-totals table th{font-variant-numeric:tabular-nums;white-space:nowrap}
.project-totals tfoot th,.project-totals tfoot td{font-weight:700;border-top:2px solid var(--ink)}
.project-totals table{width:100%;border-collapse:collapse;font-size:14px}
.project-totals th,.project-totals td{padding:10px 12px;border-bottom:1px solid #e7e8e5;text-align:right}
.project-totals thead th{font-size:12px;font-weight:600;color:var(--ink2);border-bottom:1px solid var(--rule-strong)}
.project-totals tr>:first-child,.project-totals tbody th,.project-totals thead th:nth-child(2){text-align:left}
.project-totals tbody th{font-weight:700}
.project-totals tfoot th{text-align:left}
.project-totals td.euro-buy,.project-totals .pt-kpis .euro-buy{color:#9A5B12}.project-totals td.euro-sell,.project-totals .pt-kpis .euro-sell{color:var(--green)}
.mes-waiting{display:block;width:100%;text-align:left;background:none;border:0;padding:3px 0;font:inherit;font-weight:650;font-size:16px;color:#6E4813;cursor:pointer}.mes-waiting:hover{text-decoration:underline}
