@import"https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500&family=Lato:wght@300;400;500;700&display=swap";*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:DM Sans,system-ui,-apple-system,sans-serif;background:#F4F6F2;color:#1a2e20;font-size:14px}.font-display{font-family:Playfair Display,serif}button{cursor:pointer;border:none;outline:none;font-family:inherit;font-size:14px}input,select,textarea{font-family:inherit;font-size:14px}img{max-width:100%}a{color:inherit}.loading{display:flex;align-items:center;justify-content:center;height:100vh;font-size:18px;color:#999}.error-msg{color:#e53e3e;font-size:13px;margin-top:4px}.link{color:#2e5e3e;text-decoration:underline;cursor:pointer}.tag{background:#EBF2ED;color:#2e5e3e;border-radius:12px;padding:2px 8px;font-size:12px}.category-tag{background:#e8f0fe;color:#3050c0;border-radius:12px;padding:2px 8px;font-size:12px;margin-left:6px}.btn-primary{background:#2E5E3E;color:#fff;padding:8px 18px;border-radius:8px;font-weight:600;transition:background .15s}.btn-primary:hover{background:#24482F}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:#fff;color:#444;padding:8px 16px;border-radius:8px;border:1px solid #ddd;font-weight:500;transition:background .15s}.btn-secondary:hover{background:#f5f5f5}.btn-icon{background:none;padding:6px;border-radius:6px;font-size:16px;transition:background .15s}.btn-icon:hover{background:#f0f0f0}.btn-icon.btn-danger:hover{background:#fde8e8}.btn-danger-sm{background:#fde8e8;color:#c53030;padding:5px 12px;border-radius:6px;font-size:13px;border:1px solid #fca5a5}.btn-danger-sm:hover{background:#fca5a5}.page{min-height:100vh;display:flex;flex-direction:column}.content{flex:1;padding:24px 32px;max-width:1400px;width:100%;margin:0 auto}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.page-header h2,.page-header h3{font-size:20px;font-weight:700}.top-bar{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;background:#fff;border-bottom:1px solid #eee;box-shadow:0 1px 4px #0000000f;position:sticky;top:0;z-index:100}.logo{font-size:18px;font-weight:700;color:#2e5e3e}.project-title{font-size:16px;font-weight:600}.header-right{display:flex;align-items:center;gap:10px}.user-name{color:#666;font-size:13px}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#EBF2ED 0%,#F4F6F2 100%)}.auth-card{background:#fff;border-radius:16px;padding:40px;width:400px;box-shadow:0 8px 32px #2e5e3e1a}.auth-card h1{text-align:center;font-size:26px;color:#2e5e3e;margin-bottom:24px}.auth-tabs{display:flex;margin-bottom:24px;border-radius:8px;overflow:hidden;border:1px solid #eee}.auth-tabs button{flex:1;padding:10px;background:#f9f9f9;color:#666;transition:all .15s}.auth-tabs button.active{background:#2E5E3E;color:#fff;font-weight:600}.auth-card form{display:flex;flex-direction:column;gap:12px}.auth-card input{padding:10px 14px;border:1px solid #ddd;border-radius:8px;outline:none;transition:border-color .15s}.auth-card input:focus{border-color:#2e5e3e}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}.project-card{background:#fff;border-radius:12px;box-shadow:0 2px 12px #00000012;overflow:hidden;cursor:pointer;transition:transform .15s,box-shadow .15s;display:flex;flex-direction:column}.project-card:hover{transform:translateY(-3px);box-shadow:0 6px 20px #0000001f}.project-thumb{height:160px;background:#f5f5f5;overflow:hidden;display:flex;align-items:center;justify-content:center}.project-thumb img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.no-photo{font-size:48px;color:#ddd}.project-info{padding:14px 14px 8px;flex:1}.project-info h3{font-size:15px;font-weight:600;margin-bottom:6px}.project-meta{display:flex;align-items:center;gap:8px;font-size:12px;color:#888;margin-bottom:6px}.project-cost{font-size:16px;font-weight:700;color:#2e5e3e}.project-actions{display:flex;justify-content:flex-end;gap:4px;padding:8px 10px;border-top:1px solid #f0f0f0}.empty-state{text-align:center;padding:60px 20px;color:#999}.empty-icon{font-size:56px;margin-bottom:12px}.empty-state p{margin-bottom:16px;font-size:16px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;z-index:200}.modal{background:#fff;border-radius:14px;padding:28px;width:460px;max-height:90vh;overflow-y:auto;box-shadow:0 16px 48px #0003}.modal-wide{width:580px}.modal h3{font-size:18px;font-weight:700;margin-bottom:18px}.modal form{display:flex;flex-direction:column;gap:10px}.modal label{font-size:12px;font-weight:600;color:#555;text-transform:uppercase;letter-spacing:.5px}.modal input,.modal select{padding:9px 12px;border:1px solid #ddd;border-radius:8px;outline:none;width:100%}.modal input:focus,.modal select:focus{border-color:#2e5e3e}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:8px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.lib-tabs{display:flex;gap:0;margin-bottom:24px;border-radius:10px;overflow:hidden;border:1px solid #eee;width:-moz-fit-content;width:fit-content}.lib-tabs button{padding:10px 20px;background:#f9f9f9;color:#555;font-size:14px;transition:all .15s}.lib-tabs button.active{background:#2E5E3E;color:#fff;font-weight:600}.elements-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.element-card{background:#fff;border-radius:10px;box-shadow:0 2px 8px #0000000f;overflow:hidden;display:flex;flex-direction:column}.el-image{height:120px;background:#EDF0EA;display:flex;align-items:center;justify-content:center;overflow:hidden}.el-image img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.el-image span{font-size:40px}.el-info{padding:10px 12px;flex:1}.el-name{font-weight:600;font-size:14px}.el-category{font-size:12px;color:#888;margin-top:2px}.el-price{font-size:15px;font-weight:700;color:#2e5e3e;margin-top:4px}.el-items-count{font-size:12px;color:#aaa}.el-actions{display:flex;justify-content:flex-end;gap:4px;padding:6px 8px;border-top:1px solid #f5f5f5}.composite-items-header{display:flex;align-items:center;justify-content:space-between;margin-top:4px}.composite-item-row{display:flex;gap:8px;align-items:center}.composite-item-row select{flex:1}.composite-total{text-align:right;font-size:15px;color:#2e5e3e;margin-top:8px}.editor-page{display:flex;flex-direction:column;height:100vh;overflow:hidden}.editor-body{display:flex;flex:1;overflow:hidden}.sidebar{width:260px;min-width:220px;background:#fff;border-right:1px solid #eee;display:flex;flex-direction:column;overflow:hidden}.sidebar-title{padding:14px 16px 8px;font-size:13px;font-weight:700;color:#888;text-transform:uppercase;letter-spacing:.5px}.category-tabs{display:flex;flex-wrap:wrap;gap:4px;padding:0 10px 10px}.category-tabs button{padding:4px 10px;border-radius:20px;background:#f5f5f5;color:#555;font-size:12px;border:1px solid transparent;transition:all .15s}.category-tabs button.active{background:#2E5E3E;color:#fff}.elements-list{flex:1;overflow-y:auto;padding:0 8px 8px;display:flex;flex-direction:column;gap:6px}.sidebar-element{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;background:#F4F6F2;cursor:grab;border:1px solid #DDE7DA;transition:background .15s}.sidebar-element:hover{background:#EBF2ED}.sidebar-el-img{width:44px;height:44px;border-radius:6px;overflow:hidden;background:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar-el-img img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.sidebar-el-img span{font-size:22px}.sidebar-el-info{flex:1;min-width:0}.sidebar-el-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-el-price{font-size:12px;color:#2e5e3e;font-weight:600}.empty-sidebar{padding:20px 10px;text-align:center;color:#aaa;font-size:13px}.canvas-area{flex:1;display:flex;flex-direction:column;overflow:hidden;background:#f0f0f0;position:relative}.canvas-toolbar{padding:6px 12px;background:#fff;border-bottom:1px solid #eee;display:flex;gap:8px;align-items:center;min-height:38px}.toolbar-hint{font-size:13px;color:#888}.toolbar-hint-small{font-size:12px;color:#bbb;margin-left:4px}.canvas{flex:1;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;background:#e8e8e8}.venue-photo{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;-o-object-fit:contain;object-fit:contain;pointer-events:none}.upload-photo-label{cursor:pointer}.upload-photo-hint{display:flex;flex-direction:column;align-items:center;gap:12px;color:#aaa;font-size:15px;padding:40px;border:2px dashed #ccc;border-radius:12px;background:#f9f9f9}.upload-photo-hint span{font-size:48px}.change-photo-btn{position:absolute;top:10px;right:10px;background:rgba(255,255,255,.9);border-radius:8px;padding:6px 10px;cursor:pointer;font-size:18px;z-index:5;box-shadow:0 2px 6px #00000026}.canvas-item{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:move;z-index:10}.canvas-item img,.canvas-item-placeholder{width:100px;height:100px;-o-object-fit:contain;object-fit:contain;display:block;border-radius:4px}.canvas-item-placeholder{display:flex;align-items:center;justify-content:center;font-size:48px;background:rgba(255,255,255,.7);border-radius:8px}.canvas-item.selected img,.canvas-item.selected .canvas-item-placeholder{outline:2px solid #2E5E3E;box-shadow:0 0 0 4px #2e5e3e26}.handle{position:absolute;width:22px;height:22px;background:#2E5E3E;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;z-index:20;box-shadow:0 1px 4px #0000004d;-webkit-user-select:none;-moz-user-select:none;user-select:none}.handle-delete{top:-14px;left:-14px;background:#c0392b;cursor:pointer;font-size:12px}.handle-right{top:50%;right:-14px;transform:translateY(-50%);cursor:ew-resize}.handle-bottom{bottom:-14px;left:50%;transform:translate(-50%);cursor:ns-resize}.handle-corner{bottom:-14px;right:-14px;cursor:nwse-resize}.handle-rotate{top:-14px;right:-14px;cursor:grab;font-size:11px}.harmonize-bar{display:flex;align-items:center;gap:12px;padding:10px 16px;background:#fff;border-top:1px solid #eee}.btn-harmonize{background:linear-gradient(135deg,#2E5E3E,#C8864A);color:#fff;padding:9px 22px;border-radius:8px;font-weight:600;font-size:14px;transition:opacity .15s;white-space:nowrap}.btn-harmonize:hover{opacity:.88}.btn-harmonize:disabled{opacity:.6;cursor:not-allowed}.harmonize-hint{font-size:13px;color:#999}.harmonize-error{display:flex;align-items:center;gap:10px;font-size:13px;color:#c0392b}.btn-retry{padding:4px 12px;border:1px solid #c0392b;border-radius:6px;background:transparent;color:#c0392b;cursor:pointer;font-size:13px}.btn-retry:hover{background:#c0392b;color:#fff}.modal-harmonize{width:680px;max-width:95vw}.harmonize-modal-loading{min-height:200px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:16px;color:#666}.harmonized-img{width:100%;border-radius:8px;margin:12px 0;display:block}.modal-extract{width:700px;max-width:96vw;max-height:90vh;display:flex;flex-direction:column;padding:0;overflow:hidden}.extract-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid #DDE7DA}.extract-header h3{margin:0;font-size:18px;font-weight:700}.btn-close-extract{background:none;border:none;font-size:18px;cursor:pointer;color:#999;line-height:1;padding:4px 8px;border-radius:6px}.btn-close-extract:hover{background:#EBF2ED;color:#333}.extract-stepper{display:flex;gap:0;padding:0 24px;background:#F4F6F2;border-bottom:1px solid #DDE7DA}.extract-step{display:flex;align-items:center;gap:6px;padding:12px 16px;font-size:13px;color:#bbb;border-bottom:2px solid transparent;transition:all .2s;white-space:nowrap}.extract-step.active{color:#2e5e3e;border-bottom-color:#2e5e3e;font-weight:600}.extract-step.done{color:#27ae60}.step-icon{font-size:15px}.extract-body{flex:1;overflow-y:auto;padding:24px;display:flex;flex-direction:column;gap:16px}.extract-dropzone{border:2px dashed #DDE7DA;border-radius:12px;background:#F4F6F2;min-height:220px;display:flex;align-items:center;justify-content:center;transition:border-color .2s,background .2s;cursor:pointer}.extract-dropzone:hover{border-color:#2e5e3e;background:#EBF2ED}.dropzone-content{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:32px;color:#999}.dropzone-icon{font-size:48px}.dropzone-content p{margin:0;font-size:14px}.dropzone-hint{font-size:12px!important;color:#bbb}.dropzone-btn{margin-top:8px}.extract-preview-wrap{display:flex;flex-direction:column;align-items:center;gap:16px}.extract-preview-img{max-width:100%;max-height:300px;border-radius:10px;box-shadow:0 4px 16px #0000001f;-o-object-fit:contain;object-fit:contain}.extract-preview-actions{display:flex;gap:10px}.extract-hint{font-size:13px;color:#888;margin:0}.extract-canvas-wrap{position:relative;display:inline-block;width:100%;border-radius:10px;overflow:hidden;cursor:crosshair;box-shadow:0 4px 16px #0000001a}.extract-ai-image{display:block;width:100%;height:auto;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}.extract-selection{position:absolute;border:2px dashed #2980b9;background:rgba(41,128,185,.08);box-sizing:border-box;pointer-events:none}.extract-selection:not(.drawing){pointer-events:auto}.selection-label{position:absolute;top:3px;left:6px;font-size:11px;font-weight:700;color:#2980b9;background:rgba(255,255,255,.85);padding:1px 5px;border-radius:4px}.selection-delete{position:absolute;top:3px;right:3px;background:#e74c3c;color:#fff;border:none;border-radius:50%;width:18px;height:18px;font-size:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;pointer-events:auto}.extract-select-footer{display:flex;align-items:center;justify-content:space-between;padding-top:4px}.extract-count{font-size:13px;color:#666}.extract-select-actions{display:flex;gap:10px}.extract-error{background:#fef0f0;border:1px solid #f5c6c6;color:#c0392b;border-radius:8px;padding:10px 14px;font-size:13px}.extract-items-list{display:flex;flex-direction:column;gap:16px}.extract-item-card{border:1px solid #DDE7DA;border-radius:10px;padding:16px;background:#F4F6F2}.extract-item-top{display:flex;gap:14px;align-items:flex-start}.extract-item-preview{width:90px;height:90px;flex-shrink:0;border-radius:8px;overflow:hidden;background:#fff;border:1px solid #DDE7DA;display:flex;align-items:center;justify-content:center}.extract-item-preview img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.extract-item-fields{flex:1;display:flex;flex-direction:column;gap:8px}.extract-item-row{display:flex;gap:10px}.extract-item-row>div{flex:1;display:flex;flex-direction:column;gap:4px}.extract-item-row label{font-size:12px;font-weight:600;color:#666}.extract-components-header{display:flex;align-items:center;justify-content:space-between}.extract-components-header label{font-size:12px;font-weight:600;color:#666}.btn-sm{padding:3px 10px!important;font-size:12px!important}.extract-comp-row{display:flex;gap:6px;align-items:center}.extract-comp-row select{flex:1}.extract-item-price{font-size:13px;color:#27ae60;font-weight:600}.extract-remove-item{align-self:flex-start;margin-left:auto}.extract-save-footer{display:flex;justify-content:space-between;padding-top:4px}.btn-loading{display:flex;align-items:center;gap:8px}.spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.estimate-content{max-width:900px}.estimate-header{margin-bottom:24px}.estimate-header h2{font-size:22px;font-weight:700;margin-bottom:10px}.estimate-meta{display:flex;gap:20px;font-size:14px;color:#555}.estimate-table{width:100%;border-collapse:collapse;background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 2px 12px #00000012}.estimate-table th{background:#2E5E3E;color:#fff;padding:12px 16px;text-align:left;font-size:13px;font-weight:600}.estimate-table td{padding:10px 16px;border-bottom:1px solid #f0f0f0}.group-row{background:#F4F6F2}.group-row td{font-size:15px}.item-row td{color:#555;font-size:13px}.item-name{padding-left:32px!important;color:#666}.total-row td{background:#f5f5f5;font-size:16px;border-top:2px solid #ddd}@media print{.no-print{display:none!important}.top-bar{display:none}body{background:#fff}.estimate-table{box-shadow:none}}.user-dropdown{position:relative}.user-dropdown-trigger{background:#EBF2ED;border:none;border-radius:20px;padding:6px 14px;cursor:pointer;font-size:14px;font-weight:500;color:#2e5e3e;transition:background .15s}.user-dropdown-trigger:hover{background:#DDE7DA}.user-dropdown-menu{position:absolute;right:0;top:calc(100% + 6px);background:white;border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 8px 24px #0000001f;min-width:200px;z-index:1000;padding:6px 0}.dropdown-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:9px 16px;background:none;border:none;cursor:pointer;font-size:14px;text-align:left;color:#374151;transition:background .1s}.dropdown-item:hover{background:#f9fafb}.dropdown-item-danger{color:#dc2626}.dropdown-divider{height:1px;background:#e5e7eb;margin:4px 0}.dropdown-lang{cursor:default}.dropdown-lang:hover{background:none}.lang-toggle{display:flex;gap:4px}.lang-btn{padding:3px 10px;border:1px solid #d1d5db;border-radius:6px;background:#f3f4f6;cursor:pointer;font-size:12px;font-weight:500;color:#374151;transition:all .15s}.lang-btn.active{background:#2E5E3E;color:#fff;border-color:#2e5e3e}.profile-container{max-width:480px;margin:40px auto;padding:0 24px}.profile-title{font-size:24px;font-weight:700;margin-bottom:32px;color:#1f2937}.profile-form{display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:13px;font-weight:600;color:#374151;text-transform:uppercase;letter-spacing:.05em}.form-error{color:#dc2626;font-size:14px;padding:8px 12px;background:#fef2f2;border-radius:6px}.form-success{color:#16a34a;font-size:14px;padding:8px 12px;background:#f0fdf4;border-radius:6px}.harmonize-hint-tooltip{position:absolute;top:100%;right:0;margin-top:8px;background:#2E5E3E;color:#fff;border-radius:10px;padding:10px 14px;font-size:13px;font-weight:500;line-height:1.5;box-shadow:0 4px 24px #1e322333;z-index:60;max-width:280px;display:flex;align-items:flex-start;gap:8px;animation:fadeUp .3s ease both}.harmonize-hint-tooltip:before{content:"";position:absolute;top:-6px;right:20px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #2E5E3E}.harmonize-hint-tooltip button{background:none;color:#fff9;font-size:14px;flex-shrink:0;padding:0}.harmonize-hint-tooltip button:hover{color:#fff}.toolbar-actions{display:flex;gap:6px;align-items:center;margin-left:auto;position:relative}.btn-toolbar{padding:5px 12px;border-radius:8px;font-size:12px;font-weight:600;display:inline-flex;align-items:center;gap:4px;transition:all .15s}.btn-toolbar-harmonize{background:linear-gradient(135deg,#2E5E3E,#C8864A);color:#fff}.btn-toolbar-harmonize:hover{opacity:.88}.btn-toolbar-harmonize:disabled{opacity:.5;cursor:not-allowed}.btn-toolbar-photo{background:#fff;color:#5a7060;border:1px solid #DDE7DA}.btn-toolbar-photo:hover{background:#EBF2ED}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.app-layout{display:flex;min-height:100vh}.app-sidebar{width:220px;flex-shrink:0;background:#FFFFFF;border-right:1px solid #DDE7DA;display:flex;flex-direction:column;height:100vh;position:sticky;top:0}.app-sidebar-brand{padding:20px 20px 16px;border-bottom:1px solid #EBF0E8;display:flex;align-items:center;gap:9px}.app-sidebar-brand-icon{width:32px;height:32px;border-radius:9px;background:#2E5E3E;display:flex;align-items:center;justify-content:center;font-size:16px}.app-sidebar-brand-text{font-family:Playfair Display,serif;font-size:16px;font-weight:700;color:#1a2e20;letter-spacing:-.02em}.app-sidebar-nav{padding:12px 10px;flex:1}.app-sidebar-nav-item{width:100%;display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:10px;border:none;cursor:pointer;font-family:inherit;margin-bottom:2px;font-size:14px;transition:all .15s;text-align:left;background:transparent;color:#5a7060;font-weight:400}.app-sidebar-nav-item.active{background:#EBF2ED;color:#2e5e3e;font-weight:600}.app-sidebar-nav-item:hover:not(.active){background:#F4F6F2}.app-sidebar-nav-icon{font-size:16px}.app-sidebar-user{padding:12px 14px;border-top:1px solid #EBF0E8;position:relative}.app-sidebar-user-chip{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;cursor:pointer;transition:background .15s}.app-sidebar-user-chip:hover{background:#F4F6F2}.app-sidebar-avatar{width:34px;height:34px;border-radius:50%;background:#EBF2ED;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:#2e5e3e;flex-shrink:0}.app-sidebar-user-name{font-size:13px;font-weight:600;color:#1a2e20;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-sidebar-user-role{font-size:11px;color:#8fa898}.app-sidebar-chevron{font-size:10px;color:#8fa898;flex-shrink:0}.app-sidebar-menu{position:absolute;bottom:calc(100% + 4px);left:10px;right:10px;background:#fff;border:1px solid #DDE7DA;border-radius:12px;box-shadow:0 8px 32px #1e322324;padding:6px 0;z-index:200;animation:fadeUp .15s ease both}.app-sidebar-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:9px 16px;background:none;border:none;cursor:pointer;font-size:13px;font-weight:500;text-align:left;color:#374151;font-family:inherit;transition:background .1s}.app-sidebar-menu-item:hover{background:#F4F6F2}.app-sidebar-menu-lang{cursor:default;justify-content:space-between}.app-sidebar-menu-lang:hover{background:transparent}.app-sidebar-menu-divider{height:1px;background:#EBF0E8;margin:4px 0}.app-sidebar-menu-danger{color:#dc2626}.app-sidebar-lang-toggle{display:flex;gap:4px}.app-sidebar-lang-btn{padding:3px 10px;border:1px solid #DDE7DA;border-radius:6px;background:#F4F6F2;cursor:pointer;font-size:12px;font-weight:500;color:#5a7060;transition:all .15s;font-family:inherit}.app-sidebar-lang-btn:hover{background:#EBF2ED}.app-sidebar-lang-btn.active{background:#2E5E3E;color:#fff;border-color:#2e5e3e}.app-main{flex:1;overflow-y:auto;background:#F4F6F2}.sidebar-search{padding:10px 10px 0}.sidebar-search-input{width:100%;padding:7px 10px;border:1.5px solid #dde7da;border-radius:8px;font-size:13px;outline:none;background:#f9fbf8;box-sizing:border-box}.sidebar-search-input:focus{border-color:#2e5e3e}.ai-float-panel{position:absolute;right:16px;top:16px;z-index:50;background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:14px;padding:12px 14px;box-shadow:0 4px 24px #1e322324;min-width:170px;display:flex;flex-direction:column;gap:8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ai-float-panel-grip{font-size:18px;color:#8fa898;cursor:grab;line-height:1}.ai-float-panel-grip:active{cursor:grabbing}.ai-float-panel-title{font-size:11px;font-weight:600;color:#5a7060}.ai-float-panel-actions{display:flex;gap:6px;align-items:center}.ai-float-panel-hint{font-size:11px;color:#8fa898}.ai-float-panel-error{font-size:11px;color:#c0392b;display:flex;align-items:center;gap:6px}.ai-float-panel-error button{background:none;border:none;cursor:pointer;color:#c0392b;font-size:12px}.editor-main-area{display:flex;flex-direction:column;flex:1;min-height:0}.editor-tabs{display:flex;background:#fff;border-bottom:1px solid #dde7da;padding:0 16px;gap:4px}.editor-tab{padding:10px 18px;font-size:13px;font-weight:500;color:#5a7060;background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;font-family:inherit;transition:color .15s,border-color .15s}.editor-tab.active{color:#2e5e3e;border-bottom-color:#2e5e3e;font-weight:600}.viz-panel{flex:1;overflow-y:auto;padding:20px;background:#f4f6f2}.viz-empty{text-align:center;color:#8fa898;font-size:14px;margin-top:60px}.viz-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}.viz-card{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 8px #1e322312;display:flex;flex-direction:column}.viz-thumb{width:100%;aspect-ratio:4/3;-o-object-fit:cover;object-fit:cover;cursor:pointer;transition:opacity .15s}.viz-thumb:hover{opacity:.88}.viz-card-actions{display:flex;justify-content:flex-end;gap:6px;padding:8px 10px}.viz-btn{background:#f4f6f2;border:1px solid #dde7da;border-radius:6px;padding:4px 8px;font-size:13px;cursor:pointer}.viz-btn-delete{color:#c0392b}.modal-viz{display:flex;flex-direction:column;align-items:center;gap:16px;width:auto;max-width:92vw;background:#fff;border-radius:14px;padding:20px}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 40 33% 97%;--foreground: 150 10% 20%;--card: 40 30% 95%;--card-foreground: 150 10% 20%;--popover: 40 33% 97%;--popover-foreground: 150 10% 20%;--primary: 145 25% 36%;--primary-foreground: 40 33% 97%;--secondary: 350 30% 90%;--secondary-foreground: 350 20% 35%;--muted: 40 20% 92%;--muted-foreground: 150 5% 45%;--accent: 35 60% 60%;--accent-foreground: 35 60% 15%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 40 20% 88%;--input: 40 20% 88%;--ring: 145 25% 36%;--radius: .75rem;--blush: 350 40% 92%;--sage: 145 15% 75%;--cream: 40 40% 95%;--gold: 35 60% 55%}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;font-family:Lato,sans-serif}h1,h2,h3,h4,h5,h6{font-family:Playfair Display,serif}#root{width:100%}.visible{visibility:visible}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.border{border-width:1px}.uppercase{text-transform:uppercase}.italic{font-style:italic}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity, 1);transform:translate3d(var(--tw-enter-translate-x, 0),var(--tw-enter-translate-y, 0),0) scale3d(var(--tw-enter-scale, 1),var(--tw-enter-scale, 1),var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity, 1);transform:translate3d(var(--tw-exit-translate-x, 0),var(--tw-exit-translate-y, 0),0) scale3d(var(--tw-exit-scale, 1),var(--tw-exit-scale, 1),var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))}}.ease-in-out{animation-timing-function:cubic-bezier(.4,0,.2,1)}
