:root{--font-title: "Arvo", serif;--font-subtitle: "Nobile", sans-serif;--font-body: "Quicksand", sans-serif;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--text-4xl: 2.25rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--palette-dry-sage: #c9cba3;--palette-soft-peach: #ffe1a8;--palette-vibrant-coral: #e26d5c;--palette-wine-plum: #723d46;--palette-mauve-shadow: #472d30;--color-bg-page: #f5f7fa;--color-bg-card: #ffffff;--color-bg-header: #f5f7fa;--color-bg-hover: var(--palette-soft-peach);--color-text-primary: var(--palette-mauve-shadow);--color-text-secondary: var(--palette-wine-plum);--color-text-muted: #666666;--color-text-inverse: #ffffff;--color-border: var(--palette-wine-plum);--color-border-light: var(--palette-dry-sage);--color-btn-primary-bg: var(--palette-vibrant-coral);--color-btn-primary-text: #ffffff;--color-btn-primary-hover: #d45b4a;--color-btn-secondary-bg: var(--palette-dry-sage);--color-btn-secondary-text: var(--palette-mauve-shadow);--color-btn-secondary-hover: #b8ba8f;--color-dark: var(--palette-wine-plum);--color-darker: var(--palette-mauve-shadow);--color-error: #dc2626;--color-success: #16a34a;--color-warning: #ea580c;--color-info: #0284c7}[data-theme=autumn]{--palette-linen: #f3e9dc;--palette-golden-chestnut: #c08552;--palette-espresso: #5e3023;--palette-saddle-brown: #895737;--palette-desert-sand: #dab49d;--color-bg-page: var(--palette-linen);--color-bg-card: #ffffff;--color-bg-header: var(--palette-linen);--color-bg-hover: var(--palette-desert-sand);--color-text-primary: var(--palette-espresso);--color-text-secondary: var(--palette-saddle-brown);--color-text-muted: #8b7355;--color-text-inverse: #ffffff;--color-border: var(--palette-saddle-brown);--color-border-light: var(--palette-desert-sand);--color-btn-primary-bg: var(--palette-golden-chestnut);--color-btn-primary-text: #ffffff;--color-btn-primary-hover: #a87146;--color-btn-secondary-bg: var(--palette-desert-sand);--color-btn-secondary-text: var(--palette-espresso);--color-btn-secondary-hover: #c9a188;--color-dark: var(--palette-saddle-brown);--color-darker: var(--palette-espresso);--color-error: #dc2626;--color-success: #16a34a;--color-warning: #ea580c;--color-info: #0284c7}.btn{font-family:var(--font-subtitle);font-weight:500;font-size:var(--text-base);padding:var(--space-3) var(--space-6);border:none;border-radius:var(--space-2);cursor:pointer;transition:all .2s ease;text-decoration:none;display:inline-block;text-align:center}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-btn-primary-bg);color:var(--color-btn-primary-text)}.btn-primary:hover:not(:disabled){background:var(--color-btn-primary-hover);transform:translateY(-1px);box-shadow:0 4px 8px #00000026}.btn-secondary{background:var(--color-btn-secondary-bg);color:var(--color-btn-secondary-text)}.btn-secondary:hover:not(:disabled){background:var(--color-btn-secondary-hover)}.btn-danger{background:var(--color-error);color:#fff}.btn-danger:hover:not(:disabled){background:#b91c1c}.card{background:var(--color-bg-card);border:1px solid var(--color-border-light);border-radius:var(--space-3);padding:var(--space-6);transition:all .2s ease}.card-hover:hover{box-shadow:0 4px 12px #0000001a;transform:translateY(-2px);border-color:var(--color-border)}.form-group{margin-bottom:var(--space-5)}.form-label{display:block;font-family:var(--font-subtitle);font-weight:500;font-size:var(--text-sm);color:var(--color-text-primary);margin-bottom:var(--space-2)}.form-input,.form-textarea,.form-select{width:100%;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--space-2);font-family:var(--font-body);font-size:var(--text-base);color:var(--color-text-primary);background:var(--color-bg-card);transition:border-color .2s ease,box-shadow .2s ease}.form-input:focus,.form-textarea:focus,.form-select:focus{outline:none;border-color:var(--color-btn-primary-bg);box-shadow:0 0 0 3px #e26d5c1a}.form-textarea{resize:vertical;min-height:100px}.form-error{color:var(--color-error);font-size:var(--text-sm);margin-top:var(--space-2)}.error-message{background:#fee2e2;color:var(--color-error);padding:var(--space-4);border-radius:var(--space-2);border:1px solid var(--color-error);margin-bottom:var(--space-4)}.success-message{background:#dcfce7;color:var(--color-success);padding:var(--space-4);border-radius:var(--space-2);border:1px solid var(--color-success);margin-bottom:var(--space-4)}.info-message{background:#dbeafe;color:var(--color-info);padding:var(--space-4);border-radius:var(--space-2);border:1px solid var(--color-info);margin-bottom:var(--space-4)}.loading{display:flex;align-items:center;justify-content:center;padding:var(--space-10);color:var(--color-text-secondary);font-size:var(--text-lg)}.spinner{border:3px solid var(--color-border-light);border-top-color:var(--color-btn-primary-bg);border-radius:50%;width:40px;height:40px;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-4)}.modal{background:var(--color-bg-card);border-radius:var(--space-3);padding:var(--space-8);max-width:600px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-6)}.modal-title{font-family:var(--font-title);font-size:var(--text-2xl);color:var(--color-text-primary);margin:0}.modal-close{background:none;border:none;font-size:var(--text-2xl);color:var(--color-text-secondary);cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--space-1);transition:background-color .2s ease}.modal-close:hover{background:var(--color-bg-hover)}.modal-body{margin-bottom:var(--space-6)}.modal-footer,.modal-actions{display:flex;gap:var(--space-3);justify-content:flex-end}.primary-btn{font-family:var(--font-subtitle);font-weight:500;padding:var(--space-3) var(--space-6);background-color:var(--color-btn-primary-bg);color:var(--color-btn-primary-text);border:none;border-radius:var(--space-2);cursor:pointer;transition:background-color .2s ease}.primary-btn:hover:not(:disabled){background-color:var(--color-btn-primary-hover)}.secondary-btn{font-family:var(--font-subtitle);font-weight:500;padding:var(--space-3) var(--space-6);background-color:var(--color-btn-secondary-bg);color:var(--color-btn-secondary-text);border:none;border-radius:var(--space-2);cursor:pointer;transition:background-color .2s ease}.secondary-btn:hover:not(:disabled){background-color:var(--color-btn-secondary-hover)}.warning-btn{background-color:var(--color-warning)}.warning-btn:hover:not(:disabled){background-color:#c2410c}.page-container{padding:var(--space-6);max-width:1400px;margin:0 auto}.page-header{margin-bottom:var(--space-8)}.page-title{font-family:var(--font-title);font-size:var(--text-3xl);color:var(--color-text-primary);margin:0 0 var(--space-4) 0}.page-subtitle{font-family:var(--font-subtitle);font-size:var(--text-lg);color:var(--color-text-secondary);margin:0}.page-section{margin-bottom:var(--space-10)}.section-title{font-family:var(--font-title);font-size:var(--text-2xl);color:var(--color-text-primary);margin:0 0 var(--space-4) 0}.grid{display:grid;gap:var(--space-6)}.grid-2{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.grid-3{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.text-center{text-align:center}.text-muted{color:var(--color-text-muted)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}*{box-sizing:border-box}html{font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;font-family:var(--font-body);font-size:var(--text-base);line-height:1.6;color:var(--color-text-primary);background-color:var(--color-bg-page);min-width:320px;min-height:100vh}#root{width:100%;min-height:100vh}h1,h2,h3,h4,h5,h6{font-family:var(--font-title);line-height:1.2;margin:0;color:var(--color-text-primary)}h1{font-size:var(--text-4xl)}h2{font-size:var(--text-3xl)}h3{font-size:var(--text-2xl)}h4{font-size:var(--text-xl)}h5{font-size:var(--text-lg)}h6{font-size:var(--text-base)}p{margin:0 0 var(--space-4) 0}a{color:var(--color-btn-primary-bg);text-decoration:none;transition:color .2s ease}a:hover{color:var(--color-btn-primary-hover);text-decoration:underline}button{font-family:inherit;font-size:inherit}ul,ol{margin:0 0 var(--space-4) 0;padding-left:var(--space-6)}img{max-width:100%;height:auto;display:block}.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:linear-gradient(135deg,var(--color-dark) 0%,var(--color-darker) 100%)}.login-card{background:var(--color-bg-card);padding:var(--space-8);border-radius:var(--space-3);box-shadow:0 10px 25px #0003;width:100%;max-width:400px}.login-card h1{text-align:center;color:var(--color-btn-primary-bg);margin-bottom:var(--space-2);font-size:var(--text-3xl)}.login-card h2{text-align:center;margin-bottom:var(--space-6);color:var(--color-text-primary)}.login-card .form-group{margin-bottom:var(--space-6)}.login-card button[type=submit]{width:100%;padding:var(--space-3);background:linear-gradient(135deg,var(--color-dark) 0%,var(--color-darker) 100%);color:var(--color-text-inverse);border:none;border-radius:var(--space-2);font-size:var(--text-base);font-weight:600;cursor:pointer;transition:transform .2s}.login-card button[type=submit]:hover:not(:disabled){transform:translateY(-2px)}.login-card button[type=submit]:disabled{opacity:.6;cursor:not-allowed;transform:none}.register-link{text-align:center;margin-top:var(--space-6);color:var(--color-text-muted)}.register-link a{color:var(--color-btn-primary-bg);text-decoration:none;font-weight:600}.register-link a:hover{text-decoration:underline}.language-switcher{display:flex;align-items:center}.language-select{padding:var(--space-2) var(--space-3);border:1px solid rgba(255,255,255,.3);border-radius:var(--space-2);background:#fff3;color:inherit;font-family:var(--font-body);font-size:var(--text-sm);cursor:pointer;transition:all .3s}.language-select:hover{background:#ffffff4d}.language-select:focus{outline:none;background:#ffffff4d;border-color:#ffffff80}.language-select:disabled{opacity:.6;cursor:not-allowed}.language-select option{background:var(--color-bg-card);color:var(--color-text-primary)}.main-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-4) var(--space-6);background-color:var(--color-bg-header);border-bottom:1px solid var(--color-border-light);height:60px}.header-left{display:flex;align-items:center}.app-title{font-family:var(--font-title);font-size:var(--text-2xl);color:var(--color-text-primary);margin:0;cursor:pointer;transition:opacity .2s ease}.app-title:hover{opacity:.8}.header-right{display:flex;align-items:center;gap:var(--space-4)}.profile-btn{font-family:var(--font-subtitle);font-weight:500;padding:var(--space-2) var(--space-4);background-color:transparent;color:var(--color-text-primary);border:1px solid var(--color-border-light);border-radius:var(--space-2);cursor:pointer;transition:all .2s ease}.profile-btn:hover{background-color:var(--color-bg-hover);border-color:var(--color-border)}.logout-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;background-color:transparent;border:1px solid var(--color-border-light)!important;border-radius:var(--space-2);color:var(--color-text-primary)!important;cursor:pointer;font-size:var(--text-xl);transition:all .2s ease}.logout-btn:hover{background-color:var(--color-bg-hover);border-color:var(--color-border);transform:scale(1.05)}.left-nav{width:280px;min-width:280px;background-color:var(--color-bg-card);border-right:1px solid var(--color-border-light);padding:var(--space-6);overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-8)}.nav-loading{font-family:var(--font-body);color:var(--color-text-secondary);padding:var(--space-4)}.nav-section{display:flex;flex-direction:column;gap:var(--space-3)}.nav-label{font-family:var(--font-subtitle);font-weight:500;font-size:var(--text-sm);color:var(--color-text-secondary)}.project-select{font-family:var(--font-body);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--space-2);background-color:var(--color-bg-card);color:var(--color-text-primary);cursor:pointer;transition:border-color .2s ease}.project-select:hover{border-color:var(--color-border-light)}.project-select:focus{outline:none;border-color:var(--color-btn-primary-bg)}.create-project-btn{font-family:var(--font-subtitle);font-weight:500;padding:var(--space-3);background-color:var(--color-btn-secondary-bg);color:var(--color-btn-secondary-text);border:none;border-radius:var(--space-2);cursor:pointer;transition:background-color .2s ease}.create-project-btn:hover{background-color:var(--color-btn-secondary-hover)}.nav-section-title{font-family:var(--font-subtitle);font-size:var(--text-lg);font-weight:700;color:var(--color-text-primary);margin:0}.nav-empty{font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-muted);margin:0;padding:var(--space-2) 0}.object-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--space-2)}.object-item{font-family:var(--font-body);padding:var(--space-3);border-radius:var(--space-2);cursor:pointer;transition:background-color .2s ease;display:flex;flex-direction:column;gap:var(--space-1)}.object-item:hover{background-color:var(--color-bg-hover)}.object-item.active{background-color:var(--color-btn-primary-bg);color:var(--color-text-inverse)}.object-name{font-weight:500;font-size:var(--text-base)}.object-count{font-size:var(--text-xs);opacity:.8}.nav-footer{margin-top:auto;padding-top:var(--space-4);border-top:1px solid var(--color-border-light)}.templates-btn{font-family:var(--font-subtitle);font-weight:500;padding:var(--space-3);background-color:transparent;color:var(--color-text-primary);border:1px solid var(--color-border-light);border-radius:var(--space-2);cursor:pointer;transition:all .2s ease;text-align:left}.templates-btn:hover{background-color:var(--color-bg-hover);border-color:var(--color-border)}.templates-btn.active{background-color:var(--color-btn-primary-bg);color:var(--color-text-inverse);border-color:var(--color-btn-primary-bg)}.cnc-btn{font-family:var(--font-subtitle);font-weight:500;padding:var(--space-3);background-color:transparent;color:var(--color-text-primary);border:1px solid var(--color-border-light);border-radius:var(--space-2);cursor:pointer;transition:all .2s ease;text-align:left}.cnc-btn:hover{background-color:var(--color-bg-hover);border-color:var(--color-border)}.cnc-btn.active{background-color:var(--color-btn-primary-bg);color:var(--color-text-inverse);border-color:var(--color-btn-primary-bg)}.main-layout{display:flex;flex-direction:column;height:100vh;overflow:hidden}.layout-body{display:flex;flex:1;overflow:hidden}.layout-content{flex:1;overflow-y:auto;padding:var(--space-6);background-color:var(--color-bg-page)}.theme-switcher{display:flex;align-items:center;gap:var(--space-2)}.theme-label{font-family:var(--font-subtitle);font-size:var(--text-sm);color:inherit;font-weight:500}.theme-select{padding:var(--space-2) var(--space-3);border:1px solid rgba(255,255,255,.3);border-radius:var(--space-2);background:#fff3;color:inherit;font-family:var(--font-body);font-size:var(--text-sm);cursor:pointer;transition:all .3s}.theme-select:hover{background:#ffffff4d}.theme-select:focus{outline:none;background:#ffffff4d;border-color:#ffffff80}.theme-select option{background:var(--color-bg-card);color:var(--color-text-primary)}.profile-container{max-width:1200px;margin:0 auto}.profile-header{margin-bottom:var(--space-8)}.profile-header h1{font-family:var(--font-title);color:var(--color-text-primary)}.profile-content{display:flex;flex-direction:column;gap:var(--space-10)}.profile-section{background-color:var(--color-bg-card);border-radius:var(--space-3);padding:var(--space-6);border:1px solid var(--color-border-light)}.profile-section h2{font-family:var(--font-title);font-size:var(--text-2xl);color:var(--color-text-primary);margin-bottom:var(--space-6)}.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--space-6)}.info-item{display:flex;flex-direction:column;gap:var(--space-2)}.info-item label{font-family:var(--font-subtitle);font-weight:500;font-size:var(--text-sm);color:var(--color-text-secondary)}.info-item p{font-family:var(--font-body);font-size:var(--text-base);color:var(--color-text-primary);margin:0}.preferences-content{display:flex;flex-direction:column;gap:var(--space-6)}.preference-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);background-color:var(--color-bg-hover);border-radius:var(--space-2)}.preference-item label{font-family:var(--font-subtitle);font-weight:500;font-size:var(--text-base);color:var(--color-text-primary)}.loading-text,.empty-text{font-family:var(--font-body);color:var(--color-text-muted);margin:0}.templates-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-4)}.template-card{background-color:var(--color-bg-card);border:1px solid var(--color-border-light);border-radius:var(--space-3);padding:var(--space-5);cursor:pointer;transition:all .2s ease}.template-card:hover{border-color:var(--color-border);box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.template-card h3{font-family:var(--font-subtitle);font-size:var(--text-lg);color:var(--color-text-primary);margin:0 0 var(--space-2) 0}.template-type{font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-secondary);margin:0 0 var(--space-3) 0}.template-dimensions{display:flex;gap:var(--space-3);font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-muted)}.template-dimensions span{padding:var(--space-1) var(--space-2);background-color:var(--color-bg-hover);border-radius:var(--space-1)}.projects-container{min-height:100vh;background-color:var(--color-bg-page)}.projects-header{background:linear-gradient(135deg,var(--color-dark) 0%,var(--color-darker) 100%);color:var(--color-text-inverse);padding:var(--space-6) 0;box-shadow:0 2px 10px #0000001a}.header-content{max-width:1200px;margin:0 auto;padding:0 var(--space-8);display:flex;justify-content:space-between;align-items:center}.projects-header h1{margin:0;font-size:var(--text-2xl)}.user-info{display:flex;align-items:center;gap:var(--space-4)}.user-name{font-weight:600}.user-role{padding:var(--space-1) var(--space-3);background-color:#fff3;border-radius:20px;font-size:var(--text-sm)}.logout-btn{padding:var(--space-2) var(--space-5);background-color:#fff3;color:var(--color-text-inverse);border:1px solid rgba(255,255,255,.3);border-radius:var(--space-2);cursor:pointer;font-size:var(--text-sm);font-weight:600;transition:all .3s}.logout-btn:hover{background-color:#ffffff4d;transform:translateY(-1px)}.projects-main{max-width:1200px;margin:0 auto;padding:var(--space-8)}.projects-header-section{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-8)}.section-title h2{margin:0 0 var(--space-2) 0;color:var(--color-text-primary);font-size:var(--text-2xl)}.projects-count{color:var(--color-text-muted);margin:0}.no-projects{text-align:center;padding:var(--space-12);background:var(--color-bg-card);border-radius:var(--space-3);box-shadow:0 2px 10px #0000001a}.no-projects p{margin:var(--space-2) 0;font-size:var(--text-xl);color:var(--color-text-primary)}.no-projects-subtitle{color:var(--color-text-muted);font-size:var(--text-base)!important}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-6)}.project-card{background:var(--color-bg-card);border-radius:var(--space-3);padding:var(--space-6);box-shadow:0 2px 10px #0000001a;transition:transform .3s,box-shadow .3s;display:flex;flex-direction:column;cursor:pointer}.project-card:hover{transform:translateY(-5px);box-shadow:0 5px 20px #00000026}.project-card h3{margin:0 0 var(--space-4) 0;color:var(--color-text-primary);font-size:var(--text-xl)}.project-description{color:var(--color-text-muted);margin:0 0 var(--space-4) 0;flex-grow:1;line-height:1.5}.project-status{display:inline-block;padding:var(--space-2) var(--space-3);border-radius:20px;font-size:var(--text-sm);font-weight:600;align-self:flex-start}.projects-container .modal h2{margin:0 0 var(--space-6) 0;color:var(--color-text-primary)}@media(max-width:768px){.header-content{flex-direction:column;gap:var(--space-4);align-items:flex-start}.user-info{width:100%;justify-content:space-between}.projects-grid{grid-template-columns:1fr}.projects-header-section{flex-direction:column;align-items:flex-start;gap:var(--space-4)}}.project-detail-container{min-height:100vh;background-color:var(--color-bg-page)}.project-detail-main{max-width:1200px;margin:0 auto;padding:var(--space-8)}.project-info-section{margin-bottom:var(--space-8)}.project-info-card{background:var(--color-bg-card);border-radius:var(--space-3);padding:var(--space-6);box-shadow:0 2px 10px #0000001a}.project-info-card h2{margin:0 0 var(--space-4) 0;color:var(--color-text-primary)}.project-info-card .project-description{color:var(--color-text-muted);margin:0 0 var(--space-4) 0;line-height:1.5}.objects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-6)}.object-card{background:var(--color-bg-card);border-radius:var(--space-3);padding:var(--space-6);box-shadow:0 2px 10px #0000001a;transition:transform .3s,box-shadow .3s;cursor:pointer}.object-card:hover{transform:translateY(-5px);box-shadow:0 5px 20px #00000026}.object-card h3{margin:0 0 var(--space-3) 0;color:var(--color-text-primary)}.object-description{color:var(--color-text-muted);margin:0 0 var(--space-4) 0;font-size:var(--text-sm);line-height:1.4}.piece-count{display:inline-block;padding:var(--space-1) var(--space-3);background-color:#e8eef6;color:#4a5568;border-radius:20px;font-size:var(--text-xs);font-weight:600}.project-detail-container .modal h2{margin:0 0 var(--space-6) 0;color:var(--color-text-primary)}.project-status{display:inline-block;padding:var(--space-2) var(--space-3);border-radius:20px;font-size:var(--text-sm);font-weight:600}.status-active{background-color:#d4edda;color:#155724}.status-planning{background-color:#d1ecf1;color:#0c5460}.status-completed{background-color:#d4edda;color:#155724}.status-on-hold{background-color:#fff3cd;color:#856404}.status-in-progress{background-color:#cce5ff;color:#004085}.cnc-section{margin-top:var(--space-8)}.cnc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-6)}.cnc-card{background:var(--color-bg-card);border-radius:var(--space-3);padding:var(--space-6);box-shadow:0 2px 10px #0000001a}.cnc-card-header h3{margin:0;color:var(--color-text-primary);cursor:pointer}.cnc-card-header h3:hover{color:var(--color-btn-primary-bg);text-decoration:underline}.unlink-btn{padding:var(--space-2) var(--space-3);background:transparent;color:#dc3545;border:1px solid #dc3545;border-radius:var(--space-2);cursor:pointer;font-size:var(--text-xs);font-weight:600;transition:all .2s}.unlink-btn:hover{background:#dc3545;color:#fff}.cnc-select{width:100%;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--space-2);font-size:var(--text-base);background:var(--color-bg-card);color:var(--color-text-primary)}.empty-state-inline{text-align:center;padding:var(--space-6)}.empty-state-inline p{margin:0 0 var(--space-4) 0;color:var(--color-text-muted)}@media(max-width:768px){.section-header{flex-direction:column;align-items:flex-start;gap:var(--space-4)}.section-actions{width:100%}.section-actions button{flex:1}.cnc-card-header{flex-direction:column;gap:var(--space-2)}}.piece-viewer-3d{display:flex;width:100%;height:100%;min-height:400px;border:1px solid var(--color-border);border-radius:var(--space-2);overflow:hidden;background:#fafafa}.viewer-container{flex:1;min-width:0;cursor:grab}.viewer-container:active{cursor:grabbing}.parts-list{width:240px;padding:var(--space-4);background:var(--color-bg-card);border-left:1px solid #eee;overflow-y:auto}.parts-list h4{margin:0 0 var(--space-3) 0;font-size:var(--text-sm);font-weight:600;color:var(--color-text-primary)}.parts-list ul{list-style:none;padding:0;margin:0}.part-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-1);border-radius:var(--space-1);cursor:pointer;transition:background-color .15s ease}.part-item:hover,.part-item.hovered{background-color:#f0f0f0}.part-item.selected{background-color:#e0e7ff}.part-color{width:12px;height:12px;border-radius:2px;flex-shrink:0}.part-label{flex:1;font-size:var(--text-sm);font-weight:500;color:var(--color-text-primary)}.part-dimensions{font-size:var(--text-xs);color:var(--color-text-muted);white-space:nowrap}@media(max-width:768px){.piece-viewer-3d{flex-direction:column;min-height:500px}.viewer-container{height:300px}.parts-list{width:100%;border-left:none;border-top:1px solid #eee;max-height:200px}}.object-detail-container{min-height:100vh;background-color:var(--color-bg-page)}.object-detail-main{max-width:1200px;margin:0 auto;padding:var(--space-8)}.object-info-section{margin-bottom:var(--space-8)}.object-info-card{background:var(--color-bg-card);border-radius:var(--space-3);padding:var(--space-6);box-shadow:0 2px 10px #0000001a}.object-info-card h2{margin:0 0 var(--space-3) 0;color:var(--color-text-primary)}.object-info-card .object-description{color:var(--color-text-muted);margin:0;line-height:1.5}.pieces-list{display:flex;flex-direction:column;gap:var(--space-4)}.piece-card{background:var(--color-bg-card);border-radius:var(--space-3);padding:var(--space-5);box-shadow:0 2px 10px #0000001a;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-6)}.piece-header{display:flex;align-items:center;gap:var(--space-3);min-width:200px}.piece-number{background:#e8eef6;color:#4a5568;padding:var(--space-1) var(--space-2);border-radius:4px;font-size:var(--text-xs);font-weight:600}.piece-header h3{margin:0;color:var(--color-text-primary);font-size:var(--text-lg)}.piece-type{padding:var(--space-1) var(--space-3);border-radius:20px;font-size:var(--text-xs);font-weight:600;text-transform:uppercase}.piece-dimensions{display:flex;gap:var(--space-6);flex:1}.dimension-value{font-weight:600;color:var(--color-text-primary);display:flex;align-items:center;gap:var(--space-2)}.override-badge{font-size:var(--text-xs);background:#e0e7ff;color:#4338ca;padding:calc(var(--space-1) / 2) var(--space-2);border-radius:3px;font-weight:500}.piece-actions{margin-left:auto;display:flex;gap:var(--space-2)}.view-3d-btn{padding:var(--space-2) var(--space-4);background:#e0e7ff;color:#4338ca;border:none;border-radius:var(--space-2);cursor:pointer;font-size:var(--text-sm);font-weight:600;transition:all .3s}.view-3d-btn:hover{background:#c7d2fe}.view-3d-btn.active{background:#4338ca;color:var(--color-text-inverse)}.delete-btn{padding:var(--space-2) var(--space-4);background:#fee2e2;color:var(--color-error);border:none;border-radius:var(--space-2);cursor:pointer;font-size:var(--text-sm);font-weight:600;transition:all .3s}.modal-lg{max-width:600px}.template-preview{background:#f8fafc;border-radius:var(--space-2);padding:var(--space-4);margin-bottom:var(--space-5)}.template-preview h3{margin:0 0 var(--space-3) 0;font-size:var(--text-sm);color:#4a5568}.preview-dimensions{display:flex;gap:var(--space-6);font-weight:600;color:var(--color-text-primary)}.override-section{margin-bottom:var(--space-5)}.override-section h3{margin:0 0 var(--space-2) 0;font-size:var(--text-sm);color:#4a5568}.override-hint{margin:0 0 var(--space-4) 0;font-size:var(--text-sm);color:var(--color-text-muted)}.dimension-inputs{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4)}.piece-3d-section{margin-top:var(--space-8);background:var(--color-bg-card);border-radius:var(--space-3);padding:var(--space-6);box-shadow:0 2px 10px #0000001a}.piece-3d-section .section-header{margin-bottom:var(--space-4);padding-bottom:var(--space-4);border-bottom:1px solid #eee}.piece-3d-section .section-header h3{margin:0;color:var(--color-text-primary);font-size:var(--text-lg)}.view-controls{display:flex;align-items:center;gap:var(--space-4)}.close-btn{padding:var(--space-2) var(--space-4);background:#f3f4f6;color:#374151;border:none;border-radius:var(--space-2);cursor:pointer;font-size:var(--text-sm);font-weight:500;transition:all .3s}.close-btn:hover{background:#e5e7eb}.piece-3d-container{position:relative;min-height:500px}.loading-3d{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:var(--space-4) var(--space-8);background:#ffffffe6;border-radius:var(--space-2);box-shadow:0 2px 10px #0000001a;z-index:10;color:var(--color-text-muted)}.secondary-btn:disabled{opacity:.6;cursor:not-allowed}.modal-actions{display:flex;justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-6)}@media(max-width:768px){.piece-card{flex-direction:column;align-items:flex-start}.piece-dimensions{width:100%;justify-content:space-around}.piece-actions{margin-left:0;width:100%}.piece-actions button{width:100%}.dimension-inputs{grid-template-columns:1fr}.view-controls{flex-direction:column;gap:var(--space-2)}}.templates-container{min-height:100vh;background-color:var(--color-bg-page)}.templates-main{max-width:1200px;margin:0 auto;padding:var(--space-8)}.filter-group{display:flex;align-items:center;gap:var(--space-3)}.filter-group label{color:#4a5568;font-weight:600}.filter-select{padding:var(--space-2) var(--space-4);border:1px solid var(--color-border);border-radius:var(--space-2);font-size:var(--text-sm);background:var(--color-bg-card);cursor:pointer}.filter-select:focus{outline:none;border-color:var(--color-btn-primary-bg)}.templates-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-6)}.template-card{background:var(--color-bg-card);border-radius:var(--space-3);padding:var(--space-6);box-shadow:0 2px 10px #0000001a;transition:transform .3s,box-shadow .3s;cursor:pointer;display:flex;flex-direction:column}.template-card:hover{transform:translateY(-5px);box-shadow:0 5px 20px #00000026}.template-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--space-4)}.template-header h3{margin:0;color:var(--color-text-primary);font-size:var(--text-lg)}.template-type{padding:var(--space-1) var(--space-3);border-radius:20px;font-size:var(--text-xs);font-weight:600;text-transform:uppercase}.type-base{background-color:#fef3c7;color:#92400e}.type-wall{background-color:#dbeafe;color:#1e40af}.template-dimensions{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-4);background:#f8fafc;border-radius:var(--space-2);margin-bottom:var(--space-4)}.dimension{display:flex;flex-direction:column;align-items:center}.dimension-label{font-size:var(--text-xs);color:var(--color-text-muted);text-transform:uppercase}.dimension-value{font-weight:700;color:var(--color-text-primary);font-size:var(--text-lg)}.dimension-separator{color:#999;font-weight:300}.unit{color:var(--color-text-muted);font-size:var(--text-sm);margin-left:var(--space-1)}.template-actions{margin-top:auto}.delete-btn{padding:var(--space-2) var(--space-4);background:#fee2e2;color:var(--color-error);border:none;border-radius:var(--space-2);cursor:pointer;font-size:var(--text-sm);font-weight:600;transition:all .3s;width:100%}.delete-btn:hover{background:#fecaca}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-6)}@media(max-width:768px){.section-header{flex-direction:column;align-items:flex-start;gap:var(--space-4)}.filter-group{width:100%}.filter-select{flex:1}}.template-form-container{min-height:100vh;background-color:var(--color-bg-page)}.template-form-main{max-width:1200px;margin:0 auto;padding:var(--space-8)}.form-layout{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-8);margin-bottom:var(--space-8)}.form-column{display:flex;flex-direction:column;gap:var(--space-6)}.form-section{background:var(--color-bg-card);border-radius:var(--space-3);padding:var(--space-6);box-shadow:0 2px 10px #0000001a}.form-section h2{margin:0 0 var(--space-5) 0;color:var(--color-text-primary);font-size:var(--text-lg);padding-bottom:var(--space-3);border-bottom:1px solid #eee}.form-group{margin-bottom:var(--space-4)}.form-group:last-child{margin-bottom:0}.form-group label{display:block;margin-bottom:var(--space-2);font-weight:600;color:var(--color-text-primary);font-size:var(--text-sm)}.form-group input,.form-group select{width:100%;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--space-2);font-size:var(--text-base);transition:border-color .3s;box-sizing:border-box}.form-group input:focus,.form-group select:focus{outline:none;border-color:var(--color-btn-primary-bg)}.form-hint{margin:var(--space-2) 0 0 0;font-size:var(--text-sm);color:var(--color-text-muted)}.dimension-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4)}.dimension-grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4)}.board-group{margin-bottom:var(--space-5);padding-bottom:var(--space-5);border-bottom:1px solid #f0f0f0}.board-group:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}.board-group h3{margin:0 0 var(--space-3) 0;font-size:var(--text-sm);color:#4a5568;font-weight:600}.preview-section{background:var(--color-bg-card);border-radius:var(--space-3);padding:var(--space-6);box-shadow:0 2px 10px #0000001a;margin-bottom:var(--space-8)}.preview-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid #eee}.preview-header h2{margin:0;color:var(--color-text-primary);font-size:var(--text-lg)}.wireframe-toggle{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-muted);cursor:pointer}.wireframe-toggle input{cursor:pointer}.preview-container{position:relative;min-height:500px}.preview-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:var(--space-4) var(--space-8);background:#ffffffe6;border-radius:var(--space-2);box-shadow:0 2px 10px #0000001a;z-index:10;color:var(--color-text-muted)}.preview-placeholder{background:#f8fafc;border:2px dashed #e2e8f0;border-radius:var(--space-2);padding:var(--space-12) var(--space-8);text-align:center;color:#64748b}.preview-placeholder p{margin:0;font-size:var(--text-base)}.form-actions{display:flex;justify-content:flex-end;gap:var(--space-4)}.header-left{display:flex;align-items:center;gap:var(--space-4)}.back-btn{padding:var(--space-2) var(--space-4);background-color:#fff3;color:var(--color-text-inverse);border:1px solid rgba(255,255,255,.3);border-radius:var(--space-2);cursor:pointer;font-size:var(--text-sm);font-weight:600;transition:all .3s}.back-btn:hover{background-color:#ffffff4d}.primary-btn{padding:var(--space-3) var(--space-6);background:linear-gradient(135deg,var(--color-dark) 0%,var(--color-darker) 100%);color:var(--color-text-inverse);border:none;border-radius:var(--space-2);cursor:pointer;font-size:var(--text-sm);font-weight:600;transition:all .3s}.secondary-btn{padding:var(--space-3) var(--space-6);background:var(--color-bg-card);color:var(--color-btn-primary-bg);border:1px solid var(--color-btn-primary-bg);border-radius:var(--space-2);cursor:pointer;font-size:var(--text-sm);font-weight:600;transition:all .3s}@media(max-width:900px){.form-layout,.dimension-grid{grid-template-columns:1fr}.form-actions{flex-direction:column}.form-actions button{width:100%}}.cnc-list-content{padding:var(--space-6)}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-6)}.page-header h1{margin:0;color:var(--color-text-primary)}.cnc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-6)}.cnc-card{background:var(--color-bg-card);border-radius:var(--space-3);padding:var(--space-6);box-shadow:0 2px 10px #0000001a;transition:transform .3s,box-shadow .3s;cursor:pointer}.cnc-card:hover{transform:translateY(-5px);box-shadow:0 5px 20px #00000026}.cnc-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--space-3)}.cnc-card-header h3{margin:0;color:var(--color-text-primary)}.shared-badge{display:inline-block;padding:var(--space-1) var(--space-2);background-color:#e8f4fd;color:#0969da;border-radius:4px;font-size:var(--text-xs);font-weight:500}.cnc-machine{color:var(--color-text-muted);margin:0 0 var(--space-4) 0;font-size:var(--text-sm)}.cnc-card-footer{display:flex;justify-content:space-between;align-items:center}.tool-count{display:inline-block;padding:var(--space-1) var(--space-3);background-color:#e8eef6;color:#4a5568;border-radius:20px;font-size:var(--text-xs);font-weight:600}.owner-badge{display:inline-block;padding:var(--space-1) var(--space-2);background-color:#d4edda;color:#155724;border-radius:4px;font-size:var(--text-xs);font-weight:500}.empty-state{text-align:center;padding:var(--space-12);background:var(--color-bg-card);border-radius:var(--space-3);box-shadow:0 2px 10px #0000001a}.empty-state p{margin:var(--space-2) 0;font-size:var(--text-xl);color:var(--color-text-primary)}.empty-state-subtitle{color:var(--color-text-muted);font-size:var(--text-base)!important}.machine-select{width:100%;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--space-2);font-size:var(--text-base);background:var(--color-bg-card);color:var(--color-text-primary)}@media(max-width:768px){.page-header{flex-direction:column;align-items:flex-start;gap:var(--space-4)}.page-header button{width:100%}.form-row{grid-template-columns:1fr}.cnc-card-header{flex-direction:column;gap:var(--space-2)}}.cnc-detail-content{padding:var(--space-6);max-width:1200px;margin:0 auto}.page-header{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-6)}.page-header h1{margin:0;flex:1;color:var(--color-text-primary)}.back-btn{padding:var(--space-2) var(--space-4);background:var(--color-bg-card);color:var(--color-text-primary);border:1px solid var(--color-border);border-radius:var(--space-2);cursor:pointer;font-size:var(--text-sm);transition:all .3s}.back-btn:hover{background:var(--color-bg-hover)}.detail-section{background:var(--color-bg-card);border-radius:var(--space-3);padding:var(--space-6);margin-bottom:var(--space-6);box-shadow:0 2px 10px #0000001a}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-5)}.section-header h2{margin:0;color:var(--color-text-primary)}.section-actions{display:flex;gap:var(--space-3)}.detail-card{background:var(--color-bg-page);border-radius:var(--space-2);padding:var(--space-4)}.detail-row{display:flex;gap:var(--space-4);padding:var(--space-2) 0}.detail-row:not(:last-child){border-bottom:1px solid var(--color-border)}.detail-label{font-weight:600;color:var(--color-text-muted);min-width:100px}.detail-value{color:var(--color-text-primary)}.edit-form{background:var(--color-bg-page);border-radius:var(--space-2);padding:var(--space-4)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.tools-container{display:flex;flex-direction:column;gap:var(--space-6)}.tool-group h3{margin:0 0 var(--space-4) 0;color:var(--color-text-primary);font-size:var(--text-lg);border-bottom:2px solid var(--color-border);padding-bottom:var(--space-2)}.tool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-4)}.tool-card{background:var(--color-bg-page);border-radius:var(--space-2);padding:var(--space-4);border:1px solid var(--color-border)}.tool-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--space-3)}.tool-header h4{margin:0;color:var(--color-text-primary)}.tool-actions{display:flex;gap:var(--space-2)}.tool-details{display:flex;flex-wrap:wrap;gap:var(--space-2)}.tool-details span{display:inline-block;padding:var(--space-1) var(--space-2);background:var(--color-bg-card);border-radius:var(--space-1);font-size:var(--text-xs);color:var(--color-text-muted)}.users-list{display:flex;flex-direction:column;gap:var(--space-3)}.user-card{display:flex;justify-content:space-between;align-items:center;background:var(--color-bg-page);border-radius:var(--space-2);padding:var(--space-4);border:1px solid var(--color-border)}.user-info{display:flex;flex-direction:column;gap:var(--space-1)}.user-name{font-weight:600;color:var(--color-text-primary)}.user-email{font-size:var(--text-sm);color:var(--color-text-muted)}.primary-btn{padding:var(--space-3) var(--space-5);background:linear-gradient(135deg,var(--color-dark) 0%,var(--color-darker) 100%);color:var(--color-text-inverse);border:none;border-radius:var(--space-2);cursor:pointer;font-size:var(--text-sm);font-weight:600;transition:all .3s}.primary-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #0003}.primary-btn:disabled{opacity:.6;cursor:not-allowed}.secondary-btn{padding:var(--space-3) var(--space-5);background:var(--color-bg-card);color:var(--color-btn-primary-bg);border:1px solid var(--color-btn-primary-bg);border-radius:var(--space-2);cursor:pointer;font-size:var(--text-sm);font-weight:600;transition:all .3s}.secondary-btn:hover:not(:disabled){background:var(--color-bg-hover)}.danger-btn{padding:var(--space-3) var(--space-5);background:#dc3545;color:#fff;border:none;border-radius:var(--space-2);cursor:pointer;font-size:var(--text-sm);font-weight:600;transition:all .3s}.danger-btn:hover{background:#c82333}.icon-btn{padding:var(--space-2) var(--space-3);background:var(--color-bg-card);color:var(--color-text-primary);border:1px solid var(--color-border);border-radius:var(--space-1);cursor:pointer;font-size:var(--text-xs);transition:all .2s}.icon-btn:hover{background:var(--color-bg-hover)}.icon-btn.danger{color:#dc3545;border-color:#dc3545}.icon-btn.danger:hover{background:#dc3545;color:#fff}.shared-badge{display:inline-block;padding:var(--space-1) var(--space-3);background-color:#e8f4fd;color:#0969da;border-radius:20px;font-size:var(--text-sm);font-weight:500}.empty-state{text-align:center;padding:var(--space-8);background:var(--color-bg-page);border-radius:var(--space-2)}.empty-state p{margin:var(--space-2) 0;color:var(--color-text-primary)}.empty-state-subtitle{color:var(--color-text-muted);font-size:var(--text-sm)!important}.tool-modal{max-width:500px}@media(max-width:768px){.page-header{flex-wrap:wrap}.form-row{grid-template-columns:1fr}.section-header{flex-direction:column;align-items:flex-start;gap:var(--space-3)}.tool-header{flex-direction:column;gap:var(--space-2)}}
