:root{--primary-bg: #1a1a1a;--secondary-bg: #2a2a2a;--tertiary-bg: #3a3a3a;--primary-accent: #007bff;--primary-accent-hover: #0056b3;--text-primary: #f0f0f0;--text-secondary: #a0a0a0;--border-color: #444;--success: #28a745;--error: #dc3545;--error-hover: #c82333}*{box-sizing:border-box;margin:0;padding:0}html,body{font-family:Inter,sans-serif;background-color:var(--primary-bg);color:var(--text-primary);line-height:1.6}#root{max-width:1400px;margin:0 auto;padding:2rem 1rem}main{display:flex;flex-direction:column;gap:2rem}header{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border-color);padding-bottom:1rem;flex-wrap:wrap;gap:1rem}h1{font-size:2.5rem;color:var(--text-primary);white-space:nowrap}h1 .header-subtitle{font-size:1.5rem;font-weight:500;color:var(--text-secondary)}h1 .header-subtitle a{color:var(--text-secondary)}h1 .header-subtitle a:hover{color:var(--primary-accent)}.header-actions{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;justify-content:flex-end}.header-actions .separator{width:1px;height:24px;background-color:var(--border-color);margin:0 .5rem}.button{padding:.75rem 1.5rem;font-size:1rem;font-weight:500;border-radius:8px;border:none;cursor:pointer;transition:background-color .2s ease,transform .1s ease;background-color:var(--primary-accent);color:#fff;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;white-space:nowrap}a.button.disabled{opacity:.5;cursor:not-allowed;background-color:var(--tertiary-bg);pointer-events:none}.button:hover{background-color:var(--primary-accent-hover)}.button:active{transform:scale(.98)}.button-secondary{background-color:var(--tertiary-bg)}.button-secondary:hover{background-color:#4a4a4a}.button-danger{background-color:var(--error)}.button-danger:hover{background-color:var(--error-hover)}.button-small{padding:.4rem .8rem;font-size:.85rem}.button-icon{padding:.5rem;background-color:var(--tertiary-bg)}.button-icon:hover{background-color:#4a4a4a}.button-icon svg{color:var(--text-secondary);transition:color .2s}.button-icon:hover svg{color:var(--text-primary)}.app-layout{display:grid;grid-template-columns:280px 1fr;gap:2rem;align-items:flex-start}.app-layout.full-width-content{grid-template-columns:1fr}.app-layout.full-width-content .storage-tree{display:none}.content-area{min-width:0}.detail-view-container{width:100%}.storage-tree{background:var(--secondary-bg);border-radius:12px;padding:1rem 0;position:sticky;top:2rem;max-height:calc(100vh - 4rem);overflow-y:auto}.storage-tree ul{list-style:none}.storage-tree .tree-node-label{display:flex;align-items:center;gap:.25rem}.storage-tree a{flex-grow:1;padding:.5rem 1rem;padding-left:0;color:var(--text-secondary);text-decoration:none;border-radius:6px;margin:.1rem .5rem .1rem 0;transition:background-color .2s,color .2s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tree-toggle{background:none;border:none;cursor:pointer;width:24px;height:24px;display:flex;align-items:center;justify-content:center;color:var(--text-secondary);flex-shrink:0}.tree-toggle:before{content:"▶";font-size:.7em;transition:transform .2s ease-in-out}.tree-toggle.expanded:before{transform:rotate(90deg)}.storage-tree a:hover{background-color:var(--tertiary-bg);color:var(--text-primary)}.storage-tree a.active{background-color:var(--primary-accent);color:#fff;font-weight:600}.tree-node-children{list-style:none;padding-left:0;overflow:hidden;max-height:0;transition:max-height .3s ease-out}.tree-node-children.expanded{max-height:1000px;transition:max-height .5s ease-in}.storage-manager-container,.printer-manager-container{background:var(--secondary-bg);padding:2rem;border-radius:12px;width:90%;max-width:800px;max-height:80vh;display:flex;flex-direction:column}.storage-manager-tree,.printer-manager-list{overflow-y:auto;flex-grow:1;padding:1rem;border:1px solid var(--border-color);border-radius:8px;margin-bottom:1.5rem}.storage-manager-tree ul{list-style:none;padding-left:1.5rem}.storage-manager-item{display:flex;justify-content:space-between;align-items:center;padding:.5rem;border-radius:4px}.storage-manager-item:hover{background-color:var(--tertiary-bg)}.storage-manager-item .item-actions{display:flex;gap:.5rem}.printer-manager-list .printer-list-header{display:grid;grid-template-columns:1fr 1fr 1fr 1.2fr 80px;gap:1rem;padding:0 .75rem .5rem;font-weight:600;color:var(--text-secondary);border-bottom:1px solid var(--border-color)}.printer-manager-item{display:grid;grid-template-columns:1fr 1fr 1fr 1.2fr 80px;gap:1rem;align-items:center;padding:.5rem 0}.printer-input-group{display:flex;flex-direction:column;gap:.25rem}.printer-input-group label{display:none;font-size:.85rem;color:var(--text-secondary);font-weight:500}.printer-manager-item input{padding:.5rem}.printer-manager-item .item-actions{display:flex;justify-content:center}.button.has-unsaved-changes{position:relative}.button.has-unsaved-changes:after{content:"";position:absolute;top:-2px;right:-2px;width:10px;height:10px;border-radius:50%;background-color:var(--success);border:2px solid var(--secondary-bg);animation:pulse 1.5s infinite}@keyframes pulse{0%{transform:scale(.95);box-shadow:0 0 #28a745b3}70%{transform:scale(1);box-shadow:0 0 0 10px #28a74500}to{transform:scale(.95);box-shadow:0 0 #28a74500}}.form-container{background-color:var(--secondary-bg);padding:2rem;border-radius:12px;display:flex;flex-direction:column;gap:1.5rem}fieldset{border:1px solid var(--border-color);padding:1.5rem;border-radius:8px;display:flex;flex-direction:column;gap:1rem}legend{padding:0 .5rem;font-size:1.25rem;font-weight:600;color:var(--primary-accent)}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;align-items:flex-end}.form-row-3{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.form-row-4{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.form-actions{display:flex;justify-content:flex-end;gap:1rem;margin-top:1rem}label{font-weight:500;color:var(--text-secondary);font-size:.9rem}input,select,textarea{width:100%;padding:.75rem;border-radius:8px;border:1px solid var(--border-color);background-color:var(--tertiary-bg);color:var(--text-primary);font-size:1rem;font-family:Inter,sans-serif}input[readonly]{background-color:var(--primary-bg);cursor:not-allowed}input[type=number]{-moz-appearance:textfield;-webkit-appearance:none;appearance:none}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}textarea{resize:vertical}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary-accent);box-shadow:0 0 0 3px #007bff40}.input-with-button,.color-input-group{display:flex;gap:.5rem;align-items:center}.input-with-button input,.color-input-group input[type=text]{flex-grow:1}.input-with-button button:disabled{opacity:.5;cursor:not-allowed}input[type=color]{appearance:none;-moz-appearance:none;-webkit-appearance:none;width:44px;height:44px;padding:0;border:1px solid var(--border-color);border-radius:8px;background-color:transparent;cursor:pointer}input[type=color]::-webkit-color-swatch{border-radius:6px;border:none}input[type=color]::-moz-color-swatch{border-radius:6px;border:none}.filter-bar{background-color:var(--secondary-bg);padding:1rem 1.5rem;border-radius:12px;margin-bottom:2rem;display:flex;gap:1.5rem;align-items:flex-end;flex-wrap:wrap}.filter-group{display:flex;flex-direction:column;gap:.5rem;flex-grow:1;min-width:180px}.filter-bar input{width:100%}.filter-bar button{flex-shrink:0}.filter-bar button:disabled{opacity:.5;cursor:not-allowed}.matrix-view{display:flex;flex-direction:column;gap:1rem}.matrix-header{text-align:right;color:var(--text-secondary)}.matrix-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}.matrix-card{background-color:var(--secondary-bg);border-radius:8px;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease;border:1px solid var(--border-color);border-left-width:5px;display:flex;flex-direction:column;overflow:hidden}.matrix-card:hover{transform:translateY(-4px);box-shadow:0 8px 16px #0003;border-color:var(--primary-accent);border-left-color:var(--primary-accent)!important}.matrix-card-content{padding:1rem;display:flex;flex-direction:column;gap:.5rem;flex-grow:1}.matrix-card-top{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.matrix-card-info{display:flex;flex-direction:column;gap:.25rem;overflow:hidden}.matrix-card-type{font-weight:600;font-size:1.1rem;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.matrix-card-color{font-size:.9rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.matrix-card-location,.matrix-card-status{font-size:.8rem;margin-top:.5rem;border-top:1px solid var(--border-color);padding-top:.5rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.matrix-card-location{color:var(--primary-accent)}.matrix-card-status.on-printer{color:var(--success);font-weight:600;display:flex;align-items:center;gap:.4rem}.matrix-card-status.on-printer svg{flex-shrink:0}.matrix-card-quick-edit{display:flex;gap:.5rem;align-items:center;background-color:var(--tertiary-bg);padding:.5rem 1rem;border-top:1px solid var(--border-color)}.matrix-card-quick-edit label{color:var(--text-secondary);display:flex;align-items:center}.matrix-card-quick-edit input{flex-grow:1;padding:.25rem .5rem;font-size:.9rem;text-align:right;background-color:var(--primary-bg)}.matrix-card-quick-edit span{font-size:.9rem;color:var(--text-secondary)}.matrix-card-quick-edit .button-icon{padding:.25rem;height:28px;width:28px;background-color:var(--primary-bg)}.matrix-card-quick-edit .button-icon:hover{background-color:var(--border-color)}.matrix-card-quick-edit .button-icon svg{width:16px;height:16px}.filament-percentage-indicator{display:flex;align-items:center;gap:.5rem;font-size:.9rem;font-weight:600;color:var(--text-primary)}.percentage-circle{transform:rotate(-90deg)}.percentage-circle .bg{fill:none;stroke:var(--tertiary-bg)}.percentage-circle .progress{fill:none;stroke-linecap:round;transition:stroke-dashoffset .5s ease}.filament-datasheet{background-color:var(--secondary-bg);border-radius:12px;padding:1.5rem;display:flex;flex-direction:column;gap:1.5rem;border:1px solid var(--border-color)}.datasheet-header{display:flex;justify-content:space-between;align-items:flex-start;padding-bottom:1rem;border-bottom:1px solid var(--border-color)}.datasheet-header h3{font-size:1.5rem;margin-bottom:.25rem;word-break:break-word}.datasheet-color-name{font-size:1.1rem;font-weight:500;color:var(--text-secondary)}.color-dot{width:32px;height:32px;border-radius:50%;border:2px solid var(--text-primary);flex-shrink:0}.datasheet-section{display:flex;flex-direction:column;gap:1rem}.datasheet-section h4{font-size:1.2rem;color:var(--primary-accent);padding-bottom:.5rem;border-bottom:1px solid var(--border-color);margin-bottom:.5rem}.datasheet-list{display:flex;flex-direction:column;gap:.5rem}.data-pair{display:flex;justify-content:space-between;align-items:baseline;padding:.5rem;border-bottom:1px solid var(--tertiary-bg);flex-wrap:wrap}.data-pair dt{color:var(--text-secondary);font-weight:500;padding-right:1rem}.data-pair dd{color:var(--text-primary);word-break:break-word;text-align:right}a{color:var(--primary-accent);text-decoration:none}a:hover{text-decoration:underline}.notes-content{background-color:var(--tertiary-bg);padding:.75rem;border-radius:8px;white-space:pre-wrap;word-break:break-word;color:var(--text-secondary);font-size:.9rem}.card-footer{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:.5rem;margin-top:auto;padding-top:1rem;border-top:1px solid var(--border-color)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;justify-content:center;align-items:center;z-index:1000}.scanner-container{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000;z-index:1010;display:flex;flex-direction:column;justify-content:center;align-items:center}.scanner-video{width:100%;max-width:640px;height:auto}.scanner-instructions{position:absolute;top:15%;color:#fff;background:#0009;padding:.5rem 1rem;border-radius:8px;z-index:1012;text-align:center}.viewfinder{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:65vw;max-width:350px;height:auto;aspect-ratio:1 / 1;border:3px solid rgba(255,255,255,.7);border-radius:12px;box-shadow:0 0 0 4000px #00000080;overflow:hidden;z-index:1011}.scanning-laser{position:absolute;top:0;left:0;width:100%;height:3px;background:var(--error);box-shadow:0 0 8px 2px var(--error);animation:scan 2s linear infinite}@keyframes scan{0%{top:0}50%{top:calc(100% - 3px)}to{top:0}}.scanner-container .error{position:absolute;bottom:7rem;left:50%;transform:translate(-50%);background-color:var(--error);color:#fff;padding:1rem;border-radius:8px;width:90%;max-width:500px;text-align:center;z-index:1012;box-shadow:0 4px 10px #0000004d}.close-scanner-button{position:absolute;bottom:2rem;left:50%;transform:translate(-50%);z-index:1012}.empty-state{text-align:center;padding:3rem;font-size:1.2rem;color:var(--text-secondary);background:var(--secondary-bg);border-radius:12px;border:2px dashed var(--border-color)}.initial-view-container,.error-view-container{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:3rem 1rem;background-color:var(--secondary-bg);border-radius:12px;margin:4rem auto;max-width:700px;border:1px solid var(--border-color)}.initial-view-container h2,.error-view-container h2{font-size:2rem;color:var(--text-primary);margin-bottom:1rem}.initial-view-container p,.error-view-container p{font-size:1.1rem;color:var(--text-secondary);max-width:500px;margin-bottom:2rem;line-height:1.7}.initial-actions{display:flex;gap:1.5rem}.guide-modal-container{background:var(--secondary-bg);padding:2rem;border-radius:12px;width:90%;max-width:800px;max-height:85vh;display:flex;flex-direction:column}.print-modal-wrapper,.color-list-modal-container{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;justify-content:center;align-items:center;z-index:1050}.color-list-content{background:var(--secondary-bg);padding:2rem;border-radius:12px;width:90%;max-width:800px;max-height:85vh;display:flex;flex-direction:column}.guide-modal-container h2,.color-list-content h2{color:var(--primary-accent);text-align:center;margin-bottom:1.5rem;flex-shrink:0}.guide-content{overflow-y:auto;flex-grow:1;padding-right:1rem}.guide-content section{margin-bottom:2rem}.guide-content h3{border-bottom:1px solid var(--border-color);padding-bottom:.5rem;margin-bottom:1rem}.guide-content p{margin-bottom:.5rem;color:var(--text-secondary)}.guide-content ul{padding-left:1.5rem;color:var(--text-secondary)}.guide-content li{margin-bottom:.5rem}.guide-content strong{color:var(--text-primary)}.statistics-modal-container{background:var(--secondary-bg);padding:2rem;border-radius:12px;width:90%;max-width:600px;max-height:85vh;display:flex;flex-direction:column}.statistics-modal-container h2{color:var(--primary-accent);text-align:center;margin-bottom:1.5rem;flex-shrink:0}.statistics-content{overflow-y:auto;flex-grow:1;padding-right:1rem}.statistics-content section{margin-bottom:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border-color)}.statistics-content section:last-child{border-bottom:none;margin-bottom:0}.statistics-content h3{margin-bottom:1rem;color:var(--text-secondary);font-size:1.1rem}.stats-list{display:flex;flex-direction:column;gap:.75rem}.stats-item{display:flex;justify-content:space-between;font-size:1rem}.stats-item .label{color:var(--text-primary)}.stats-item .value{font-weight:600;color:var(--primary-accent)}.stats-item .value .secondary{font-weight:400;color:var(--text-secondary);font-size:.9rem;margin-left:.5rem}.print-preview-modal{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;justify-content:center;align-items:center;z-index:1050}.print-preview-content{background:var(--secondary-bg);padding:2rem;border-radius:12px;display:flex;flex-direction:column;gap:1.5rem;width:90%;max-width:500px}.print-preview-content h3{text-align:center;color:var(--primary-accent)}.print-actions{display:flex;justify-content:flex-end;gap:1rem}.printable-area{overflow-y:auto;flex-grow:1}.printable-area table{width:100%;border-collapse:collapse}.printable-area th,.printable-area td{padding:.75rem;text-align:left;border-bottom:1px solid var(--border-color)}.printable-area th{font-weight:600;color:var(--text-secondary)}.printable-area tr:hover{background-color:var(--tertiary-bg)}.printable-area .color-swatch{width:24px;height:24px;border-radius:50%;border:1px solid var(--border-color)}.empty-state-small{padding:2rem;text-align:center;color:var(--text-secondary)}.label-to-print-container{display:flex;justify-content:center;align-items:center;background:#555;padding:1rem;border-radius:8px}.label-to-print{background:#fff;color:#000;font-family:Arial,sans-serif;width:70mm;height:37mm;border:1px solid #333;display:flex;flex-direction:column;box-sizing:border-box;padding:2mm;font-size:8pt;overflow:hidden}.label-header{display:flex;justify-content:space-between;align-items:center;border-bottom:.5pt solid black;padding-bottom:1mm;margin-bottom:2mm;flex-shrink:0;gap:2mm}.label-header-left{display:flex;align-items:baseline;gap:1mm;flex-grow:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.label-header-right{display:flex;align-items:center;gap:1.5mm;flex-shrink:0}.label-header h4{font-size:10pt;font-weight:700;margin:0;white-space:nowrap}.label-header .manufacturer-name{font-size:8pt;font-weight:400;color:#444;white-space:nowrap}.label-header-right span{font-size:9pt;white-space:nowrap;max-width:25mm;overflow:hidden;text-overflow:ellipsis}.label-header .color-indicator{width:3mm;height:3mm;border-radius:50%;border:.5pt solid black;flex-shrink:0}.label-body{display:flex;justify-content:space-between;align-items:flex-start;gap:2mm;flex-grow:1;overflow:hidden}.label-info{display:flex;flex-direction:column;line-height:1.4;flex-grow:1;min-width:0}.label-info p{margin:0 0 .5mm;font-size:8pt}.label-info p.storage-location{white-space:normal;word-break:break-word}.label-qr{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:25mm;height:25mm}.label-qr canvas{display:block;max-width:100%;max-height:100%;object-fit:contain}@page label-page{size:70mm 37mm;margin:0}@page list-page{size:A4 portrait;margin:15mm}@media print{body *{visibility:hidden!important}.print-modal-wrapper,.print-modal-wrapper *{visibility:visible!important}.print-modal-wrapper .no-print,.print-modal-wrapper .no-print *{visibility:hidden!important}html,body{background:#fff!important;color:#000!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.print-modal-wrapper{position:static!important}.print-preview-modal,.color-list-modal-container{position:static!important;overflow:visible!important;background:none!important}.print-preview-content,.color-list-content{position:static!important;overflow:visible!important;border:none!important;box-shadow:none!important;background:none!important;padding:0!important}.printable-area{position:absolute!important;left:0!important;top:0!important;width:100%!important;height:100%!important;overflow:visible!important}.label-to-print-container{page:label-page;padding:0!important;background:none!important}.label-to-print{position:absolute;left:0;top:0;width:70mm;height:37mm;margin:0;padding:2.5mm!important;border:none!important;font-size:8.5pt}.label-header h4{font-size:11pt}.label-header .manufacturer-name{font-size:8.5pt}.label-header-right span{font-size:9.5pt}.label-info p{font-size:8.5pt}.color-indicator{border:.5pt solid black!important}.color-list-content .printable-area{page:list-page}.color-list-content table{font-size:10pt}.color-list-content th,.color-list-content td{padding:8px;border:1px solid #ccc}.color-list-content th{background-color:#f2f2f2!important}}@media (max-width: 900px){.app-layout{grid-template-columns:1fr}.storage-tree{position:static;max-height:300px}}@media (max-width: 800px){#root{padding:1rem}header{flex-direction:column;align-items:flex-start}.header-actions{width:100%;justify-content:flex-start}.form-container,.filament-datasheet{padding:1.5rem}.form-row,.form-row-3,.form-row-4{grid-template-columns:1fr}.form-actions,.card-footer,.print-actions{flex-direction:column}.form-actions .button,.card-footer .button,.print-actions .button,.form-actions a.button,.card-footer a.button,.print-actions a.button{width:100%}.printer-manager-list .printer-list-header{display:none}.printer-manager-item{grid-template-columns:1fr;gap:.75rem;padding:1rem 0;border-bottom:1px solid var(--border-color)}.printer-manager-item:last-child{border-bottom:none}.printer-input-group label{display:block}.printer-manager-item .item-actions{justify-content:flex-end;margin-top:.5rem}}@media (max-width: 480px){h1{font-size:2rem}h1 .header-subtitle{display:none}.header-actions{flex-direction:column;align-items:stretch}.initial-actions,.form-actions,.card-footer,.print-actions{flex-direction:column}.form-actions .button,.card-footer .button,.print-actions .button,.form-actions a.button,.card-footer a.button,.print-actions a.button{width:100%}}
