:root{color-scheme:light;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#f5f5f5;color:#333}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:#f5f5f5}button,input,select,textarea{font:inherit}.app-shell{max-width:1280px;margin:0 auto;padding:24px}.topbar{display:flex;gap:16px;flex-wrap:wrap;align-items:center;justify-content:space-between;padding-bottom:20px}.title-block{min-width:260px}.title-block h1{margin:0;font-size:clamp(2rem,3vw,2.8rem)}.title-block p{margin:8px 0 0;color:#666}.role-select{display:flex;gap:14px;flex-wrap:wrap}.role-select button,.control-button,.small-button{border:none;border-radius:8px;padding:12px 18px;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease;background:#4a90e2;color:#fff;box-shadow:0 2px 8px #4a90e24d}.role-select button:hover,.control-button:hover,.small-button:hover{transform:translateY(-1px)}.role-select button:disabled,.control-button:disabled,.small-button:disabled{opacity:.6;cursor:not-allowed}.grid{display:grid;gap:18px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.card{background:#f9f9f9;border:1px solid #e0e0e0;border-radius:22px;padding:22px;box-shadow:0 4px 12px #0000001a}.card h2,.card h3{margin-top:0}.status-pill{display:inline-flex;padding:8px 12px;border-radius:999px;font-size:.95rem;background:#fff3cd;color:#856404}.form-group{display:grid;gap:10px;margin-top:14px}.form-group label{font-size:.95rem;color:#333}.form-group input,.form-group textarea,.form-group select{width:100%;background:#f9f9f9;border:1px solid #cccccc;border-radius:14px;color:#333;padding:8px 12px}.form-group textarea{min-height:96px;resize:vertical}.tab-list{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}.tab-button{border:1px solid #cccccc;background:#f9f9f9;color:#333;padding:10px 16px;border-radius:999px;cursor:pointer;transition:background .12s ease,color .12s ease}.tab-button.active,.tab-button:hover{background:#4a90e2;color:#fff}.tab-content{margin-top:10px}.hint-box,.scan-hint{background:#f0f8ff;border-left:4px solid #4a90e2;padding:14px 16px;border-radius:12px;color:#333}.message-box{margin-top:0;padding:6px 14px;border-radius:14px;background:#e8f4fd;color:#333}.evidence-scroll{max-height:420px;overflow-y:auto;overflow-x:hidden;padding-right:4px;margin-top:8px}.evidence-scroll::-webkit-scrollbar{width:4px}.evidence-scroll::-webkit-scrollbar-track{background:transparent}.evidence-scroll::-webkit-scrollbar-thumb{background:#ccc;border-radius:999px}.evidence-item{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid #e0e0e0}.evidence-item:last-child{border-bottom:none}.evidence-code{font-weight:700;color:#333}.video-frame{width:100%;min-height:240px;background:#fff;border-radius:18px;overflow:hidden;position:relative;border:1px solid #e0e0e0}.video-frame video{width:100%;height:100%;object-fit:cover}.video-frame .video-placeholder{width:100%;min-height:240px;display:grid;place-items:center;color:#666;text-align:center;padding:24px}.evidence-item--clickable{cursor:pointer;border-radius:14px;padding:12px 14px;margin:0 -14px;transition:background .15s ease,transform .12s ease}.evidence-item--clickable:hover{background:#4a90e21a;transform:translate(4px)}.evidence-person{display:inline-block;margin-left:8px;padding:1px 8px;border-radius:999px;font-size:.72rem;font-weight:500;background:#4a90e21f;color:#4a90e2;vertical-align:middle}.evidence-tap-hint{font-size:.78rem;color:#07f;margin-top:2px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;animation:fadeIn .18s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-panel{position:relative;background:#f9f9f9;border:1px solid #e0e0e0;border-radius:24px;padding:28px;max-width:580px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 30px 80px #0000001a;animation:slideUp .2s ease}@keyframes slideUp{0%{transform:translateY(18px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-close{position:absolute;top:16px;right:16px;background:#f9f9f9;border:1px solid #cccccc;border-radius:50%;width:36px;height:36px;cursor:pointer;color:#333;font-size:1rem;display:flex;align-items:center;justify-content:center;transition:background .12s ease}.modal-close:hover{background:#4a90e273;color:#fff}.modal-code{font-family:monospace;font-size:.8rem;color:#4a90e299;letter-spacing:.06em;margin-bottom:6px}.modal-title{margin:0 0 18px;font-size:1.4rem;color:#333}.modal-image-wrap{width:100%;border-radius:16px;overflow:hidden;margin-bottom:18px;background:#f9f9f9;border:1px solid #e0e0e0}.modal-image{width:100%;display:block;object-fit:cover;max-height:320px}.modal-description{color:#333;line-height:1.65;margin:0 0 16px}.modal-detail{background:#4a90e212;border-left:3px solid rgba(74,144,226,.75);border-radius:10px;padding:14px 16px}.modal-detail-label{display:block;font-size:.78rem;font-weight:700;letter-spacing:.06em;color:#4a90e2;text-transform:uppercase;margin-bottom:6px}.modal-detail p{margin:0;color:#333;line-height:1.6}.manual-panel{max-width:520px;display:flex;flex-direction:column;gap:0}.manual-pagination-dots{display:flex;justify-content:center;gap:8px;margin:4px 0 20px}.manual-dot{width:8px;height:8px;border-radius:50%;border:none;background:#ccc;cursor:pointer;padding:0;transition:background .15s ease,transform .12s ease}.manual-dot--active{background:#4a90e2;transform:scale(1.3)}.manual-content{flex:1;min-height:200px}.manual-title{margin:0 0 14px;font-size:1.25rem;color:#333}.manual-body p{color:#333;line-height:1.75;margin:0 0 12px}.manual-body p:last-child{margin-bottom:0}.manual-nav{display:flex;align-items:center;justify-content:space-between;margin-top:24px;padding-top:16px;border-top:1px solid #e0e0e0}.manual-nav-btn{background:#f9f9f9;border:1px solid #cccccc;border-radius:10px;color:#333;padding:8px 16px;cursor:pointer;font-size:.9rem;transition:background .12s ease}.manual-nav-btn:hover:not(:disabled){background:#4a90e273;color:#fff}.manual-nav-btn:disabled{opacity:.3;cursor:not-allowed}.manual-page-count{font-size:.85rem;color:#4a90e2}.hint-lock{opacity:.5;border-left-color:#ffffff26}.hint-lock--open{opacity:1;border-left-color:#4a90e2bf}.hint-lock-badge{font-size:.72rem;font-weight:400;color:#666;margin-left:6px;letter-spacing:0;text-transform:none}.hint-lock-text{color:#666;font-style:italic}.chip-list{display:flex;flex-wrap:wrap;gap:10px}.chip{border:1px solid #e0e0e0;background:#f5f5f5;color:#666;padding:6px 14px;border-radius:8px;cursor:pointer;font-size:.88rem;font-weight:600;letter-spacing:.02em;transition:background .12s ease,transform .1s ease,border-color .12s ease}.chip:hover{background:#e0e0e0;border-color:#ccc;color:#333;transform:translateY(-1px)}.chip--victim{border-color:#d9534f8c;background:#d9534f1f;color:#d9534f}.chip--victim:hover{background:#c8323cb3;border-color:#c8323cbf;color:#fff}.person-fields{display:flex;flex-direction:column;gap:10px;margin-bottom:4px}.person-field{display:flex;gap:10px;align-items:baseline}.person-field-label{font-size:.78rem;font-weight:700;color:#4a90e2;min-width:60px;text-transform:uppercase;letter-spacing:.05em}.person-field-value{color:#333;line-height:1.5}.confirm-panel{max-width:360px;text-align:center;padding:32px 28px}.confirm-message{margin:0 0 24px;color:#333;line-height:1.6;font-size:1rem}.confirm-actions{display:flex;gap:12px;justify-content:center}.confirm-ok{background:linear-gradient(135deg,#a82020,#c0392b)}.confirm-cancel{background:#f9f9f9;border:1px solid #cccccc;color:#333}.camera-modal{background:#f9f9f9;border:1px solid #e0e0e0;border-radius:24px;overflow:hidden;width:min(480px,96vw);box-shadow:0 30px 80px #0000001a;animation:slideUp .2s ease}.camera-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid #e0e0e0}.camera-modal-title{font-size:.9rem;color:#666}.camera-viewport{position:relative;width:100%;aspect-ratio:4 / 3;background:#000;overflow:hidden}.camera-viewport video{width:100%;height:100%;object-fit:cover;display:block}.scan-overlay{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.scan-line{position:absolute;left:10%;right:10%;height:2px;background:linear-gradient(90deg,transparent,rgba(220,60,50,.85),transparent);animation:scanMove 2s ease-in-out infinite;border-radius:1px}@keyframes scanMove{0%{top:15%;opacity:0}10%{opacity:1}90%{opacity:1}to{top:85%;opacity:0}}.scan-guide{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:52%;aspect-ratio:1;pointer-events:none;border:2px solid rgba(220,60,50,.5);border-radius:12px;box-shadow:0 0 0 9999px #00000059}.tab-list{display:flex;gap:8px;border-bottom:1px solid #e0e0e0;overflow-x:auto;padding-bottom:0}.tab-button{padding:10px 16px;background:#4a90e2;border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:600;font-size:.95rem;transition:transform .12s ease,box-shadow .12s ease;white-space:nowrap;box-shadow:0 2px 8px #4a90e24d}.tab-button:hover{transform:translateY(-1px);box-shadow:0 4px 12px #4a90e266}.tab-button.active{background:#357abd;box-shadow:0 4px 12px #4a90e280}.evidence-tabs .tab-button{padding:6px 12px;font-size:.85rem;font-weight:500;background:#f5f5f5;color:#666;border:1px solid #e0e0e0}.evidence-tabs .tab-button:hover{background:#e0e0e0;color:#333}.evidence-tabs .tab-button.active{background:#e0e0e0;color:#333;border-color:#ccc}@keyframes tabSparkle{0%{box-shadow:none}15%{box-shadow:0 0 0 3px #fac400d9,0 0 16px 5px #fac4008c}30%{box-shadow:none}48%{box-shadow:0 0 0 3px #fac400a6,0 0 12px 4px #fac40066}63%{box-shadow:none}78%{box-shadow:0 0 0 2px #fac40066,0 0 8px 2px #fac40040}to{box-shadow:none}}.evidence-tabs .tab-button--sparkle{animation:tabSparkle 5s ease-out forwards}.evidence-item--locked{cursor:not-allowed}.toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;background:#1a1a1a;color:#fff;padding:12px 20px;border-radius:999px;box-shadow:0 8px 28px #00000040;z-index:2000;white-space:nowrap;animation:toastIn .25s ease,toastOut .4s ease 3.6s forwards}.toast-label{font-size:.78rem;font-weight:700;color:#fac400e6;letter-spacing:.04em}.toast-title{font-size:.9rem;font-weight:500}@keyframes toastIn{0%{opacity:0;transform:translate(-50%) translateY(12px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes toastOut{0%{opacity:1;transform:translate(-50%) translateY(0)}to{opacity:0;transform:translate(-50%) translateY(8px)}}@media (max-width: 960px){.grid-2,.grid-3{grid-template-columns:1fr}}
