:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}*,*:before,*:after{box-sizing:border-box}.landing{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#1a1a1a}.landing-hero{text-align:center;max-width:420px}.landing-title{font-size:2.5rem;font-weight:800;margin:0 0 .5rem;letter-spacing:-.03em}.landing-tagline{font-size:1.1rem;color:#555;margin:0 0 2rem;line-height:1.5}.landing-actions{display:flex;flex-direction:column;gap:.75rem}.landing-btn{display:inline-block;padding:.75rem 1.25rem;border-radius:8px;font-size:1rem;font-weight:600;text-decoration:none;text-align:center;border:1px solid transparent;cursor:pointer;transition:background .2s,border-color .2s}.landing-btn:disabled{opacity:.7;cursor:not-allowed}.landing-btn-primary{background:#1565c0;color:#fff;border-color:#1565c0}.landing-btn-primary:hover:not(:disabled){background:#0d47a1;border-color:#0d47a1}.landing-btn-secondary{background:#fff;color:#333;border-color:#e0e0e0}.landing-btn-secondary:hover:not(:disabled){background:#f5f5f5;border-color:#ccc}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#1a1a1a}.auth-card{width:100%;max-width:360px;padding:2rem;background:#fff;border:1px solid #e0e0e0;border-radius:12px;box-shadow:0 4px 24px #0000000f}.auth-title{font-size:1.5rem;font-weight:700;margin:0 0 1.5rem;text-align:center}.auth-form{display:flex;flex-direction:column;gap:1rem}.auth-error{padding:.5rem .75rem;background:#ffebee;color:#c62828;border-radius:6px;font-size:.9rem;margin:0}.auth-label{display:flex;flex-direction:column;gap:.35rem;font-size:.9rem;font-weight:500;color:#333}.auth-input{padding:.6rem .75rem;border:1px solid #ccc;border-radius:6px;font-size:1rem}.auth-input:focus{outline:none;border-color:#1565c0;box-shadow:0 0 0 2px #1565c033}.auth-submit{margin-top:.5rem;padding:.75rem;background:#1565c0;color:#fff;border:none;border-radius:6px;font-size:1rem;font-weight:600;cursor:pointer}.auth-submit:hover:not(:disabled){background:#0d47a1}.auth-submit:disabled{opacity:.7;cursor:not-allowed}.auth-footer{margin:1.5rem 0 0;font-size:.9rem;color:#666;text-align:center}.auth-footer a{color:#1565c0;font-weight:500}.public-plan-wrap{padding-top:1rem}.share-section .share-controls{display:flex;flex-direction:column;gap:1rem}.share-link-wrap{max-width:480px}.share-link-row{display:flex;gap:.5rem;margin-top:.35rem}.share-link-input{flex:1;min-width:0;font-size:.85rem}.import-banner{padding:.75rem 1rem;background:#e3f2fd;border-bottom:1px solid #90caf9;display:flex;flex-wrap:wrap;align-items:center;gap:1rem;font-size:.9rem}.import-banner-text{margin:0;flex:1;min-width:200px}.import-banner-actions{display:flex;gap:.5rem}#root{min-height:100vh;width:100%}.layout{min-height:100vh;width:100%;display:flex;flex-direction:column;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#1a1a1a}.app-bar{position:sticky;top:0;z-index:100;display:flex;align-items:center;gap:.75rem;height:56px;padding:0 1rem;background:#fff;border-bottom:1px solid #e0e0e0}.app-bar-menu{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:none;background:transparent;color:#333;cursor:pointer;border-radius:4px}.app-bar-menu:hover{background:#f0f0f0}.app-bar-brand{font-size:1.25rem;font-weight:700;color:#1a1a1a;text-decoration:none;letter-spacing:-.02em}.app-bar-brand:hover{color:#333}.app-bar-actions{margin-left:auto;display:flex;align-items:center;gap:.75rem}.app-bar-link{font-size:.9rem;color:#555;text-decoration:none}.app-bar-link:hover{color:#1565c0}.app-bar-btn{background:none;border:none;cursor:pointer;font:inherit;padding:0}.sidebar-backdrop{position:fixed;inset:0;background:#0000004d;z-index:198;opacity:0;pointer-events:none;transition:opacity .2s}.sidebar-backdrop-open{opacity:1;pointer-events:auto}.sidebar{position:fixed;top:0;left:0;bottom:0;width:260px;background:#fff;border-right:1px solid #e0e0e0;z-index:200;transform:translate(-100%);transition:transform .2s;padding-top:1rem}.sidebar-open{transform:translate(0)}.sidebar-nav{display:flex;flex-direction:column;gap:.25rem;padding:0 .5rem}.sidebar-link{display:block;padding:.6rem .75rem;border-radius:6px;color:#333;text-decoration:none;font-weight:500}.sidebar-link:hover{background:#f0f0f0}.sidebar-link-active{background:#e8f4fc;color:#1565c0}.layout-main{flex:1;overflow:auto;min-width:0;width:100%}.page{width:100%;max-width:960px;margin:0 auto;padding:2rem}.page-title{font-size:1.5rem;font-weight:700;margin:0 0 .5rem;color:#1a1a1a}.page-subtitle{font-size:.95rem;color:#666;margin:0 0 1.5rem}.page-empty-hint{font-size:.95rem;color:#666;margin:0 0 1rem}.card-button{cursor:pointer;border:1px solid #e0e0e0;font:inherit;width:100%}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;width:100%}.card{display:block;padding:1.25rem;background:#fff;border:1px solid #e0e0e0;border-radius:8px;text-decoration:none;color:inherit;text-align:left;transition:box-shadow .2s,border-color .2s}.card:hover{border-color:#ccc;box-shadow:0 4px 12px #00000014}.card-title{font-size:1rem;font-weight:600;margin:0 0 .35rem;color:#1a1a1a}.card-subtitle{font-size:.85rem;color:#666;margin:0}.card-new{border-style:dashed;color:#555;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100px}.card-new .card-title{color:#333;margin:0}.card-new-icon{font-size:2rem;margin-bottom:.5rem;color:#888}.app{max-width:960px;margin:0 auto;padding:2rem;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#1a1a1a}.header{margin-bottom:2rem;text-align:center}.header h1{font-size:1.75rem;font-weight:700;margin:0 0 .5rem;letter-spacing:-.02em}.editor-plan-name-wrap{margin:0 0 .5rem}.editor-plan-name{font-size:1.75rem;font-weight:700;letter-spacing:-.02em;min-height:1.5em}.subtitle{margin:0;font-size:.9rem;color:#555}.subtitle code{background:#f0f0f0;padding:.15em .4em;border-radius:4px;font-size:.85em}.crud-section,.child-section{margin-bottom:2.5rem}.danger-zone{margin-top:3rem;padding-top:2rem;border-top:1px solid #e8e8e8}.danger-zone-title{font-size:1.1rem;font-weight:600;color:#cf222e;margin:0 0 1rem}.danger-zone-content{border:1px solid #f97583;border-radius:6px;background:#fff}.danger-zone-block{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1rem 1.25rem}.danger-zone-block-header{flex:1;min-width:200px}.danger-zone-block-label{font-weight:600;font-size:.95rem;color:#1a1a1a;display:block;margin-bottom:.25rem}.danger-zone-block-desc{font-size:.85rem;color:#666;margin:0}.danger-zone-confirm{flex:0 0 auto;max-width:360px;padding:1rem;background:#fff8f8;border:1px solid #ffcdd2;border-radius:6px}.danger-zone-confirm-text{margin:0 0 1rem;font-size:.9rem;color:#333}.danger-zone-confirm-actions{display:flex;gap:.75rem}.btn-danger-zone{flex:0 0 auto;font-size:.9rem;padding:.5rem 1rem}.crud-section h2,.child-section h2{font-size:1.1rem;font-weight:600;margin:0 0 .75rem;color:#333}.child-section-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin:0 0 .75rem}.child-section-head span{font-size:1.1rem;font-weight:600;color:#333}.btn-icon{padding:.4rem;margin:0;background:#f0f0f0;color:#555;border:1px solid #ddd;display:inline-flex;align-items:center;justify-content:center}.btn-icon:hover{background:#e0e0e0;color:#333}.table-wrap{overflow-x:auto;border:1px solid #e0e0e0;border-radius:8px;background:#fff}.main-table,.child-table{width:100%;border-collapse:collapse;font-size:.9rem}.main-table th,.main-table td,.child-table th,.child-table td{padding:.6rem .75rem;text-align:left;border-bottom:1px solid #eee}.main-table th,.child-table th{background:#f6f6f6;font-weight:600;color:#444}.main-table tbody tr:hover:not(.new-row),.child-table tbody tr:hover{background:#fafafa}.main-table tbody tr.selected{background:#e8f4fc}.dimension-cell-editable{min-height:1.5em;padding:.25rem .35rem;outline:none;border-radius:4px;white-space:pre-wrap;word-break:break-word}.dimension-cell-editable:focus{background:#f5f9ff;box-shadow:0 0 0 1px #4a9eff66}.dimension-cell-editable:empty:before{content:attr(data-placeholder);color:#999}.dimension-cell-editable.values-cell{min-width:12rem}.main-table tbody tr.new-row{background:#f9f9f9}.main-table tbody tr.new-row td{border-bottom:none}.main-table input,.child-table input{width:100%;padding:.4rem .5rem;border:1px solid #ccc;border-radius:4px;font-size:inherit}.main-table input:focus,.child-table input:focus{outline:none;border-color:#4a9eff;box-shadow:0 0 0 2px #4a9eff33}.values-input{min-width:200px}.main-table .actions,.child-table .actions{white-space:nowrap;width:1%}.btn{padding:.35rem .6rem;margin-right:.35rem;border:none;border-radius:4px;font-size:.8rem;font-weight:500;cursor:pointer}.btn:last-child{margin-right:0}.btn-add{background:#2e7d32;color:#fff}.btn-add:hover:not(:disabled){background:#1b5e20}.btn-add:disabled{opacity:.5;cursor:not-allowed}.btn-edit{background:#1565c0;color:#fff}.btn-edit:hover{background:#0d47a1}.btn-delete{background:#c62828;color:#fff}.btn-delete:hover{background:#b71c1c}.child-table thead th:first-child{width:2.5rem;text-align:center}.child-table tbody td:first-child{color:#666;font-variant-numeric:tabular-nums}.child-table .status-cell{text-transform:lowercase}.status-select{padding:.35rem .5rem;border:1px solid #ccc;border-radius:4px;font-size:inherit;min-width:6rem;background:#fff}.status-select:focus{outline:none;border-color:#4a9eff}.child-table .notes-cell{min-width:10rem;max-width:18rem}.notes-editable{min-height:1.5em;padding:.25rem .35rem;outline:none;border-radius:4px;white-space:pre-wrap;word-break:break-word}.notes-editable:focus{background:#f5f9ff;box-shadow:0 0 0 1px #4a9eff66}.notes-editable:empty:before{content:attr(data-placeholder);color:#999}.combo-freeform-cell{min-width:8rem}.combo-freeform-editable{min-height:1.5em;padding:.25rem .35rem;outline:none;border-radius:4px;white-space:pre-wrap;word-break:break-word}.combo-freeform-editable:focus{background:#f5f9ff;box-shadow:0 0 0 1px #4a9eff66}.combo-freeform-editable:empty:before{content:attr(data-placeholder);color:#999}.combo-image-cell{vertical-align:middle;min-width:120px;max-width:180px}.image-cell-upload{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:72px;padding:.5rem;border:2px dashed #ccc;border-radius:6px;background:#fafafa;cursor:pointer;transition:border-color .2s,background .2s}.image-cell-upload:hover:not(.image-cell-upload-disabled){border-color:#4a9eff;background:#f5f9ff}.image-cell-upload-dragover{border-color:#4a9eff;background:#e8f4fc}.image-cell-upload-disabled{cursor:default;opacity:.7}.image-cell-upload-icon{font-size:1.5rem;margin-bottom:.25rem}.image-cell-upload-text{font-size:.75rem;color:#666}.image-cell-input-hidden{position:absolute;width:0;height:0;opacity:0;pointer-events:none}.image-cell-preview-wrap{position:relative;display:inline-block;max-width:100%}.image-cell-preview{display:block;max-width:140px;max-height:100px;width:auto;height:auto;object-fit:contain;border-radius:4px;background:#f0f0f0}.image-cell-actions{display:flex;gap:.25rem;margin-top:.35rem;flex-wrap:wrap}.image-cell-btn{padding:.2rem .4rem;font-size:.7rem;border:none;border-radius:4px;cursor:pointer;background:#e0e0e0;color:#333}.image-cell-btn:hover{background:#d0d0d0}.image-cell-btn-change{background:#e3f2fd;color:#1565c0}.image-cell-btn-change:hover{background:#bbdefb}.image-cell-btn-remove{background:#ffebee;color:#c62828}.image-cell-btn-remove:hover{background:#ffcdd2}.child-table tr.status-na .combo-dim-cell,.child-table tr.status-na .combo-freeform-cell,.child-table tr.status-na .combo-freeform-editable,.child-table tr.status-na .combo-image-cell .image-cell-upload,.child-table tr.status-na .combo-image-cell .image-cell-preview-wrap,.child-table tr.status-na .notes-cell,.child-table tr.status-na .notes-cell .notes-editable{text-decoration:line-through;color:#888}.modal-backdrop{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal{background:#fff;border-radius:8px;padding:1.5rem;min-width:320px;max-width:90vw;box-shadow:0 8px 32px #0003}.modal h3{margin:0 0 1rem;font-size:1.1rem;font-weight:600}.modal-field{margin-bottom:1rem}.modal-field label{display:block;font-size:.85rem;font-weight:500;color:#444;margin-bottom:.35rem}.modal-field select{width:100%;padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:inherit}.modal-field textarea{width:100%;padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:inherit;font-family:inherit;resize:vertical}.modal-field select:focus,.modal-field textarea:focus{outline:none;border-color:#4a9eff}.modal-actions{display:flex;gap:.5rem;justify-content:flex-end;margin-top:1.25rem;padding-top:1rem;border-top:1px solid #eee}.modal-actions .btn{margin-right:0}.btn:not(.btn-add):not(.btn-edit):not(.btn-delete){background:#e0e0e0;color:#333}.btn:not(.btn-add):not(.btn-edit):not(.btn-delete):hover{background:#d0d0d0}.modal-hint{font-size:.85rem;color:#666;margin:-.5rem 0 1rem}.modal-status-config .status-option-list{list-style:none;padding:0;margin:0 0 1rem;max-height:240px;overflow-y:auto}.status-option-item{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.status-option-input{flex:1;padding:.45rem .5rem;border:1px solid #ccc;border-radius:4px;font-size:inherit}.status-option-add{display:flex;gap:.5rem;margin-bottom:1rem}.status-option-add .status-option-input{flex:1}.btn-sm{padding:.25rem .5rem;font-size:.75rem}
