
  :root[data-theme="light"]{
    --bg:#eef1f5; --bg-canvas:#ffffff; --panel:#ffffff; --panel-alt:#f3f5f8;
    --border:#dbe1e8; --text:#1b232c; --muted:#5c6774;
    --frame:#2f7ea3; --frame-dark:#1f5c78; --frame-soft:#e4f0f5;
    --wood:#cf9f5f; --wood-dark:#8a6a3f; --door:#7fb8d9; --door-dark:#2f7ea3;
    --danger:#c0392b; --warn:#a5691a;
    --shadow:0 1px 2px rgba(20,30,40,.06), 0 6px 20px rgba(20,30,40,.06);
  }
  :root[data-theme="dark"]{
    --bg:#12161c; --bg-canvas:#0e1217; --panel:#1a2029; --panel-alt:#212934;
    --border:#2b3542; --text:#e7ecf1; --muted:#8b98a6;
    --frame:#5fa8c9; --frame-dark:#3d7a94; --frame-soft:#1c2c34;
    --wood:#d3a86b; --wood-dark:#8a6a3f; --door:#8fc7e0; --door-dark:#4f8aa8;
    --danger:#e2685c; --warn:#e0b15c;
    --shadow:0 1px 2px rgba(0,0,0,.3), 0 8px 24px rgba(0,0,0,.35);
  }
  *{box-sizing:border-box;}
  html,body{height:100%;}
  body{margin:0; background:var(--bg); color:var(--text); font-family:'Inter',-apple-system,Segoe UI,Roboto,sans-serif; font-size:14px; -webkit-tap-highlight-color:transparent;}
  h1,h2,h3{font-family:'Space Grotesk','Inter',sans-serif; margin:0 0 4px;}
  .mono, input, select, td, .dimtext, .dimlabel{font-family:'JetBrains Mono','Consolas',monospace;}
  #scaleWrap{transform-origin:top left; transition:zoom .1s;}

  /* ============ SHARED HEADER / CHROME ============ */
  header{
    position:sticky; top:0; z-index:20;
    padding:12px 20px; border-bottom:1px solid var(--border);
    background:var(--panel); box-shadow:var(--shadow);
    display:flex; align-items:center; gap:14px; flex-wrap:wrap;
  }
  header .brand{display:flex; align-items:center; gap:10px; margin-right:auto;}
  header .logo{width:34px; height:34px; border-radius:9px; flex:none;}
  header .brandtext{display:flex; flex-direction:column;}
  header h1{font-size:16px;}
  header p{margin:1px 0 0; color:var(--muted); font-size:11.5px;}

  .segmented{display:flex; border:1px solid var(--border); border-radius:9px; overflow:hidden; background:var(--panel-alt);}
  .segmented button{border:none; background:transparent; padding:8px 12px; font-size:12.5px; cursor:pointer; color:var(--muted); font-family:inherit;}
  .segmented button.active{background:var(--frame); color:#fff; font-weight:600;}

  .toolbtn{display:flex; align-items:center; gap:4px; border:1px solid var(--border); background:var(--panel-alt); border-radius:8px; padding:6px 8px;}
  .toolbtn button{background:transparent; border:none; color:var(--text); cursor:pointer; font-size:13px; padding:2px 6px; font-family:inherit;}
  .toolbtn button:hover{color:var(--frame);}
  .zoomval{font-size:11px; color:var(--muted); min-width:34px; text-align:center;}
  .iconbtn{border:1px solid var(--border); background:var(--panel-alt); border-radius:8px; padding:7px 10px; cursor:pointer; color:var(--text); font-size:13px; white-space:nowrap;}
  .iconbtn:hover{border-color:var(--frame); color:var(--frame);}

  .summarybar{
    display:flex; gap:18px; flex-wrap:wrap; padding:10px 20px; background:var(--frame-soft);
    border-bottom:1px solid var(--border); font-size:12px; color:var(--frame-dark);
  }
  .summarybar b{font-family:'JetBrains Mono',monospace; font-size:12.5px;}

  @media (min-width:1500px){ .viewport{padding:22px;} }
  @media (max-width:520px){
    header{padding:10px 12px;}
    .summarybar{padding:8px 12px; gap:10px;}
  }

  /* ============ DRAWER (shared) ============ */
  .drawer-backdrop{position:fixed; inset:0; background:rgba(20,30,40,.4); z-index:40; display:none;}
  .drawer-backdrop.open{display:block;}
  .drawer{position:fixed; top:0; right:0; width:min(380px,92vw); height:100%; background:var(--panel); z-index:41; box-shadow:-8px 0 24px rgba(0,0,0,.15); transform:translateX(100%); transition:transform .18s; display:flex; flex-direction:column;}
  .drawer.open{transform:translateX(0);}
  .drawer-head{padding:16px; border-bottom:1px solid var(--border); display:flex; justify-content:space-between; align-items:center;}
  .drawer-body{padding:14px; overflow:auto; flex:1;}
  .hist-item{border:1px solid var(--border); border-radius:8px; padding:10px; margin-bottom:8px; background:var(--panel-alt);}
  .hist-item .row{display:flex; justify-content:space-between; align-items:center; margin-bottom:6px;}
  .hist-item .row2{display:flex; gap:6px;}
  .hist-item b{font-size:12.5px;}
  .hist-item .muted{font-size:11px;}
  .muted{color:var(--muted);}

  footer{padding:14px 24px 40px; color:var(--muted); font-size:11.5px; line-height:1.5; max-width:1500px; margin:0 auto;}
  @media print{ header, .summarybar, .drawer, .drawer-backdrop{display:none !important;} body{background:#fff; color:#000;} }

  /* ================================================================ */
  /* ============ NICHE APP (Шкаф в нишу) ============ */
  /* ================================================================ */
  #appMax{max-width:1500px; margin:0 auto;}
  .layout{display:flex; gap:16px; padding:16px; align-items:flex-start;}
  @media (max-width:960px){ .layout{flex-direction:column;} }
  .sidebar{width:340px; flex:none; display:flex; flex-direction:column; gap:12px;}
  @media (max-width:960px){ .sidebar{width:100%;} }

  .side-section{background:var(--panel); border:1px solid var(--border); border-radius:10px; padding:14px; box-shadow:var(--shadow);}
  .side-section h3{font-size:11px; text-transform:uppercase; letter-spacing:.09em; color:var(--frame); margin-bottom:10px; border-bottom:1px dashed var(--border); padding-bottom:6px;}
  .side-section label{display:flex; justify-content:space-between; align-items:center; gap:8px; margin-bottom:8px; font-size:12.5px; color:var(--muted);}
  .side-section label.checkbox{justify-content:flex-start;}
  .side-section label.inline{justify-content:flex-start; gap:6px; margin:6px 0 4px 0;}
  input[type=number], select{background:var(--bg-canvas); border:1px solid var(--border); color:var(--text); border-radius:6px; padding:5px 7px; width:96px; font-size:12.5px;}
  input[type=checkbox]{accent-color:var(--frame); margin-right:6px;}
  .row-buttons{display:flex; gap:6px; flex-wrap:wrap; margin-bottom:8px;}
  button{background:var(--panel-alt); border:1px solid var(--border); color:var(--text); border-radius:6px; padding:6px 10px; font-size:12px; cursor:pointer; font-family:inherit; transition:.12s;}
  button:hover{border-color:var(--frame); color:var(--frame);}
  button.primary{background:var(--frame); border-color:var(--frame); color:#fff; font-weight:600;}
  button.primary:hover{background:var(--frame-dark); border-color:var(--frame-dark); color:#fff;}
  button.mini{padding:2px 7px; font-size:11px;}
  button.danger:hover{border-color:var(--danger); color:var(--danger);}

  .note{font-size:11px; color:var(--warn); background:rgba(165,105,26,.08); border:1px solid rgba(165,105,26,.3); border-radius:6px; padding:6px 8px; margin:-2px 0 10px;}
  body.frame-tube .only-panel-frame{display:none;}
  body.frame-panel .only-tube-frame{display:none;}

  .section-card{background:var(--panel-alt); border:1px solid var(--border); border-radius:8px; padding:10px; margin-bottom:8px;}
  .section-head{display:flex; justify-content:space-between; align-items:center; margin-bottom:6px;}
  .section-head strong{font-size:13px;}
  .shelves-list{margin:6px 0;}
  .shelf-row{display:flex; align-items:center; gap:6px; font-size:12px; margin-bottom:4px; color:var(--muted);}
  .shelf-row input{width:70px;}
  .divider-chip{text-align:center; font-size:11px; color:var(--frame); margin:2px 0 8px; border-top:1px dashed var(--border); border-bottom:1px dashed var(--border); padding:4px 0;}
  .door-row{display:flex; gap:6px; align-items:center; margin:4px 0; flex-wrap:wrap;}

  #appNiche .workspace{flex:1; min-width:0; display:flex; flex-direction:column; gap:16px;}
  #appNiche .viewport{display:flex; gap:16px; background:var(--bg-canvas); border:1px solid var(--border); border-radius:12px; padding:16px; flex-wrap:wrap; box-shadow:var(--shadow);}
  #appNiche .view-block{flex:1; min-width:280px;}
  #appNiche .view-block h3{font-size:11px; text-transform:uppercase; letter-spacing:.08em; color:var(--muted); margin-bottom:8px;}
  #appNiche svg{width:100%; height:auto; display:block; background:var(--bg-canvas);}
  .dimtext, .dimlabel{fill:var(--muted); font-size:9px;}
  .dimlabel{fill:#516072; font-size:8px;}
  #appNiche .legend{display:flex; gap:14px; flex-wrap:wrap; font-size:11px; color:var(--muted); margin-top:6px;}
  #appNiche .legend span{display:inline-flex; align-items:center; gap:5px;}
  #appNiche .legend i{width:11px; height:11px; border-radius:2px; display:inline-block;}

  #appNiche .tables{background:var(--panel); border:1px solid var(--border); border-radius:12px; padding:16px; box-shadow:var(--shadow);}
  #appNiche .tabs{display:flex; gap:6px; margin-bottom:12px; border-bottom:1px solid var(--border); padding-bottom:10px; flex-wrap:wrap; overflow-x:auto;}
  .tab-btn{background:transparent; border:1px solid var(--border); white-space:nowrap;}
  .tab-btn.active{background:var(--frame); border-color:var(--frame); color:#fff; font-weight:600;}
  .tab-panel{display:none;}
  .tab-panel.active{display:block;}
  #appNiche .summary{margin-bottom:10px; font-size:12.5px; color:var(--muted);}
  #appNiche .summary b{color:var(--text);}
  #appNiche table{width:100%; border-collapse:collapse; font-size:12px;}
  #appNiche table.bom th{text-align:left; color:var(--frame); font-size:11px; text-transform:uppercase; letter-spacing:.06em; padding:8px 6px 4px; border-bottom:1px solid var(--border);}
  #appNiche td, #appNiche th{padding:6px; border-bottom:1px solid var(--border); vertical-align:top;}
  #appNiche td:last-child, #appNiche th:last-child{text-align:right; white-space:nowrap;}
  #appNiche .sheet-block{display:inline-block; margin:0 14px 14px 0; vertical-align:top;}
  #appNiche .exports{display:flex; gap:8px; margin-top:14px; flex-wrap:wrap; border-top:1px solid var(--border); padding-top:12px;}
  @media print{ #appNiche .sidebar, #appNiche .exports{display:none;} }

  /* ================================================================ */
  /* ============ GARDEROB APP (Гардеробная по стенам) ============ */
  /* ================================================================ */
  #appGarderob{
    --g-ink:#263238; --g-accent:#E65100; --g-frame:#37474F; --g-rod:#607D8B;
    --g-shelf:#C9A876; --g-shelfEdge:#8D6E3A; --g-bg:#f4f6f7; --g-card:#ffffff; --g-line:#dfe3e6;
    padding:16px; background:var(--g-bg); font-family:'Segoe UI',system-ui,-apple-system,sans-serif; color:var(--g-ink);
  }
  #appGarderob .wrap{max-width:1000px; margin:0 auto;}
  #appGarderob h1{font-size:19px; margin:0 0 4px;}
  #appGarderob .sub{color:#607080; font-size:13px; margin-bottom:14px;}
  #appGarderob .params{display:flex; flex-wrap:wrap; gap:8px; margin-bottom:12px;}
  #appGarderob .chip{background:var(--g-card); border:1px solid var(--g-line); border-radius:8px; padding:6px 10px; font-size:12.5px; box-shadow:0 1px 2px rgba(0,0,0,.04);}
  #appGarderob .chip b{color:var(--g-accent);}
  #appGarderob .tabs{display:flex; gap:6px; margin-bottom:8px; flex-wrap:wrap;}
  #appGarderob .tab{flex:1 1 auto; min-width:76px; text-align:center; padding:9px 4px; background:var(--g-card); border:1px solid var(--g-line); border-radius:8px; font-size:11.5px; cursor:pointer; user-select:none;}
  #appGarderob .tab.active{background:var(--g-frame); color:#fff; border-color:var(--g-frame);}
  #appGarderob .toolbar{display:flex; gap:8px; margin-bottom:10px; flex-wrap:wrap;}
  #appGarderob .toolbar button{font-size:12px;}
  #appGarderob .card{background:var(--g-card); border:1px solid var(--g-line); border-radius:10px; padding:12px; box-shadow:0 1px 3px rgba(0,0,0,.05); overflow:hidden; margin-bottom:12px;}
  #appGarderob .view{display:none;}
  #appGarderob .view.active{display:block;}
  #appGarderob svg{width:100%; height:auto; display:block;}
  #appGarderob .legend{display:flex; flex-wrap:wrap; gap:12px; font-size:12px; color:#546070; margin-top:8px; padding-top:8px; border-top:1px dashed var(--g-line);}
  #appGarderob .legend span{display:flex; align-items:center; gap:5px;}
  #appGarderob .sw{width:16px; height:6px; border-radius:2px; display:inline-block;}
  #appGarderob table{width:100%; border-collapse:collapse; font-size:12px;}
  #appGarderob th, #appGarderob td{border:1px solid var(--g-line); padding:6px 7px; text-align:left;}
  #appGarderob th{background:#eef1f3; font-size:11.5px;}
  #appGarderob td.num{text-align:center; width:28px; color:#78838c;}
  #appGarderob td.qty{text-align:center; width:90px; font-weight:600;}
  #appGarderob .group-row td{background:#f7f9fa; font-weight:700; font-size:11.5px; color:var(--g-accent);}
  #appGarderob .note{font-size:12.5px; color:#607080; margin-top:10px; line-height:1.5; background:none; border:none; padding:0;}
  #appGarderob .steps{font-size:13px; line-height:1.6; margin:8px 0 0 18px; padding:0;}
  #appGarderob h3{font-size:14.5px; margin:0 0 8px;}
  #appGarderob h4{font-size:13px; margin:4px 0 4px;}
  #appGarderob .globalGrid{display:flex; gap:10px; flex-wrap:wrap; align-items:flex-end;}
  #appGarderob .field{display:flex; flex-direction:column; gap:3px; font-size:12px; color:#546070;}
  #appGarderob .field input, #appGarderob .field select{border:1px solid var(--g-line); border-radius:6px; padding:6px 8px; font-size:13px; width:100px; font-family:inherit;}
  #appGarderob .field.wide input{width:180px;}
  #appGarderob button{background:var(--g-frame); color:#fff; border:none; border-radius:6px; padding:7px 12px; font-size:12.5px; cursor:pointer; font-family:inherit;}
  #appGarderob button.secondary{background:#eceff1; color:var(--g-ink);}
  #appGarderob button.danger{background:#fdecea; color:#c62828; padding:5px 9px;}
  #appGarderob button:hover{opacity:.9;}
  #appGarderob .modRow{border:1px solid var(--g-line); border-radius:8px; padding:10px; margin-bottom:8px; background:#fbfcfc;}
  #appGarderob .modHead{display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; gap:6px; flex-wrap:wrap;}
  #appGarderob .modTitle{font-weight:700; font-size:12.5px; color:var(--g-frame);}
  #appGarderob .modBtns{display:flex; gap:4px;}
  #appGarderob .modBtns button{padding:3px 7px; font-size:11px;}
  #appGarderob .modFields{display:flex; gap:10px; flex-wrap:wrap; align-items:flex-end;}
  #appGarderob .wallCard h3{font-size:14px;}
  #appGarderob .wallCheckGrid{display:flex; gap:10px; flex-wrap:wrap;}
  #appGarderob .wallCheckItem{display:flex; align-items:center; gap:6px; font-size:13px; border:1px solid var(--g-line); padding:8px 12px; border-radius:8px; background:#fbfcfc; cursor:pointer;}
  #appGarderob .elevSwitch{display:flex; gap:6px; margin-bottom:10px; flex-wrap:wrap;}
  #appGarderob .elevSwitch button{padding:6px 10px; border-radius:6px; border:1px solid var(--g-line); background:#fff; color:#37474F; font-size:12px;}
  #appGarderob .elevSwitch button.active{background:#37474F; color:#fff;}
  #appGarderob .nodesGrid{display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:12px;}
  #appGarderob .nodeCard{border:1px solid var(--g-line); border-radius:8px; padding:10px; background:#fbfcfc;}
  #appGarderob .nodeCard svg{background:#fff; border-radius:6px; border:1px solid var(--g-line);}
  #appGarderob .nodeCard p{margin:4px 0 0; font-size:11.5px; color:#607080; line-height:1.4;}
  #appGarderob .elList{display:flex; flex-direction:column; gap:5px; margin-top:8px;}
  #appGarderob .elRow{display:flex; align-items:flex-end; gap:8px; background:#fff; border:1px solid var(--g-line); border-radius:6px; padding:5px 8px; flex-wrap:wrap;}
  #appGarderob .elTag{font-size:12px; font-weight:700; color:#455A64; min-width:56px;}
  #appGarderob .cornerToggle{display:flex; align-items:center; gap:6px; font-size:12px;}
  @media print{
    #appGarderob .toolbar, #appGarderob .tabs, #appGarderob .params, #appGarderob #wallConfigs, #appGarderob #cornersBox, #appGarderob button { display:none !important; }
    #appGarderob .view{display:none !important;}
    #appGarderob .view.active{display:block !important;}
    #appGarderob .card{box-shadow:none; border:none; padding:0; margin-bottom:6px;}
  }


.postGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px;margin-top:12px}.postCard{border:1px solid var(--g-line,#d6dde1);border-radius:10px;padding:12px;background:#fff;overflow:hidden}.postHead{display:flex;justify-content:space-between;font-size:16px}.postHead span{font-weight:700}.postWhere{font-size:12px;color:#607080;margin:6px 0}.postSvg{max-width:280px;margin:auto}.postCard table{width:100%;border-collapse:collapse;font-size:12px}.postCard th,.postCard td{border-bottom:1px solid #e1e6e9;padding:5px;text-align:left}.postCard th{width:42%}.manufacturingPosts{margin-top:18px}

