#root{min-height:100vh}.app-shell{display:grid;grid-template-columns:260px 1fr;min-height:100vh}.app-shell aside{background:#10231f;color:#fff;padding:24px}.app-shell nav{display:grid;gap:10px;margin-top:32px}.app-shell a{border-radius:8px;color:inherit;padding:10px 12px;text-decoration:none}.app-shell a.active{background:#1c6b5a}.shell-main header{align-items:center;background:#fff;border-bottom:1px solid #dde7e4;display:flex;gap:12px;justify-content:flex-end;padding:16px 24px}.shell-main main{padding:32px}.auth-page{display:grid;min-height:100vh;place-items:center}.auth-page form{background:#fff;border:1px solid #dde7e4;border-radius:8px;display:grid;gap:16px;padding:28px;width:min(420px,calc(100vw - 32px))}.auth-page label{display:grid;gap:6px}button{background:#1c6b5a;border:0;border-radius:8px;color:#fff;cursor:pointer;font-weight:700;padding:10px 14px}.button-link{background:#1c6b5a;border-radius:8px;color:#fff;display:inline-flex;font-weight:700;padding:10px 14px;text-decoration:none}.secondary-button{background:#e8efec;color:#16342d}input,select{border:1px solid #b8c8c2;border-radius:8px;padding:10px}.auth-status{padding:24px}.page-heading{align-items:flex-start;display:flex;gap:16px;justify-content:space-between;margin-bottom:24px}.page-heading h1{margin:0}.page-heading p{color:#49635d;margin:8px 0 0;max-width:760px}.form-grid{display:grid;gap:16px;grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:18px}.form-grid label,.tenant-filter label{display:grid;gap:6px}.form-error{color:#a12424;font-weight:700}.dropzone{align-items:center;background:#fff;border:1px dashed #8eaaa2;border-radius:8px;cursor:pointer;display:grid;gap:6px;justify-items:center;margin:18px 0;padding:28px;text-align:center}.preview-list{display:grid;gap:18px;margin:20px 0}.mask-preview{background:#fff;border:1px solid #dde7e4;border-radius:8px;padding:16px}.preview-grid{display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.preview-grid figure{margin:0}.preview-grid img,.preview-placeholder{align-items:center;aspect-ratio:4 / 3;background:#edf4f1;border-radius:8px;display:flex;justify-content:center;object-fit:contain;width:100%}.preview-grid figcaption{color:#49635d;margin-top:8px}.feature-list,.profile-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin:16px 0}.feature-list div,.profile-grid div{background:#f6faf8;border:1px solid #dde7e4;border-radius:8px;padding:12px}.feature-list dt,.profile-grid dt{color:#49635d;font-size:.9rem}.feature-list dd,.profile-grid dd{font-weight:700;margin:4px 0 0}.row-actions,.tenant-filter{align-items:end;display:flex;gap:12px}.tenant-filter{margin-bottom:18px}.item-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}.item-card{background:#fff;border:1px solid #dde7e4;border-radius:12px;display:flex;flex-direction:column;justify-content:space-between;gap:14px;padding:20px;text-decoration:none;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008;transition:transform .2s ease-in-out,box-shadow .2s ease-in-out,border-color .2s ease-in-out}.item-card:hover{transform:translateY(-4px);box-shadow:0 10px 15px -3px #00000014,0 4px 6px -2px #0000000a;border-color:#b8c8c2}.item-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.item-card-title{font-size:1.15rem;font-weight:700;color:#10231f;margin:0}.item-card-body{display:grid;gap:6px;font-size:.9rem;color:#49635d}.item-card-meta{display:flex;align-items:center;gap:6px}.status-badge{border-radius:999px;font-weight:800;padding:4px 10px;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;display:inline-flex;align-items:center}.status-badge.ready{background:#dff3ec;color:#145444}.status-badge.pending{background:#fef3c7;color:#92400e}.status-badge.training{background:#dbeafe;color:#1e40af}.status-badge.using_generic,.status-badge.generic{background:#f3f4f6;color:#374151}.item-gallery-section{margin-top:32px;border-top:1px solid #dde7e4;padding-top:24px}.item-gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:20px;margin-top:16px}.gallery-card{background:#fff;border:1px solid #dde7e4;border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:12px;box-shadow:0 2px 4px #00000005}.gallery-card-header{display:flex;justify-content:space-between;align-items:center}.gallery-card-title{font-weight:700;color:#10231f;margin:0;text-transform:capitalize}.gallery-card-date{font-size:.8rem;color:#8eaaa2}.gallery-images{display:grid;grid-template-columns:1fr 1fr;gap:10px}.gallery-img-wrapper{display:flex;flex-direction:column;gap:6px}.gallery-img-wrapper span{font-size:.75rem;font-weight:600;color:#49635d;text-align:center}.gallery-images img{aspect-ratio:4 / 3;object-fit:contain;background:#edf4f1;border-radius:6px;border:1px solid #edf4f1;width:100%}.uploader-section{margin-top:32px;background:#fff;border:1px solid #dde7e4;border-radius:12px;padding:24px;box-shadow:0 4px 6px -1px #0000000d}.uploader-section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.uploader-section-header h3{margin:0;color:#10231f}.actions-panel{display:flex;justify-content:flex-end;gap:12px;margin-top:24px;border-top:1px solid #dde7e4;padding-top:16px}.quality-alerts{background:#fff4e5;border:1px solid #f2c078;border-radius:8px;color:#7a4300;padding:14px 18px 14px 36px}.quality-ok{color:#145444;font-weight:700}.result-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-bottom:20px}.result-grid div{background:#fff;border:1px solid #dde7e4;border-radius:8px;padding:14px}.result-grid dd{font-size:1.3rem;font-weight:800;margin:4px 0 0}.engine-tag,.confidence-badge{border-radius:999px;display:inline-flex;font-weight:800;padding:6px 12px}.engine-tag{background:#e7edf8;color:#203d73}.confidence-badge.high{background:#dff3ec;color:#145444}.confidence-badge.medium{background:#fff4d6;color:#7a5300}.confidence-badge.low{background:#fde7e7;color:#8f2222}.annotated-image,.counting-canvas{background:#f6faf8;border:1px solid #dde7e4;border-radius:8px;margin:16px 0;max-width:100%}.counting-canvas-wrap{max-width:100%;overflow:auto}.quality-alert-inline{background:#fff4e5;border:1px solid #f2c078;border-radius:8px;color:#7a4300;font-weight:700;padding:12px 14px}.counting-form{display:grid;gap:18px;max-width:860px}.item-selector,.counting-photo-field{display:grid;gap:10px}.item-selector label,.counting-photo-field{display:grid;gap:6px}.selectable-list{display:grid;gap:10px;max-height:360px;overflow:auto}.selectable-item{background:#fff;border:1px solid #dde7e4;color:#16342d;display:grid;gap:4px;justify-items:start;text-align:left}.selectable-item.selected{border-color:#1c6b5a;box-shadow:0 0 0 2px #1c6b5a24}.selectable-item span{color:#49635d;font-weight:600}.selected-item-summary{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin:0}.selected-item-summary div,.empty-state{background:#f6faf8;border:1px solid #dde7e4;border-radius:8px;padding:12px}.selected-item-summary dt{color:#49635d}.selected-item-summary dd{font-weight:800;margin:4px 0 0}.counting-session-page{display:grid;gap:24px}.counting-session-workspace{background:#fff;border:1px solid #dde7e4;border-radius:8px;display:grid;gap:20px;grid-template-columns:minmax(0,1.45fr) minmax(320px,.85fr);padding:20px}.capture-panel,.session-control-panel{display:grid;gap:16px}.capture-preview{align-items:center;aspect-ratio:4 / 3;background:#edf4f1;border:1px solid #dde7e4;border-radius:8px;display:grid;overflow:hidden;position:relative}.capture-preview img,.camera-video{height:100%;object-fit:contain;width:100%}.capture-placeholder{color:#49635d;font-weight:700;top:0;right:0;bottom:0;left:0;place-content:center;position:absolute;text-align:center}.capture-toolbar,.session-list-panel header,.session-count-main,.session-capture-row{align-items:center;display:flex;gap:12px;justify-content:space-between}.capture-toolbar{background:#f6faf8;border:1px solid #dde7e4;border-radius:8px;padding:12px}.capture-toolbar div:first-child,.session-count-main div{display:grid;gap:4px}.capture-toolbar span,.session-count-main span,.session-capture-row span,.eyebrow{color:#49635d}.capture-actions{display:flex;flex-wrap:wrap;gap:8px}.capture-upload-button{cursor:pointer}.capture-upload-button input{display:none}.session-control-panel h2,.session-list-panel h2{margin:0}.eyebrow{font-size:.9rem;font-weight:700;margin:0}.session-meta-list,.session-summary-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin:0}.session-meta-list div,.session-summary-grid div{background:#f6faf8;border:1px solid #dde7e4;border-radius:8px;padding:12px}.session-meta-list dt,.session-summary-grid dt{color:#49635d}.session-meta-list dd,.session-summary-grid dd{font-size:1.4rem;font-weight:800;margin:4px 0 0}.item-selector.compact,.selected-item-summary.compact{gap:8px}.selectable-list.compact{max-height:260px}.session-list-panel{display:grid;gap:16px}.session-count-list{display:grid;gap:12px}.session-count-item{background:#fff;border:1px solid #dde7e4;border-radius:8px;display:grid;gap:12px;padding:16px}.session-count-main>strong{font-size:1.4rem}.session-capture-list{border-top:1px solid #dde7e4;display:grid}.session-capture-row{padding:10px 0}.session-capture-row+.session-capture-row{border-top:1px solid #edf4f1}.session-capture-row div{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.session-capture-row .inline-link{color:#1c6b5a;font-weight:700;padding:0;text-decoration:underline}.text-button{background:transparent;color:#8f2222;padding:0}@media (max-width: 820px){.app-shell,.form-grid,.preview-grid,.counting-session-workspace{grid-template-columns:1fr}.page-heading,.row-actions,.tenant-filter,.capture-toolbar,.session-list-panel header,.session-capture-row{align-items:stretch;flex-direction:column}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px}.modal-content{background:#fff;border-radius:12px;padding:24px;width:min(800px,100%);max-height:90vh;display:flex;flex-direction:column;gap:16px;box-shadow:0 10px 25px #00000026}.modal-content h3{margin:0}.modal-canvas-container{display:flex;justify-content:center;align-items:center;background:#edf4f1;border-radius:8px;border:1px solid #dde7e4;overflow:auto;flex:1;min-height:200px}.modal-canvas-container canvas{display:block;max-width:100%;max-height:60vh;cursor:crosshair;background:#000}.modal-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.brush-control{display:flex;align-items:center;gap:8px}.brush-control input[type=range]{width:120px}.item-card-actions{display:flex;justify-content:flex-end;gap:8px;border-top:1px solid #edf4f1;padding-top:12px;margin-top:8px}.item-card-actions button{font-size:.78rem;padding:6px 10px;font-weight:700;border-radius:6px}.item-card-actions .btn-edit{background:#e8efec;color:#16342d}.item-card-actions .btn-edit:hover{background:#d8e4e0}.item-card-actions .btn-delete{background:#fde7e7;color:#8f2222}.item-card-actions .btn-delete:hover{background:#fbcbcb}.item-card-actions .btn-retrain{background:#1c6b5a;color:#fff}.item-card-actions .btn-retrain:hover:not(:disabled){background:#155144}.item-card-actions .btn-retrain:disabled{background:#dde7e4;color:#8eaaa2;cursor:not-allowed}.modal-form{display:grid;gap:16px;margin-top:12px}.modal-form label{display:grid;gap:6px;font-weight:600;color:#10231f}.modal-form input,.modal-form select{font-weight:400}.mask-preview.pending-confirm{background:#fefce8!important;border:1px solid #fef08a!important;box-shadow:0 4px 6px -1px #eab3080d,0 2px 4px -1px #eab30808,0 0 0 2px #eab30826!important}.btn-confirm-pending{background:#2563eb!important;color:#fff!important}.btn-confirm-pending:hover{background:#1d4ed8!important}.btn-confirm-success{background:#16a34a!important;color:#fff!important;cursor:default}:root{color:#17211f;background:#f4f7f6;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;line-height:1.5;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-height:100vh;min-width:320px}button,input,select{font:inherit}a{color:inherit}
