:root{--navy:#102233;--ink:#182532;--muted:#667686;--line:#d8e1e8;--bg:#f3f6f8;--panel:#fff;--green:#11875f;--green-dark:#0b6748;--green-soft:#e8f5ef;--amber:#a96500;--amber-soft:#fff3da;--red:#b73939;--red-soft:#fdeaea;--shadow:0 8px 24px rgba(16,34,51,.07);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg)}a{color:var(--green-dark);text-decoration:none}button,input,select,textarea{font:inherit}code{font-family:Consolas,"SFMono-Regular",monospace;overflow-wrap:anywhere}.topbar{position:sticky;top:0;z-index:30;min-height:66px;display:flex;align-items:center;gap:28px;padding:0 24px;background:var(--navy);color:#fff;box-shadow:0 2px 12px rgba(0,0,0,.16)}.brand{display:flex;align-items:center;gap:10px;color:#fff;font-size:18px;font-weight:800}.brand-mark{display:grid;place-items:center;width:50px;height:50px;border-radius:14px;background:var(--green);color:#fff;font-size:23px;font-weight:900}.brand-mark.small{width:36px;height:36px;border-radius:10px;font-size:17px}.topbar nav{display:flex;align-self:stretch;align-items:center;gap:4px}.topbar nav a{padding:10px 14px;border-radius:8px;color:#c9d4dd;font-size:15px;font-weight:750}.topbar nav a:hover,.topbar nav a.active{background:#1c3448;color:#fff}.user-menu{margin-left:auto;display:flex;gap:14px;align-items:center;font-size:13px}.user-menu span{color:#d5dee6}.user-menu a{color:#9bd0ba}.menu-button{display:none}.container{width:min(1540px,100%);margin:0 auto;padding:28px 26px 64px}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:20px}.page-heading h1{margin:0;font-size:29px;letter-spacing:-.02em}.panel,.match-card,.inverse-card,.relation-block,.classification-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.panel{padding:20px}.panel h2{margin:0 0 16px;font-size:19px}.button{display:inline-flex;align-items:center;justify-content:center;border:1px solid #c7d3dc;border-radius:9px;padding:9px 14px;background:#fff;color:#253746;font-weight:750;cursor:pointer;white-space:nowrap}.button:hover{border-color:#91a6b6;background:#f9fbfc}.button.primary{border-color:var(--green);background:var(--green);color:#fff}.button.primary:hover{background:var(--green-dark)}.button:disabled{opacity:.45;cursor:not-allowed}label{display:flex;flex-direction:column;gap:6px;color:#344657;font-size:14px;font-weight:700}input,select,textarea{width:100%;min-height:42px;border:1px solid #c7d3dc;border-radius:9px;padding:9px 11px;background:#fff;color:var(--ink);outline:none}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(17,135,95,.12)}input[type=checkbox],input[type=radio]{width:auto;min-height:0;accent-color:var(--green)}.stack{display:flex;flex-direction:column;gap:15px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid .wide{grid-column:1/-1}.alert{margin-bottom:16px;padding:11px 14px;border:1px solid #c8dced;border-radius:10px;background:#eaf4fd;color:#285c8c}.alert.danger{border-color:#efc3c3;background:var(--red-soft);color:var(--red)}.alert.success{border-color:#b9e0ce;background:var(--green-soft);color:var(--green-dark)}.badge{display:inline-flex;width:max-content;padding:4px 8px;border-radius:999px;background:#edf1f4;color:#627180;font-size:12px;font-weight:800}.badge.success{background:var(--green-soft);color:var(--green-dark)}.badge.warning{background:var(--amber-soft);color:var(--amber)}.badge.danger{background:var(--red-soft);color:var(--red)}.badge.muted{background:#edf1f4;color:#647483}.empty-state{text-align:center;padding:38px;color:var(--muted)}.empty-state h2{color:var(--ink)}.empty-state p{margin:0 0 18px}.upload-grid{display:grid;grid-template-columns:minmax(320px,1fr) minmax(420px,1.3fr);gap:18px}.recommended-header code{display:block;padding:12px 14px;border-radius:9px;background:var(--navy);color:#fff}.steps{margin:0;padding-left:22px;color:#435464;line-height:1.5}.steps li{padding:0 0 10px 4px}.work-head{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:14px}.work-head form{width:min(520px,100%)}.work-head>div{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.work-head small{color:var(--muted)}.six-steps{display:grid;grid-template-columns:repeat(6,minmax(145px,1fr));gap:8px;margin-bottom:22px;overflow-x:auto}.six-steps a{display:grid;grid-template-columns:auto 1fr;gap:3px 9px;align-items:center;min-height:80px;padding:12px;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--ink)}.six-steps a:hover{border-color:#9db1bf}.six-steps a.active{border-color:var(--green);background:var(--green-soft);box-shadow:0 0 0 2px rgba(17,135,95,.08)}.six-steps b{grid-row:1/3;display:grid;place-items:center;width:31px;height:31px;border-radius:50%;background:var(--navy);color:#fff}.six-steps span{font-size:13px;font-weight:800;line-height:1.2}.six-steps small{color:var(--muted);font-size:11px}.step-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 2px 14px}.step-heading span{color:var(--green-dark);font-size:13px;font-weight:800}.step-heading h2{margin:2px 0 0;font-size:23px}.step-note{margin:0 0 14px;padding:12px 15px;border-left:4px solid var(--green);border-radius:8px;background:#fff;color:#455767}.bulk-action{margin:0 0 14px}.card-list,.classification-list{display:grid;gap:14px}.match-card,.inverse-card,.relation-block{overflow:hidden}.match-card>header,.inverse-card>header,.relation-block>header{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);background:#f9fbfc}.match-card>header strong,.inverse-card>header strong,.relation-block>header strong{font-size:14px}.match-card>header small{margin-left:auto;color:var(--muted)}.pair-grid,.inverse-grid,.relation-body{display:grid;grid-template-columns:1fr 1fr}.pair-grid>section,.inverse-grid>section,.relation-body>section{padding:17px 19px}.pair-grid>section+section,.inverse-grid>section+section,.relation-body>section+section{border-left:1px solid var(--line);background:#fbfcfd}.pair-grid h3,.inverse-grid h3,.relation-body h3,.relation-choices h3{margin:0 0 12px;color:#617181;font-size:12px;text-transform:uppercase;letter-spacing:.05em}.pair-grid dl,.inverse-grid dl{display:grid;grid-template-columns:105px 1fr;gap:7px 10px;margin:0;font-size:13px}.pair-grid dt,.inverse-grid dt{color:var(--muted)}.pair-grid dd,.inverse-grid dd{margin:0}.current-match{display:flex;flex-direction:column;gap:5px;padding:12px;border:1px solid #b9dfce;border-radius:9px;background:var(--green-soft);font-size:13px}.empty-match{padding:14px;border:1px dashed #c5d0d9;border-radius:9px;color:var(--muted);text-align:center}.picker-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.static-picker{margin-top:12px}.picker-fields label{font-size:12px}.picker-fields input{min-height:38px}.selected-product-preview{margin-top:9px;padding:9px 11px;border:1px solid #b9dfce;border-radius:8px;background:var(--green-soft);color:var(--green-dark);font-size:12px;font-weight:700}.inline-suggestions{position:relative;margin-top:5px}.suggestions{display:none;border:1px solid var(--line);border-radius:9px;background:#fff;box-shadow:0 12px 28px rgba(16,34,51,.14);max-height:260px;overflow:auto}.suggestions.open{display:block}.suggestion{display:block;width:100%;padding:9px 11px;border:0;border-bottom:1px solid #edf1f4;background:#fff;text-align:left;cursor:pointer}.suggestion:hover{background:#f0f8f4}.suggestion strong,.suggestion small{display:block}.suggestion small{margin-top:3px;color:var(--muted)}.empty-suggestion{color:var(--muted);cursor:default}.match-card>footer,.inverse-card>footer,.relation-block>footer{display:flex;align-items:center;gap:10px;padding:12px 16px;border-top:1px solid var(--line)}.save-state{margin-left:auto;color:var(--muted);font-size:12px}.save-state.error{color:var(--red)}.new-product-panel{border-top:1px solid var(--line)}.new-product-panel summary{padding:12px 18px;color:var(--green-dark);font-size:13px;font-weight:800;cursor:pointer}.new-product-fields{padding:5px 18px 17px}.new-product-fields .button{margin-top:12px}.relation-choice{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;margin:8px 0;padding:11px;border:1px solid var(--line);border-radius:9px;background:#fff;cursor:pointer}.relation-choice input{margin-top:3px}.relation-choice span,.relation-choice strong,.relation-choice small{display:block}.relation-choice small{margin-top:4px;color:var(--muted);font-weight:500}.relation-choices{padding:16px 19px}.classification-list{grid-template-columns:repeat(2,minmax(0,1fr))}.classification-card{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:17px}.classification-card h3{margin:9px 0 6px;font-size:16px}.classification-card p{margin:0;color:var(--muted);font-size:13px}.pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:18px;color:var(--muted);font-size:13px}dialog{width:min(650px,calc(100% - 28px));padding:24px;border:0;border-radius:16px;box-shadow:0 28px 80px rgba(0,0,0,.28)}dialog::backdrop{background:rgba(8,20,31,.58)}.dialog-close{position:absolute;right:12px;top:9px;border:0;background:transparent;color:var(--muted);font-size:28px;cursor:pointer}.selected-record{display:flex;flex-direction:column;gap:5px;padding:13px;border-radius:10px;background:#f3f6f8}.selected-record small{color:var(--muted)}.classification-fields,.target-fields{padding:14px;border:1px solid var(--line);border-radius:11px;background:#f9fbfc}.classification-fields h3{margin:0 0 11px}.check-row{display:flex;flex-wrap:wrap;gap:16px}.check-row label{flex-direction:row;align-items:center}.disabled-section{opacity:.5}.dialog-actions{display:flex;align-items:center;justify-content:flex-end;gap:9px}.login-body{display:grid;place-items:center;padding:22px;background:linear-gradient(145deg,#0d1b29,#19384f)}.login-card{width:min(420px,100%);padding:34px;border-radius:18px;background:#fff;box-shadow:0 24px 70px rgba(0,0,0,.26)}.login-card .brand-mark{margin-bottom:18px}.login-card h1{margin:0 0 22px}
@media(max-width:1100px){.six-steps{grid-template-columns:repeat(3,1fr)}.classification-list{grid-template-columns:1fr}.picker-fields{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.topbar{flex-wrap:wrap;padding:10px 13px}.menu-button{display:block;margin-left:auto;padding:7px 10px;border:1px solid #526778;border-radius:8px;background:transparent;color:#fff}.topbar nav{order:3;display:none;width:100%;align-items:stretch;flex-direction:column;padding-bottom:7px}.topbar nav.open{display:flex}.user-menu{display:none}.container{padding:20px 12px 48px}.page-heading h1{font-size:25px}.upload-grid{grid-template-columns:1fr}.work-head{align-items:stretch;flex-direction:column}.work-head>div{align-items:flex-start}.six-steps{grid-template-columns:repeat(2,minmax(180px,1fr))}.step-heading{align-items:flex-start;flex-direction:column}.pair-grid,.inverse-grid,.relation-body{grid-template-columns:1fr}.pair-grid>section+section,.inverse-grid>section+section,.relation-body>section+section{border-left:0;border-top:1px solid var(--line)}.picker-fields,.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.match-card>header,.inverse-card>header,.relation-block>header{align-items:flex-start;flex-wrap:wrap}.match-card>header small{width:100%;margin-left:0}.classification-card{align-items:stretch;flex-direction:column}.classification-card .button{width:100%}.dialog-actions{align-items:stretch;flex-direction:column}.dialog-actions .button{width:100%}.save-state{width:100%;margin-left:0}}
.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.project-card{display:flex;flex-direction:column;gap:14px;padding:20px;border:1px solid var(--line);border-radius:14px;background:#fff;box-shadow:var(--shadow)}.project-card header{display:flex;flex-direction:column;align-items:flex-start;gap:9px}.project-card h2{margin:0;font-size:19px}.project-card p{margin:0;color:var(--muted);font-size:13px;overflow-wrap:anywhere}.project-card dl{display:grid;grid-template-columns:1fr auto;gap:8px 14px;margin:0;font-size:13px}.project-card dt{color:var(--muted)}.project-card dd{margin:0;font-weight:800;text-align:right}.project-card .button{margin-top:auto}.six-steps .step-locked{display:grid;grid-template-columns:auto 1fr;gap:3px 9px;align-items:center;min-height:80px;padding:12px;border:1px solid var(--line);border-radius:11px;background:#e9eef2;color:#7c8994;cursor:not-allowed}.six-steps .step-locked b{background:#8c99a4}.six-steps .step-locked.done{background:#edf7f2;color:#466657}.six-steps .step-locked.done b{background:var(--green)}.step-heading form{display:flex;align-items:center;gap:10px}.step-heading form small{max-width:240px;color:var(--muted)}
.work-block{position:relative;transition:opacity .16s ease,filter .16s ease,border-color .16s ease,box-shadow .16s ease}.work-block-available{opacity:.68;filter:grayscale(.18);cursor:pointer}.work-block-available:hover{opacity:.84;border-color:#aab8c2}.work-block-claiming{opacity:.82;filter:grayscale(.1);cursor:wait}.work-block-active{opacity:1;filter:none;border-color:var(--green);box-shadow:0 0 0 3px rgba(17,135,95,.18),var(--shadow)}.work-block-locked{opacity:1;filter:none;pointer-events:none}.work-block-locked::before{content:"";position:absolute;inset:0;z-index:40;border-radius:13px;background:rgba(183,57,57,.48)}.work-block-locked::after{content:"Ezen dolgozik: " attr(data-lock-owner);position:absolute;left:50%;top:50%;z-index:41;max-width:calc(100% - 32px);transform:translate(-50%,-50%);padding:10px 15px;border:1px solid rgba(255,255,255,.72);border-radius:9px;background:rgba(117,20,20,.9);box-shadow:0 8px 24px rgba(77,10,10,.25);color:#fff;font-size:14px;font-weight:850;text-align:center}
.relation-group>header small{margin-left:auto;color:var(--muted);font-size:12px}.relation-product-summary{padding:16px 19px;border-bottom:1px solid var(--line);background:#f9fbfc}.relation-product-summary h3,.relation-products>h3{margin:0 0 12px;color:#617181;font-size:12px;text-transform:uppercase;letter-spacing:.05em}.relation-product-summary dl,.connected-product-body dl{display:grid;grid-template-columns:145px 1fr;gap:7px 12px;margin:0;font-size:13px}.relation-product-summary dt,.connected-product-body dt{color:var(--muted)}.relation-product-summary dd,.connected-product-body dd{margin:0}.relation-products{padding:16px 19px}.relation-products-list{display:grid;gap:11px}.connected-product{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:11px;background:#fff}.connected-product.is-approved{border-color:#afd9c6;background:var(--green-soft)}.connected-product.is-conflict{border-color:#ebc0c0}.connected-product>header{display:flex;align-items:center;gap:10px;padding:11px 13px;border-bottom:1px solid var(--line)}.connected-product>header strong{font-size:14px}.connected-product-body{display:grid;gap:10px;padding:13px}.connected-product-actions{display:flex;align-items:center;gap:9px;padding:11px 13px;border-top:1px solid var(--line);background:#fff}.connected-product-actions .save-state{margin-left:auto}
.suggestion.is-occupied{background:var(--amber-soft)}.suggestion.is-occupied:hover{background:#ffe9ba}.reverse-note{border-left-color:var(--amber)}.reverse-relation-group>header{background:var(--amber-soft)}.supplier-summary{background:#fffaf0}.reverse-relation-group>footer{min-height:45px}
@media(max-width:1100px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.project-grid{grid-template-columns:1fr}.step-heading form{width:100%;align-items:stretch;flex-direction:column}.step-heading form .button{width:100%}.relation-group>header small{width:100%;margin-left:0}.relation-product-summary dl,.connected-product-body dl{grid-template-columns:1fr}.connected-product-actions{align-items:stretch;flex-direction:column}.connected-product-actions .button{width:100%}.connected-product-actions .save-state{width:100%;margin-left:0}}
.upload-flow{display:grid;gap:16px}.upload-step-title{display:flex;align-items:flex-start;gap:13px;margin-bottom:18px}.upload-step-title>span{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;border-radius:50%;background:var(--green);color:#fff;font-weight:900}.upload-step-title h2{margin:1px 0 4px}.upload-step-title p{margin:0;color:var(--muted)}.upload-flow .stack{max-width:820px}.new-supplier{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}.new-supplier summary{color:var(--green-dark);font-weight:800;cursor:pointer}.new-supplier .stack{margin-top:14px}.table-wrap{margin:0 0 18px;overflow:auto;border:1px solid var(--line);border-radius:10px}.table-wrap table{width:100%;border-collapse:collapse;background:#fff;font-size:13px}.table-wrap th,.table-wrap td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.table-wrap th{background:#f3f6f8;color:#566777}.table-wrap tr:last-child td{border-bottom:0}.form-actions{display:flex;gap:9px;flex-wrap:wrap}.alert.warning{border-color:#f0d39a;background:var(--amber-soft);color:var(--amber)}
@media(max-width:760px){.form-actions{flex-direction:column}.form-actions .button{width:100%}.upload-step-title p{font-size:13px}}
#classification-dialog{width:min(900px,calc(100% - 28px))}.required-data-fields .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.field-help{margin:-3px 0 13px;color:var(--muted);font-size:13px}
@media(max-width:760px){.required-data-fields .form-grid{grid-template-columns:1fr}}
/* Admin navigation can wrap when the inspector menu is also present. */
.topbar nav{min-width:0;flex-wrap:wrap}.topbar>.brand,.topbar>.user-menu{flex-shrink:0}
/* The working cards and upload panels must shrink with the viewport, not
   with their longest button, product name or file-input label. */
.panel,.stack,.form-grid>*,.upload-flow>*,.project-card,.pair-grid>section,.inverse-grid>section,.relation-body>section,.connected-product-body,.classification-card>div{min-width:0}
.pair-grid,.inverse-grid,.relation-body{grid-template-columns:repeat(2,minmax(0,1fr))}
.pair-grid dl,.inverse-grid dl{grid-template-columns:105px minmax(0,1fr)}
.pair-grid dd,.inverse-grid dd,.relation-product-summary dd,.connected-product-body dd,.current-match,.suggestion,.selected-record,.project-card h2,.classification-card h3{min-width:0;overflow-wrap:anywhere}
input,select,textarea{min-width:0;max-width:100%}
.button{max-width:100%}
.table-wrap{max-width:100%;min-width:0;overscroll-behavior-x:contain}
dialog{max-height:calc(100dvh - 28px);overscroll-behavior:contain}
dialog h2{padding-right:18px}
button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #218db2;outline-offset:3px}
@media(max-width:760px){
  .topbar{gap:8px 12px;max-height:100dvh;overflow-y:auto}
  .brand{gap:8px;font-size:16px;min-width:0}
  .menu-button{min-height:44px}
  .topbar nav{padding:0}
  .topbar nav a{min-height:44px;display:flex;align-items:center}
  .topbar nav.open+.user-menu{display:flex;order:4;width:100%;margin:0;padding-top:4px;border-top:1px solid #405364;justify-content:space-between}
  .user-menu a{display:flex;align-items:center;min-height:44px;padding:8px 12px;border:1px solid #526778;border-radius:8px}
  .page-heading{align-items:flex-start;flex-wrap:wrap;gap:12px}
  .page-heading>div{min-width:0}
  .page-heading h1{overflow-wrap:anywhere}
  .six-steps{grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible;gap:8px}
  .six-steps a,.six-steps .step-locked{min-width:0;grid-template-columns:25px minmax(0,1fr);padding:10px 8px;gap:5px 7px}
  .six-steps b{width:25px;height:25px;font-size:14px}
  .six-steps span{font-size:12px;overflow-wrap:anywhere}
  .pair-grid,.inverse-grid,.relation-body{grid-template-columns:minmax(0,1fr)}
  .button{min-height:44px;white-space:normal;overflow-wrap:anywhere;line-height:1.35;text-align:center}
  input,select,textarea{font-size:16px;min-height:44px}
  input[type=checkbox],input[type=radio]{min-height:0}
  .picker-fields input{min-height:44px}
  .match-card>footer,.inverse-card>footer,.relation-block>footer{flex-wrap:wrap;align-items:stretch}
  .match-card>footer>.button,.inverse-card>footer>.button,.relation-block>footer>.button{flex:1 1 100%;width:100%}
  .save-state{overflow-wrap:anywhere}
  .connected-product>header{align-items:flex-start;flex-wrap:wrap}
  .connected-product-actions .button,.new-product-fields .button{width:100%}
  .check-row label{min-height:44px}
  .pagination{flex-wrap:wrap}
  dialog,#classification-dialog{width:calc(100% - 16px);max-width:calc(100% - 16px);max-height:calc(100dvh - 16px);padding:16px}
  .dialog-close{min-width:44px;min-height:44px;right:5px;top:3px}
  dialog h2{margin-top:12px;padding-right:26px;font-size:22px}
  .dialog-actions{gap:10px}
  .classification-fields,.target-fields{padding:12px}
  .target-fields{display:grid;gap:12px}
  .target-fields[hidden]{display:none}
  .login-card{padding:26px}
}
