:root{--bg: #181818;--bg-deep: #121212;--surface: #232323;--surface-2: #2a2a2a;--surface-3: #303030;--border: #333;--border-strong: #444;--border-accent: rgba(201, 169, 110, .4);--text: #ececec;--text-strong: #fff;--text-muted: #9a9a9a;--text-dim: #6a6a6a;--accent: #c9a96e;--accent-strong: #d8b878;--accent-soft: rgba(201, 169, 110, .14);--donna: #d97a98;--donna-soft: rgba(217, 122, 152, .14);--uomo: #6e9bc9;--uomo-soft: rgba(110, 155, 201, .14);--bambino: #8eba6c;--bambino-soft: rgba(142, 186, 108, .14);--success: #88c79c;--success-soft: rgba(136, 199, 156, .14);--error: #ff9999;--error-soft: rgba(220, 60, 60, .14);--info: #88a8c7;--info-soft: rgba(136, 168, 199, .14);--code-bg: rgba(0, 0, 0, .25);--shadow-card: 0 1px 3px rgba(0, 0, 0, .25);--shadow-card-hover: 0 4px 12px rgba(0, 0, 0, .4)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em;background:var(--code-bg);padding:.1em .35em;border-radius:4px;color:var(--accent-strong)}.login-screen{min-height:100%;display:flex;align-items:center;justify-content:center;padding:1.5rem;padding-top:max(1.5rem,env(safe-area-inset-top));padding-bottom:max(1.5rem,env(safe-area-inset-bottom));background:radial-gradient(circle at 50% 0%,#232323 0%,var(--bg) 70%)}.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:2rem;box-shadow:0 12px 40px #00000080}.brand{text-align:center;margin-bottom:1.5rem}.brand-logo{max-width:96px;max-height:96px;border-radius:12px;margin:0 auto .75rem;display:block;object-fit:contain}.brand-logo-placeholder{width:80px;height:80px;border-radius:12px;background:var(--surface-2);border:2px dashed var(--border-strong);display:flex;align-items:center;justify-content:center;margin:0 auto .75rem;font-size:.7rem;color:var(--text-dim);letter-spacing:.1em}.brand h1{margin:0;font-size:1.5rem;font-weight:500;letter-spacing:-.01em;color:var(--text-strong)}form label,.tab-section label{display:block;margin-bottom:1rem;font-size:.85rem;color:var(--text-muted)}form input,.tab-section input[type=text],.tab-section input[type=password],.tab-section input[type=email],.tab-section select,.tab-section textarea{width:100%;padding:.65rem .85rem;margin-top:.4rem;border:1px solid var(--border-strong);border-radius:8px;background:var(--bg-deep);color:var(--text);font-size:.95rem;font-family:inherit;transition:border-color .15s}form input:focus,.tab-section input:focus,.tab-section select:focus,.tab-section textarea:focus{outline:none;border-color:var(--accent)}form button{width:100%;padding:.85rem;margin-top:.5rem;border:none;border-radius:8px;background:var(--accent);color:#1a1a1a;font-size:1rem;font-weight:600;cursor:pointer;transition:background .15s}form button:hover{background:var(--accent-strong)}form button:disabled{opacity:.5;cursor:not-allowed}.error{padding:.65rem .8rem;margin-bottom:.8rem;background:var(--error-soft);border:1px solid rgba(220,60,60,.4);border-radius:6px;color:var(--error);font-size:.85rem}.hint{font-size:.78rem;color:var(--text-muted);margin:1rem 0 0;line-height:1.55}.app-shell{display:flex;flex-direction:column;min-height:100%}.app-shell header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;padding-top:max(1rem,env(safe-area-inset-top));padding-left:max(1.5rem,env(safe-area-inset-left));padding-right:max(1.5rem,env(safe-area-inset-right));border-bottom:1px solid var(--border);background:var(--bg-deep);position:sticky;top:0;z-index:10}.brand-row{display:flex;align-items:center;gap:.75rem}.brand-logo-small{width:28px;height:28px;border-radius:6px;object-fit:contain}.app-shell header h2{margin:0;font-size:1.05rem;font-weight:500;color:var(--text-strong)}.app-shell main{padding:1.5rem;padding-left:max(1.5rem,env(safe-area-inset-left));padding-right:max(1.5rem,env(safe-area-inset-right));padding-bottom:max(1.5rem,env(safe-area-inset-bottom));flex:1;max-width:1200px;width:100%}.app-shell header>button{background:transparent;border:1px solid var(--border-strong);color:var(--text);padding:.4rem .8rem;border-radius:6px;cursor:pointer;font-size:.85rem;transition:border-color .15s}.app-shell header>button:hover{border-color:var(--accent)}.tabs{display:flex;border-bottom:1px solid var(--border);padding:0 max(1rem,env(safe-area-inset-left)) 0 max(1rem,env(safe-area-inset-right));overflow-x:auto;-webkit-overflow-scrolling:touch;background:var(--bg-deep)}.tab{background:transparent;border:none;color:var(--text-muted);padding:.85rem 1.1rem;min-height:44px;cursor:pointer;font-size:.92rem;border-bottom:2px solid transparent;white-space:nowrap;font-family:inherit;transition:color .15s,border-color .15s}.tab:hover{color:var(--text)}.tab.active{color:var(--accent);border-bottom-color:var(--accent)}.tab-section{max-width:1100px}.tab-section>h3{margin-top:0;margin-bottom:1.2rem;font-weight:500;font-size:1.2rem;color:var(--text-strong);letter-spacing:-.01em}.tab-section>h3 .muted{font-weight:400;font-size:.9rem}.tab-section button{background:var(--accent);color:#1a1a1a;border:none;padding:.6rem 1.2rem;border-radius:8px;font-weight:600;cursor:pointer;font-size:.9rem;font-family:inherit;transition:background .15s}.tab-section button:hover{background:var(--accent-strong)}.tab-section button.secondary{background:transparent;border:1px solid var(--border-strong);color:var(--text)}.tab-section button.secondary:hover{border-color:var(--accent);color:var(--text-strong)}.tab-section button:disabled{opacity:.4;cursor:not-allowed}.tab-section .row{display:flex;gap:.6rem;margin:.5rem 0;flex-wrap:wrap}.status{margin-top:1rem;padding:.7rem .9rem;background:var(--surface-2);border-radius:8px;font-size:.85rem;border:1px solid var(--border)}.status-ok{background:var(--success-soft);border-color:#88c79c66;color:var(--success)}.status-err{background:var(--error-soft);border-color:#dc3c3c66;color:var(--error)}.empty-state{padding:2.5rem 1.5rem;text-align:center;border:1px dashed var(--border);border-radius:12px;background:var(--surface)}.empty-state p{color:var(--text-muted);margin:.5rem 0}.empty-state button{margin-top:.8rem}.filters{display:flex;gap:.6rem;margin-bottom:.8rem;flex-wrap:wrap}.filters input[type=search],.filters select{padding:.55rem .75rem;border:1px solid var(--border-strong);border-radius:8px;background:var(--bg-deep);color:var(--text);font-size:.88rem;font-family:inherit}.filters input[type=search]:focus,.filters select:focus{outline:none;border-color:var(--accent)}.filters input[type=search]{flex:1;min-width:180px;max-width:320px}.filters select{min-width:140px}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.1rem 1.2rem;box-shadow:var(--shadow-card);transition:border-color .15s,transform .1s,box-shadow .15s}.card.clickable{cursor:pointer}.card.clickable:hover{border-color:var(--border-accent);transform:translateY(-1px);box-shadow:var(--shadow-card-hover)}.card.clickable:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.garments-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:.85rem;margin-top:.8rem}.garment-card{display:flex;flex-direction:column;gap:.6rem;border-left:3px solid var(--border)}.garment-card.section-donna{border-left-color:var(--donna)}.garment-card.section-uomo{border-left-color:var(--uomo)}.garment-card.section-bambino{border-left-color:var(--bambino)}.garment-card-title{font-size:1rem;font-weight:500;line-height:1.3;color:var(--text-strong)}.garment-card-badges{display:flex;gap:.4rem;flex-wrap:wrap}.garment-card-meta{font-size:.8rem;color:var(--text-muted)}.garment-card-stats{display:flex;flex-wrap:wrap;gap:.3rem .85rem;font-size:.8rem;color:var(--text-muted);padding-top:.5rem;border-top:1px dashed var(--border)}.garment-card-stats strong{color:var(--text);font-weight:500}.badge{display:inline-flex;align-items:center;padding:.18rem .55rem;border-radius:4px;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;font-weight:600}.badge.section-donna{background:var(--donna-soft);color:var(--donna)}.badge.section-uomo{background:var(--uomo-soft);color:var(--uomo)}.badge.section-bambino{background:var(--bambino-soft);color:var(--bambino)}.badge.category{background:var(--accent-soft);color:var(--accent-strong)}.badge.scale{background:#ffffff0f;color:var(--text-muted)}.badge.ease{background:var(--info-soft);color:var(--info)}.badge.muted{background:var(--surface-2);color:var(--text-muted)}.detail-section{max-width:950px}.back-button{background:transparent;border:1px solid var(--border-strong);color:var(--text-muted);padding:.45rem .8rem;border-radius:6px;cursor:pointer;font-size:.85rem;margin-bottom:1rem;transition:border-color .15s,color .15s}.back-button:hover{border-color:var(--accent);color:var(--text-strong)}.detail-header.card{display:flex;flex-direction:column;gap:.85rem;border-left:4px solid var(--accent);padding:1.6rem 1.8rem;margin-bottom:1.2rem}.detail-header.card.section-donna{border-left-color:var(--donna)}.detail-header.card.section-uomo{border-left-color:var(--uomo)}.detail-header.card.section-bambino{border-left-color:var(--bambino)}.detail-header .header-badges{display:flex;gap:.45rem;flex-wrap:wrap;margin:0}.detail-header h3{margin:0;font-size:1.65rem;font-weight:500;line-height:1.25;color:var(--text-strong);letter-spacing:-.015em;max-width:90%}.detail-header .header-meta{margin:0;font-size:.82rem;color:var(--text-muted)}.detail-block{margin-bottom:1rem;padding:1.1rem 1.2rem;background:var(--surface);border:1px solid var(--border);border-radius:12px}.detail-block h4{margin:0 0 .8rem;font-size:.78rem;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.08em}.detail-block h4 .count{color:var(--text-dim);font-weight:400;text-transform:none;letter-spacing:0}.detail-block h5{margin:1rem 0 .5rem;font-size:.78rem;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.codes-list{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.45rem}.codes-list li{border:none;padding:0;display:inline-flex;align-items:baseline;gap:.35rem;background:var(--surface-2);padding:.35rem .65rem;border-radius:6px;font-size:.82rem}.codes-list code{background:transparent;padding:0;font-weight:600;color:var(--accent-strong)}.codes-list .muted{font-size:.78rem}.formulas-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.4rem}.formulas-list li{padding:.55rem .7rem;background:var(--bg-deep);border-radius:6px;font-size:.85rem;border:1px solid var(--border);display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline}.formula-name{color:var(--success);font-family:ui-monospace,monospace}.formulas-list code{background:transparent;padding:0}.piece-block{background:var(--bg-deep);border:1px solid var(--border);border-radius:8px;padding:.85rem 1.1rem;margin-bottom:.6rem}.piece-block summary{cursor:pointer;font-size:.95rem;user-select:none;padding:.2rem 0;color:var(--text)}.piece-block summary:hover{color:var(--accent-strong)}.piece-block summary strong{color:var(--text-strong)}.piece-content{padding-top:.7rem}.points-table{width:100%;border-collapse:collapse;font-size:.82rem;margin-bottom:.6rem}.points-table th,.points-table td{padding:.45rem .55rem;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}.points-table th{color:var(--text-muted);font-weight:500;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em}.points-table td:first-child,.points-table td:nth-child(3),.points-table td:nth-child(4){font-family:ui-monospace,monospace;white-space:nowrap}.points-table td:first-child code{color:var(--accent)}.points-table td:nth-child(2){color:var(--text)}.segments-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.3rem;font-size:.85rem}.segments-list li{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;padding:.35rem .55rem;background:var(--surface-2);border-radius:5px;border:none}.seg-type{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);background:var(--surface-3);padding:.12rem .45rem;border-radius:3px;font-weight:500}.steps-list{padding-left:0;list-style:none;margin:0;display:flex;flex-direction:column;gap:.6rem;counter-reset:step-counter}.steps-list li{position:relative;padding:.85rem 1rem .85rem 3rem;background:var(--bg-deep);border:1px solid var(--border);border-radius:8px;border-bottom:1px solid var(--border);display:block}.steps-list li:before{counter-increment:step-counter;content:counter(step-counter);position:absolute;left:.8rem;top:.85rem;width:1.6rem;height:1.6rem;background:var(--accent-soft);color:var(--accent-strong);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:600}.steps-list li p{margin:.1rem 0;line-height:1.5}.steps-list li p.small{font-size:.78rem;color:var(--text-muted);margin-top:.4rem}.detail-actions{margin-top:1.5rem}.selected-garment{display:flex;align-items:center;gap:1rem;padding:1rem 1.2rem;border-left:3px solid var(--border)}.selected-garment.section-donna{border-left-color:var(--donna)}.selected-garment.section-uomo{border-left-color:var(--uomo)}.selected-garment.section-bambino{border-left-color:var(--bambino)}.selected-garment-info{flex:1;display:flex;flex-direction:column;gap:.4rem}.selected-garment button{flex-shrink:0;padding:.45rem .9rem!important;font-size:.85rem!important}.garment-picker-list{list-style:none;padding:0;margin:0;max-height:360px;overflow-y:auto;background:var(--bg-deep);border:1px solid var(--border);border-radius:8px}.garment-picker-item{padding:.65rem .85rem;border-bottom:1px solid var(--border);cursor:pointer;display:flex;flex-direction:column;gap:.3rem;border-left:3px solid transparent;transition:background .1s,border-left-color .1s}.garment-picker-item:last-child{border-bottom:none}.garment-picker-item:hover{background:var(--surface)}.garment-picker-item.section-donna:hover{border-left-color:var(--donna)}.garment-picker-item.section-uomo:hover{border-left-color:var(--uomo)}.garment-picker-item.section-bambino:hover{border-left-color:var(--bambino)}.garment-picker-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.picker-name{font-weight:500;color:var(--text-strong)}.picker-meta{display:flex;gap:.45rem;align-items:center;flex-wrap:wrap;font-size:.8rem}.picker-empty{padding:1rem;text-align:center;font-style:italic}.measurements-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.5rem .7rem;margin-top:.6rem}.measurement-input{display:grid;grid-template-columns:60px 1fr 80px;gap:.4rem;align-items:center;padding:.4rem .55rem;background:var(--bg-deep);border:1px solid var(--border);border-radius:6px;margin:0}.measurement-input .m-code{font-family:ui-monospace,monospace;font-size:.78rem;color:var(--accent-strong);font-weight:600}.measurement-input .m-name{font-size:.78rem;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.measurement-input input{margin:0;padding:.35rem .5rem;font-size:.85rem;text-align:right}textarea{width:100%;padding:.65rem .85rem;border:1px solid var(--border-strong);border-radius:8px;background:var(--bg-deep);color:var(--text);font-size:.92rem;font-family:inherit;margin-top:.4rem}textarea:focus{outline:none;border-color:var(--accent)}.list{list-style:none;padding:0;margin:0}.list li{padding:.9rem 0;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:.2rem}.list li strong{color:var(--text-strong);font-weight:500}.muted{color:var(--text-muted);font-size:.82rem}.brand-preview{padding:1.5rem;background:var(--bg-deep);border-radius:8px;text-align:center;margin-bottom:1rem;border:1px solid var(--border)}.brand-preview img{max-width:120px;max-height:120px;border-radius:8px;object-fit:contain}.import-panel{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.4rem;margin-top:1rem}.import-panel h4{margin-top:0;margin-bottom:1rem;font-size:1rem;font-weight:500;color:var(--text-strong)}.file-picker{display:flex;flex-direction:column;gap:.4rem;margin-bottom:.85rem;padding:.8rem .95rem;background:var(--bg-deep);border:1px solid var(--border);border-radius:8px}.file-picker label{margin:0;display:flex;flex-direction:column;gap:.4rem}.file-picker label>span{font-size:.82rem;color:var(--text-muted);font-weight:500}.file-picker input[type=file]{font-size:.78rem;color:var(--text-muted);margin:0}.file-status{font-size:.76rem;font-family:ui-monospace,monospace}.file-status.ok{color:var(--success)}.file-status.none{color:var(--text-dim)}.piece-block.card{padding:1rem 1.1rem}.piece-block-header{display:flex;align-items:baseline;justify-content:space-between;gap:.8rem;margin-bottom:.7rem}.piece-block-header strong{font-size:1.05rem;color:var(--text-strong)}.piece-block-header .muted{font-size:.82rem}.piece-preview{display:flex;flex-direction:column;gap:.6rem;margin-bottom:.6rem}.piece-preview-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.85rem 1.2rem;font-size:.8rem;color:var(--text-muted)}.toggle-inline{display:inline-flex;align-items:center;gap:.4rem;margin:0;font-size:.8rem;color:var(--text-muted);cursor:pointer}.toggle-inline input[type=checkbox]{margin:0;cursor:pointer}.piece-preview-size{margin-left:auto;font-family:ui-monospace,monospace;font-size:.78rem}.piece-preview-actions{display:inline-flex;gap:.4rem}.ghost-btn{background:transparent;border:1px solid var(--border-strong);color:var(--text-muted);padding:.4rem .85rem;min-height:36px;border-radius:6px;font-size:.78rem;cursor:pointer;font-family:inherit;transition:all .12s ease}@media(pointer:coarse){.ghost-btn{min-height:44px;padding:.5rem 1rem}.toggle-inline{min-height:36px}.toggle-inline input[type=checkbox]{width:20px;height:20px}.tab-section button{min-height:44px}.app-shell header>button{min-height:44px;padding:.5rem 1rem}form input,.tab-section input,.tab-section select,.tab-section textarea,.measurement-input input,textarea,select{font-size:16px}}html,body{overscroll-behavior-y:contain}.ghost-btn:hover{border-color:var(--accent);color:var(--accent-strong);background:var(--accent-soft)}.piece-svg-wrap{background:var(--bg-deep);border:1px solid var(--border);border-radius:10px;padding:.5rem;overflow:hidden}.piece-svg{display:block;width:100%;height:auto;max-height:70vh;background:var(--bg-deep)}.piece-svg .grid-line{stroke:#ffffff0d;stroke-width:.5;vector-effect:non-scaling-stroke}.piece-svg .grid-axis{stroke:#c9a96e4d;stroke-width:.9;vector-effect:non-scaling-stroke}.piece-svg .segment-line,.piece-svg .segment-curve,.piece-svg .segment-arc,.piece-svg .segment-fallback{fill:none;stroke:var(--accent);stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.piece-svg .segment-curve,.piece-svg .segment-arc{stroke:var(--accent-strong)}.piece-svg .segment-fallback{stroke:var(--text-dim);stroke-dasharray:2 2;stroke-width:1}.piece-svg .point-dot{fill:var(--text-strong);stroke:var(--bg-deep);stroke-width:1;vector-effect:non-scaling-stroke}.piece-svg .point-label{fill:var(--text);font-size:1.6px;font-family:ui-monospace,monospace;paint-order:stroke;stroke:var(--bg-deep);stroke-width:.4;stroke-linejoin:round;user-select:none}.piece-svg .segment-length{fill:var(--accent-strong);font-family:ui-monospace,monospace;text-anchor:middle;dominant-baseline:middle;paint-order:stroke;stroke:var(--bg-deep);stroke-linejoin:round;user-select:none}.piece-points-details{margin-top:.4rem;padding-top:.5rem;border-top:1px solid var(--border)}.piece-points-details summary{cursor:pointer;font-size:.82rem;padding:.2rem 0}.piece-points-details summary:hover{color:var(--text)}.measurement-input .m-value{font-family:ui-monospace,monospace;font-size:.85rem;color:var(--text-strong);text-align:right;padding:.35rem .5rem}button.danger{background:transparent;border:1px solid var(--error);color:var(--error)}button.danger:hover{background:var(--error-soft);color:var(--error)}.header-edit-input{font-size:1.5rem;font-weight:500;background:var(--bg-deep);border:1px solid var(--border-strong);border-radius:8px;padding:.4rem .6rem;color:var(--text-strong);width:100%;margin:0}.versions-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.4rem}.version-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.6rem .85rem;background:var(--bg-deep);border:1px solid var(--border);border-radius:8px;font-size:.85rem}.version-row strong{color:var(--accent-strong);font-family:ui-monospace,monospace}.pwa-update-banner{position:fixed;left:max(1rem,env(safe-area-inset-left));right:max(1rem,env(safe-area-inset-right));bottom:max(1rem,env(safe-area-inset-bottom));margin:0 auto;max-width:360px;z-index:1000;background:var(--surface);border:1px solid var(--border-accent);border-radius:10px;padding:.85rem 1rem;display:flex;align-items:center;justify-content:space-between;gap:.85rem;font-size:.88rem;color:var(--text);box-shadow:0 6px 20px #00000080}.pwa-update-banner button{background:var(--accent);border:none;color:#1a1a1a;padding:.4rem .9rem;border-radius:6px;font-weight:600;cursor:pointer;font-family:inherit;font-size:.85rem}.pwa-update-banner.pwa-offline-ready{border-color:var(--success);color:var(--success);justify-content:center}
