:root{--color-bg:#f3f5f7;--color-surface:#fff;--color-text:#1c2833;--color-muted:#5d6d7a;--color-line:#d7dee4;--color-primary:#0a6aa3;--color-primary-dark:#084e78;--color-sidebar:#16324a;--color-sidebar-text:#d5e3ee;--color-ok:#1f7a4d;--color-ok-bg:#e8f6ee;--color-warn:#b86a00;--color-warn-bg:#fff4e5;--color-danger:#b42318;--color-danger-bg:#fdecea;--color-in:#0a6aa3;--color-in-bg:#e7f3fa;--shadow:0 1px 2px #16324a0f;--radius:10px;--touch:52px;--sidebar-width:232px;--topbar-height:64px;--font:"Segoe UI", "Malgun Gothic", "Apple SD Gothic Neo", sans-serif;--mono:Consolas, "Cascadia Mono", "Malgun Gothic", monospace}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}html{font-family:var(--font);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}body{margin:0}button,input,select,textarea{font:inherit}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}code{font-family:var(--mono);font-size:.92em}h1,h2,p{margin:0}button{cursor:pointer}:focus-visible{outline-offset:2px;outline:3px solid #0a6aa359}.app-shell{background:var(--color-bg);min-height:100vh;display:flex}.sidebar{width:var(--sidebar-width);background:var(--color-sidebar);color:var(--color-sidebar-text);flex-direction:column;flex-shrink:0;display:flex}.sidebar__brand{align-items:center;gap:12px;padding:22px 20px 18px;display:flex}.sidebar__mark{background:linear-gradient(#0000 42%,#3d9ad6 42% 52%,#0000 52%),linear-gradient(135deg,#0000 40%,#f4f7fa 40% 46%,#0000 46%),linear-gradient(45deg,#0000 40%,#f4f7fa 40% 46%,#0000 46%),#0a6aa3;border-radius:8px;width:36px;height:36px}.sidebar__brand strong,.sidebar__brand span{display:block}.sidebar__brand strong{letter-spacing:.04em;font-size:.95rem}.sidebar__brand span{opacity:.75;font-size:.75rem}.sidebar__nav{flex-direction:column;gap:6px;padding:8px 12px 24px;display:flex}.sidebar__link{min-height:var(--touch);color:var(--color-sidebar-text);border-radius:8px;align-items:center;padding:0 14px;font-weight:600;text-decoration:none;display:flex}.sidebar__link:hover,.sidebar__link.is-active{background:#ffffff1a;text-decoration:none}.sidebar__link.is-active{color:#fff;background:#0a6aa3}.app-main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{height:var(--topbar-height);background:var(--color-surface);border-bottom:1px solid var(--color-line);align-items:center;gap:12px;padding:0 16px;display:flex}.topbar__menu{width:var(--touch);height:var(--touch);background:0 0;border:0;flex-direction:column;justify-content:space-between;padding:14px 12px;display:none}.topbar__menu span{background:var(--color-text);height:2px;display:block}.topbar__title{align-items:baseline;gap:8px;min-width:0;display:flex}.topbar__title strong{letter-spacing:.03em}.topbar__title span{color:var(--color-muted);font-size:.92rem}.topbar__user{align-items:center;gap:10px;margin-left:auto;display:flex}.topbar__user-text{text-align:right}.topbar__user-text strong,.topbar__user-text span{display:block}.topbar__user-text span{color:var(--color-muted);font-size:.78rem}.app-content{flex:1;padding:20px}.app-loading{min-height:40vh;color:var(--color-muted);place-items:center;font-weight:700;display:grid}.sidebar-backdrop{display:none}@media (width<=1023px){.sidebar{z-index:30;transition:transform .18s;position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.sidebar.is-open{transform:translate(0)}.sidebar-backdrop{z-index:20;background:#16324a73;border:0;display:block;position:fixed;inset:0}.topbar__menu{display:flex}.topbar__title span{display:none}}@media (width<=720px){.topbar__user-text{display:none}.app-content{padding:14px}}.page{max-width:1280px;margin:0 auto}.page-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:18px;display:flex}.page-title{font-size:clamp(1.35rem,2vw,1.75rem);font-weight:800}.page-header .page-title.model-name,.page--detail .page-title{font-family:var(--mono)}.page-desc{color:var(--color-muted);margin-top:6px}.page-actions{gap:8px;display:flex}.btn{background:var(--color-surface);min-height:44px;color:var(--color-text);border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;padding:0 16px;font-weight:700;display:inline-flex}.btn--touch{min-height:var(--touch);min-width:var(--touch);padding:0 18px}.btn--xl{flex:1;min-height:64px;font-size:1.05rem}.btn--small{min-height:40px;padding:0 12px;font-weight:600}.btn--primary{background:var(--color-primary);color:#fff}.btn--primary:hover{background:var(--color-primary-dark)}.btn--danger{background:var(--color-danger);color:#fff}.btn--ghost{border-color:var(--color-line);background:var(--color-surface)}.btn:disabled{opacity:.6;cursor:not-allowed}.input{width:100%;min-height:var(--touch);border:1px solid var(--color-line);background:#fff;border-radius:8px;padding:0 14px}.input--area{resize:vertical;min-height:96px;padding:12px 14px}.input--model{font-family:var(--mono);font-size:1.05rem;font-weight:700}.input--qty{text-align:center;font-variant-numeric:tabular-nums;font-size:1.25rem;font-weight:800}.field{flex-direction:column;gap:6px;display:flex}.field>span{color:var(--color-muted);font-size:.85rem;font-weight:700}.field--wide{grid-column:1/-1}.field--inline{flex:1;min-width:180px}.check{align-items:center;gap:10px;min-height:44px;display:flex}.check input{width:20px;height:20px}.form-error{color:var(--color-danger);font-weight:700}.muted,.spec-muted{color:var(--color-muted)}.badge{white-space:nowrap;border-radius:999px;align-items:center;min-height:28px;padding:0 8px;font-size:.78rem;font-weight:800;display:inline-flex}.badge--ok{background:var(--color-ok-bg);color:var(--color-ok)}.badge--warn{background:var(--color-warn-bg);color:var(--color-warn)}.badge--pending,.badge--danger{background:var(--color-danger-bg);color:var(--color-danger)}.badge--in{background:var(--color-in-bg);color:var(--color-in)}.badge--out{background:var(--color-danger-bg);color:var(--color-danger)}.panel{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.panel__head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.panel__head h2,.quick-actions h2,.spec-panel h2,.settings-block h2{font-size:1rem}.filter-panel,.part-form,.stock-hero,.quick-actions,.spec-panel,.settings-block{background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:16px;padding:16px}.search-row,.filter-row,.chip-row,.btn-row,.form-actions,.modal-actions,.detail-cta{flex-wrap:wrap;gap:10px;display:flex}.search-row{margin-bottom:12px}.search-field{max-width:160px}.search-input{flex:1;min-width:200px;font-size:1.05rem}.chip{border:1px solid var(--color-line);background:#fff;border-radius:999px;min-height:44px;padding:0 14px;font-weight:700}.chip.is-active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.result-count,.empty{color:var(--color-muted);margin:0 0 12px}.model-name,.model-link{font-family:var(--mono);color:var(--color-text);font-weight:800}.model-link:hover{color:var(--color-primary)}.td-qty,.part-card__qty b,.stock-hero__qty strong{font-variant-numeric:tabular-nums;font-weight:800}.toast-stack{z-index:50;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:16px;right:16px}.toast{color:#fff;background:var(--color-primary-dark);text-align:left;border:0;border-radius:8px;min-height:48px;padding:10px 14px;box-shadow:0 8px 20px #16324a33}.toast--error{background:var(--color-danger)}.modal-backdrop{z-index:40;background:#16324a73;justify-content:center;align-items:flex-end;padding:12px;display:flex;position:fixed;inset:0}.modal-panel{background:#fff;border-radius:16px 16px 10px 10px;flex-direction:column;gap:12px;width:min(520px,100%);padding:20px;display:flex}.modal-title{font-size:1.25rem}.modal-model{font-family:var(--mono);font-weight:800}.modal-stock strong{font-size:1.5rem}.qty-stepper{grid-template-columns:var(--touch) 1fr var(--touch);gap:8px;display:grid}.form-grid,.spec-grid,.stat-grid,.split-grid{gap:14px;display:grid}.form-grid,.spec-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.spec-grid>div,.spec-wide{border-bottom:1px solid #eef2f5;flex-direction:column;gap:4px;padding:8px 0;display:flex}.spec-wide{grid-column:1/-1}.spec-grid dt{color:var(--color-muted);font-size:.8rem}.spec-grid dd{margin:0;font-weight:700}.form-preview{min-height:var(--touch);align-items:center;gap:10px;display:flex}.extra-specs__hint{margin:0 0 8px;font-weight:400}.extra-specs__empty{margin:0 0 8px}.extra-specs__list{flex-direction:column;gap:8px;margin:0 0 10px;padding:0;list-style:none;display:flex}.extra-specs__row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.extra-specs__add{width:fit-content}@media (width<=720px){.extra-specs__row{grid-template-columns:1fr}.extra-specs__row .btn{width:100%}}.form-actions{justify-content:flex-end;margin-top:18px}.review-drawer-backdrop{z-index:40;background:#16324a73;justify-content:flex-end;display:flex;position:fixed;inset:0}.review-drawer{background:#fff;flex-direction:column;width:min(38vw,620px);min-width:min(100%,420px);max-width:620px;height:100%;display:flex;box-shadow:-8px 0 24px #16324a29}.review-drawer__head{border-bottom:1px solid var(--color-line);justify-content:space-between;align-items:flex-start;gap:12px;padding:18px 18px 14px;display:flex}.review-drawer__identity{flex:1;min-width:0}.review-drawer__maker{color:var(--color-text);margin:0;font-size:1.05rem;font-weight:800}.review-drawer__title{word-break:break-word;margin:4px 0 0;font-size:clamp(1.45rem,2.2vw,1.85rem);line-height:1.2}.review-drawer__code{color:var(--color-muted);margin:8px 0 0;font-size:.92rem;font-weight:600}.review-drawer__badges{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:6px;display:flex}.review-drawer__badges .badge{min-height:32px;padding:0 10px;font-size:.85rem}.review-drawer__body{flex-direction:column;flex:1;gap:16px;padding:16px 18px;display:flex;overflow:auto}.review-qty-box{background:#f8fafb;border-radius:10px;flex-wrap:wrap;align-items:baseline;gap:10px;padding:12px 14px;display:flex}.review-qty-box strong{font-variant-numeric:tabular-nums;font-size:1.6rem}.review-qty-confirm{border:2px solid var(--color-primary);background:#e7f3fa;border-radius:12px;flex-direction:column;gap:8px;padding:16px;display:flex}.review-qty-confirm .field>span{color:var(--color-primary-dark);font-size:1rem}.review-qty-confirm__row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.review-qty-input{min-height:64px;font-size:1.7rem}.review-qty-unit{min-width:48px;font-size:1.15rem;font-weight:800}.review-specs{border:1px solid var(--color-line);border-radius:10px;padding:4px 12px 12px}.review-specs summary{cursor:pointer;align-items:center;min-height:52px;font-weight:800;display:flex}.review-note{margin:0}.review-drawer__actions{border-top:1px solid var(--color-line);background:#fff;flex-direction:column;gap:8px;padding:12px 16px 16px;display:flex}.review-drawer__actions-row{gap:8px;display:flex}.review-drawer__actions-row .btn,.review-next-btn{flex:1;min-height:52px}.review-next-btn{width:100%;font-size:1.08rem}.data-table tr.is-active{background:#e7f3fa}@media (width>=900px){.modal-backdrop{align-items:center}.modal-panel{border-radius:12px}}@media (width<=1279px){.review-drawer{width:min(72vw,720px);min-width:0;max-width:none}}@media (width<=720px){.review-drawer{width:100%}.review-drawer__head{flex-direction:column}.review-drawer__badges{flex-flow:wrap;align-items:flex-start}}.login-page{background:linear-gradient(#eef3f7 0%,#f3f5f7 100%);place-items:center;min-height:100vh;padding:20px;display:grid}.login-card{border:1px solid var(--color-line);width:min(440px,100%);box-shadow:var(--shadow);background:#fff;border-radius:12px;flex-direction:column;gap:12px;padding:28px 24px;display:flex}.login-kicker{color:var(--color-primary);letter-spacing:.04em;font-weight:800}.login-card h1{font-size:1.55rem}.login-lead,.login-hint{color:var(--color-muted)}.login-submit{width:100%}.stat-grid{grid-template-columns:repeat(6,minmax(0,1fr));margin-bottom:16px}.stat-card{border:1px solid var(--color-line);border-radius:var(--radius);background:#fff;flex-direction:column;gap:6px;min-height:120px;padding:16px;display:flex}.stat-card span,.stat-card em{color:var(--color-muted);font-style:normal}.stat-card strong{font-variant-numeric:tabular-nums;font-size:2rem;line-height:1.1}.stat-card--warn strong{color:var(--color-warn)}.stat-card--in strong{color:var(--color-in)}.stat-card--out strong{color:var(--color-danger)}.stat-card--button{border:1px solid var(--color-line);text-align:left;cursor:pointer;width:100%}.stat-card--button.is-active{border-color:var(--color-primary);box-shadow:0 0 0 2px #0a6aa32e}.stat-grid--review{grid-template-columns:repeat(5,minmax(0,1fr))}.split-grid{grid-template-columns:1fr 1fr}.plain-list{margin:0;padding:0;list-style:none}.plain-row{color:inherit;border-bottom:1px solid #eef2f5;justify-content:space-between;align-items:center;gap:12px;min-height:64px;padding:12px 0;text-decoration:none;display:flex}.plain-row:hover{text-decoration:none}.plain-row div span,.plain-row--static span{color:var(--color-muted);font-size:.85rem;font-weight:400;display:block}.plain-row__meta{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.card-list{gap:10px;display:grid}.part-card{border:1px solid var(--color-line);border-radius:var(--radius);color:inherit;background:#fff;flex-direction:column;gap:6px;min-height:140px;padding:14px;text-decoration:none;display:flex}.part-card__main{color:inherit;flex-direction:column;flex:1;gap:6px;text-decoration:none;display:flex}.part-card__main:hover{text-decoration:none}.part-card__actions{gap:8px;margin-top:8px;display:flex}.part-card__actions .btn{flex:1}.part-card:hover{border-color:#b9c9d6;text-decoration:none}.part-card__top{justify-content:space-between;gap:8px;display:flex}.badge-row{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.part-card__spec{color:var(--color-muted);font-size:.9rem}.part-card__qty{align-items:baseline;gap:6px;margin-top:auto;display:flex}.part-card__qty b{font-size:1.6rem}.table-wrap{border:1px solid var(--color-line);border-radius:var(--radius);background:#fff;display:none;overflow:auto}.data-table{border-collapse:collapse;width:100%}.data-table th,.data-table td{text-align:left;vertical-align:top;border-bottom:1px solid #eef2f5;padding:12px 10px}.data-table th{color:var(--color-muted);background:#f8fafb;font-size:.8rem;position:sticky;top:0}.td-qty{font-variant-numeric:tabular-nums;font-weight:700}.tx-delta--plus{color:var(--color-in)}.tx-delta--minus{color:var(--color-danger)}.stock-hero{text-align:center;padding:24px 16px}.stock-hero__qty{justify-content:center;align-items:baseline;gap:8px;display:flex}.stock-hero__qty strong{font-size:clamp(3rem,8vw,4.5rem);line-height:1}.stock-hero__qty span{font-size:1.4rem;font-weight:800}.stock-hero__meta{color:var(--color-muted);justify-content:center;align-items:center;gap:12px;margin-top:10px;display:flex}.quick-actions{grid-template-columns:1fr 1fr;gap:16px;display:grid}.quick-actions .btn-row .btn{flex:1}.detail-cta{z-index:5;margin:0 0 16px;position:sticky;bottom:10px}.settings-block .btn{margin-top:12px}.card-list--review .part-card{min-height:168px;padding:16px}.card-list--review .part-card__model{font-size:1.22rem;line-height:1.25}.table-wrap--review .data-table th,.table-wrap--review .data-table td{vertical-align:middle;padding:16px 12px}.table-wrap--review .td-model{font-size:1.08rem}.table-wrap--review .btn{min-width:88px;min-height:48px}@media (width>=900px){.card-list{display:none}.table-wrap{display:block}.card-list--review{display:grid}.table-wrap--review{display:none}.detail-cta{position:static}}@media (width>=1100px){.card-list--review{display:none}.table-wrap--review{display:block}}@media (width<=1199px){.stat-grid,.stat-grid--review{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=899px){.stat-grid,.split-grid,.form-grid,.spec-grid,.quick-actions{grid-template-columns:1fr}.page-header{flex-direction:column}.page-actions,.detail-cta{width:100%}.page-actions .btn,.detail-cta .btn{flex:1}}@media (width<=599px){.stat-grid,.stat-grid--review{grid-template-columns:1fr 1fr}.topbar__title strong{font-size:.92rem}}
