*{box-sizing:border-box}body{margin:var(--zero);font-family:var(--font);font-size:var(--font-size);background:var(--bg);color:var(--tx)}
.app-shell{display:flex;min-height:var(--screen)}.rail{width:var(--rail-width);flex-shrink:0;background:var(--rail);padding:var(--page);display:flex;flex-direction:column;gap:var(--gap)}
.rail a{color:var(--railTx);text-decoration:none;padding:var(--sm)}.rail a:hover{background:var(--railOnBg);color:var(--railOn);border-radius:var(--sm)}.logo{font-size:var(--title);font-weight:var(--weight)}
main{flex:1;min-width:var(--zero)}.top{display:flex;align-items:center;gap:var(--gap);padding:var(--page);border-bottom:var(--border) solid var(--line)}.top form:first-child{flex:1}.content{padding:var(--page)}
h1{font-size:var(--title)}h1,h2,p{margin-top:var(--zero);margin-bottom:var(--gap)}.panel{background:var(--sf);padding:var(--page);border-radius:var(--r);box-shadow:var(--shadow)}.split{display:grid;grid-template-columns:1fr 2fr;gap:var(--page)}.grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap)}
button,input,select,textarea{font:inherit;border:var(--border) solid var(--line);border-radius:var(--sm);background:var(--sf2);color:var(--tx);padding:var(--sm);min-height:var(--control)}input:not([type=checkbox]),select,textarea{width:var(--wide)}input[type=checkbox]{min-height:var(--zero)}
button{cursor:pointer}button:disabled{opacity:.5;cursor:default}.primary,.selected{background:var(--ac);color:var(--acTx)}label{display:block;margin-bottom:var(--gap);color:var(--mut)}label input,label select{display:block;margin-top:var(--sm)}
table{width:var(--wide);border-collapse:collapse}td,th{text-align:left;padding:var(--sm);border-bottom:var(--border) solid var(--line)}.tabs,.actions{display:flex;gap:var(--sm);margin:var(--gap) var(--zero);flex-wrap:wrap}
.tree{list-style:none;padding-left:var(--indent)}.tree button{margin:var(--sm) var(--zero)}.badge{display:inline-block;padding:var(--sm);background:var(--acSoft);color:var(--ac);border-radius:var(--r)}.toast{padding:var(--gap);margin:var(--gap) var(--zero);color:var(--ok);background:var(--sf)}.error{color:var(--bad)}
.modal-shade{position:fixed;inset:var(--zero);background:var(--shade);display:grid;place-items:center}.modal{width:var(--modal);max-width:var(--wide)}.login{max-width:var(--login);margin:auto}.code{font-size:var(--code);overflow-wrap:anywhere}.muted{color:var(--mut)}pre{white-space:pre-wrap;overflow-wrap:anywhere}a{color:var(--ac)}

/* Общая оболочка и редакторы 032–033: все размеры и цвета из токенов. */
body{line-height:var(--line-height)}h2{font-size:var(--subtitle)}h3,legend{font-size:var(--font-size);font-weight:var(--weight)}
.r-icon{width:var(--icon);height:var(--icon);flex-shrink:0;fill:none;stroke:currentColor;stroke-width:var(--icon-stroke);stroke-linecap:round;stroke-linejoin:round}.icon-symbols{position:absolute;width:var(--zero);height:var(--zero);overflow:hidden}
.rail{padding:var(--gap);gap:var(--page)}.rail nav{display:flex;flex-direction:column;gap:var(--sm)}.rail nav a{display:flex;align-items:center;gap:var(--sm);border-radius:var(--sm);min-height:var(--control)}.rail a.active{background:var(--railOnBg);color:var(--railOn);font-weight:var(--weight)}.rail .logo{display:grid;place-items:center;width:max-content;min-width:var(--logo-size);height:var(--logo-size);background:var(--sf);color:var(--tx);border-radius:var(--r);padding:var(--zero) var(--sm);white-space:nowrap}
.top{background:var(--bg);border-bottom:none;flex-wrap:wrap}.top input,.top button{background:var(--sf);box-shadow:var(--shadow)}.content{padding-top:var(--sm)}.content>h1{margin-bottom:var(--page)}
.record-stack{display:grid;gap:var(--page);min-width:var(--zero)}.record-table{width:var(--wide);min-width:var(--zero)}.table-scroll{overflow-x:auto}.table-tools{display:flex;align-items:end;gap:var(--gap);margin-bottom:var(--gap)}.table-tools label{flex:1;margin:var(--zero)}
.content>.panel,.content>section,.content>details{margin-bottom:var(--page)}fieldset{min-width:var(--zero);border:var(--border) solid var(--line);border-radius:var(--r);padding:var(--gap);margin:var(--gap) var(--zero)}legend{padding-inline:var(--sm);color:var(--tx)}fieldset>.grid{margin-top:var(--sm)}
.grid,.settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(var(--panel-min),var(--wide)),1fr));gap:var(--gap)}.settings-grid fieldset{margin-block:var(--sm)}.settings-grid .badge{margin-bottom:var(--sm)}
label:has(>input[type=checkbox]),label:has(>input[type=radio]){display:flex;align-items:center;gap:var(--sm)}label input[type=checkbox],label input[type=radio]{display:inline-block;margin:var(--zero);width:auto;min-height:var(--zero);accent-color:var(--ac)}input[type=radio]{width:auto;min-height:var(--zero)}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:var(--focus) solid var(--ac);outline-offset:var(--border)}button:hover:not(:disabled){border-color:var(--ac)}button:disabled{cursor:default}summary{cursor:pointer;color:var(--tx)}
th{background:var(--sf2);color:var(--mut);font-weight:var(--weight);white-space:nowrap}td{vertical-align:middle}tbody tr:hover{background:var(--sf2)}td small,.tree-node small{display:block;color:var(--mut);font-size:var(--caption)}.table-thumbnail,.image-placeholder{width:var(--thumb);height:var(--thumb);border-radius:var(--sm);object-fit:cover;background:var(--acSoft)}.image-placeholder{display:grid;place-items:center;color:var(--ac)}
.empty-state{padding:var(--page);color:var(--mut);text-align:center}.empty-state h2{color:var(--tx);margin-top:var(--gap)}.empty-state p{margin-bottom:var(--zero)}.empty-state>.r-icon{width:var(--control);height:var(--control)}
.org-layout{align-items:start}.org-layout>.panel{min-width:var(--zero)}.tree{list-style:none;margin:var(--zero);padding:var(--zero)}.tree .tree{margin-left:var(--indent);padding-left:var(--sm);border-left:var(--border) solid var(--line)}.tree li{position:relative}.tree .tree>li:before{content:'';position:absolute;top:var(--page);left:calc(var(--sm) * -1);width:var(--sm);border-top:var(--border) solid var(--line)}
.tree-row{display:flex;align-items:center;gap:var(--border)}.tree button{margin-block:var(--border)}.tree-toggle{display:grid;place-items:center;width:var(--tree-counter);padding:var(--zero);border:none;background:transparent;flex-shrink:0}.tree-toggle span{display:flex}.tree-toggle .expanded{transform:rotate(var(--tree-turn))}.tree-spacer{width:var(--tree-counter);flex-shrink:0}.tree-node{display:flex;align-items:center;gap:var(--sm);text-align:left;flex:1;min-width:var(--zero);border-color:transparent;background:transparent}.tree-node>span{overflow-wrap:anywhere}.tree-node.selected{background:var(--acSoft);color:var(--ac)}.tree-count{margin-left:auto;border-radius:var(--r);background:var(--sf2);padding-inline:var(--sm);font-size:var(--caption)}
.tabs [role=tab]{flex:1}.catalog-tile{border:var(--border) solid var(--line)}.catalog-tile[data-available=False]{color:var(--mut)}
.kkm-card{margin-bottom:var(--gap);border:var(--border) solid var(--line);padding:var(--gap);border-radius:var(--r)}.kkm-wizard{display:flex;flex-direction:column;gap:var(--gap)}.kkm-primary{margin-top:auto}.kkm-primary button{width:var(--wide)}
/* Адаптивная оболочка 043. Размеры в логических пикселях учитывают масштаб браузера. */
.navigation-toggle,.navigation-button{display:none}
.split>*{min-width:var(--zero)}
.modal{max-height:var(--screen);overflow-y:auto}
html[data-width=compact] .split{grid-template-columns:1fr}
html[data-mobile=true] .app-shell{padding-top:calc(var(--control) + var(--gap))}
html[data-mobile=true] .navigation-button{display:flex;align-items:center;position:fixed;top:var(--zero);left:var(--zero);right:var(--zero);min-height:var(--control);padding:var(--sm);margin:var(--zero);background:var(--rail);color:var(--railOn);z-index:var(--drawer-layer);cursor:pointer}
html[data-mobile=true] .navigation-toggle{display:block;position:fixed;top:var(--sm);right:var(--sm);z-index:calc(var(--drawer-layer) + 1);width:var(--control);height:var(--control);opacity:0}
html[data-mobile=true] .rail{display:none;position:fixed;top:var(--control);bottom:var(--zero);left:var(--zero);max-width:var(--viewport-width);overflow-y:auto;z-index:var(--drawer-layer)}
html[data-mobile=true] .navigation-toggle:checked~.rail{display:flex}
html[data-mobile=true] .navigation-toggle:focus-visible~.navigation-button{outline:var(--focus) solid var(--ac)}
html[data-mobile=true] .grid,html[data-mobile=true] .settings-grid,html[data-mobile=true] .split{grid-template-columns:1fr}
html[data-mobile=true] .top,html[data-mobile=true] .content{padding:var(--sm)}
html[data-mobile=true] .table-scroll{overflow-x:visible}
html[data-mobile=true] table,html[data-mobile=true] tbody,html[data-mobile=true] tr,html[data-mobile=true] td{display:block;width:var(--wide);min-width:var(--zero);overflow-wrap:anywhere}
html[data-mobile=true] thead{position:absolute;clip-path:inset(100%);overflow:hidden;width:var(--border);height:var(--border)}
html[data-mobile=true] tbody tr{margin-bottom:var(--gap);padding:var(--sm);border:var(--border) solid var(--line);border-radius:var(--r);background:var(--sf)}
html[data-mobile=true] td:before{content:attr(data-label);display:block;color:var(--mut);font-size:var(--caption);margin-bottom:var(--sm)}
html[data-mobile=true] .tree .tree{margin-left:var(--sm)}
html[data-mobile=true] .table-tools{flex-wrap:wrap}
html[data-width=compact] .zone-columns{grid-template-columns:minmax(var(--zero),1fr)}
html[data-mobile=true] .catalog-scroll{overflow-x:visible}
html[data-mobile=true] .catalog-scroll table{table-layout:auto}
/* Склад: общая карточная раскладка и выравнивание денежных сумм. */
.stock-layout{display:grid;grid-template-columns:minmax(var(--zero),1fr) minmax(var(--zero),1fr);gap:var(--page);align-items:start;margin-top:var(--page)}.stock-layout>.record-stack,.stock-layout>.r-card{min-width:var(--zero)}.stock-card-heading,.stock-record{display:flex;justify-content:space-between;align-items:start;gap:var(--gap)}.stock-card-heading{margin-bottom:var(--gap)}.stock-card-heading h2{margin:var(--zero)}.stock-record{padding-block:var(--gap);border-bottom:var(--border) solid var(--line)}.stock-record>div{min-width:var(--zero)}.stock-record p{margin-top:var(--sm)}.stock-amount{text-align:right;white-space:nowrap}.stock-actions{margin-top:var(--page);display:grid;gap:var(--gap)}.stock-actions>button{width:var(--wide)}.r-card{margin-bottom:var(--page)}
@media(max-width:64rem){.stock-layout{grid-template-columns:minmax(var(--zero),1fr)}}
.record-stack>.r-card{margin-bottom:var(--zero)}
