.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{top:0;right:0;bottom:0;left:0}.-right-1{right:-.25rem}.-top-1{top:-.25rem}.right-0{right:0}.z-50{z-index:50}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.h-2{height:.5rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.max-h-72{max-height:18rem}.max-h-\[32rem\]{max-height:32rem}.max-h-\[85vh\]{max-height:85vh}.w-2{width:.5rem}.w-6{width:1.5rem}.w-96{width:24rem}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-\[1\.25rem\]{min-width:1.25rem}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(243 244 246 / var(--tw-divide-opacity, 1))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity, 1))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-l-4{border-left-width:4px}.border-amber-100{--tw-border-opacity: 1;border-color:rgb(254 243 199 / var(--tw-border-opacity, 1))}.border-blue-100{--tw-border-opacity: 1;border-color:rgb(219 234 254 / var(--tw-border-opacity, 1))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1))}.border-purple-100{--tw-border-opacity: 1;border-color:rgb(243 232 255 / var(--tw-border-opacity, 1))}.border-red-200{--tw-border-opacity: 1;border-color:rgb(254 202 202 / var(--tw-border-opacity, 1))}.border-l-amber-500{--tw-border-opacity: 1;border-left-color:rgb(245 158 11 / var(--tw-border-opacity, 1))}.border-l-blue-400{--tw-border-opacity: 1;border-left-color:rgb(96 165 250 / var(--tw-border-opacity, 1))}.border-l-green-500{--tw-border-opacity: 1;border-left-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-l-red-500{--tw-border-opacity: 1;border-left-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.bg-amber-100{--tw-bg-opacity: 1;background-color:rgb(254 243 199 / var(--tw-bg-opacity, 1))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-purple-50{--tw-bg-opacity: 1;background-color:rgb(250 245 255 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-opacity-40{--tw-bg-opacity: .4 }.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pt-2{padding-top:.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-purple-700{--tw-text-opacity: 1;color:rgb(126 34 206 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.opacity-60{opacity:.6}.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)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-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)}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.hover\:text-blue-800:hover{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1)) }@media (min-width: 768px){.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:#f5f7fa;color:#1a1f2b}a{color:#4f8cff;text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;cursor:pointer}.btn{background:#4f8cff;color:#fff;border:none;border-radius:6px;padding:8px 14px;font-weight:500}.btn:hover{background:#3d77e6}.btn.secondary{background:#e6ebf2;color:#1a1f2b}.btn.secondary:hover{background:#d6dde7}.btn.danger{background:#e35353}.btn.danger:hover{background:#c93f3f}.btn:disabled{opacity:.5;cursor:not-allowed}input,textarea,select{font:inherit;padding:8px 10px;border:1px solid #cdd5e0;border-radius:6px;background:#fff;width:100%}input:focus,textarea:focus,select:focus{outline:2px solid #4f8cff;outline-offset:-1px;border-color:#4f8cff}.field{margin-bottom:12px}.field label{display:block;font-size:15px;margin-bottom:4px;color:#4a5568}.topbar{display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid #e1e7ee;padding:10px 18px}.topbar .brand{font-weight:600;font-size:16px}.topbar .nav{display:flex;gap:12px;align-items:center}.topbar .user{font-size:15px;color:#4a5568}.role-badge{display:inline-block;font-size:12px;font-weight:600;text-transform:uppercase;border-radius:3px;padding:1px 6px;margin-inline-start:6px;vertical-align:middle}.role-admin{background:#fef3c7;color:#92400e}.role-internal{background:#dbeafe;color:#1e40af}.role-external{background:#e5e7eb;color:#374151}.version-timeline{display:flex;flex-direction:column;gap:10px}.version-card{display:flex;background:#fff;border:1px solid #e1e7ee;border-radius:8px;padding:12px 16px;cursor:pointer;gap:16px;transition:box-shadow 80ms ease}.version-card:hover{box-shadow:0 4px 12px #0000000d}.version-num{background:#1a1f2b;color:#fff;border-radius:6px;padding:4px 10px;font-weight:600;font-size:15px;min-width:44px;text-align:center;align-self:flex-start}.version-body{flex:1}.version-head{display:flex;align-items:center;gap:10px;margin-bottom:4px}.version-meta{font-size:14px;color:#6b7280}.stage-badge{display:inline-block;font-size:13px;font-weight:600;border-radius:4px;padding:2px 8px}.stage-internal{background:#fde2e2;color:#991b1b}.stage-client{background:#ddd6fe;color:#5b21b6}.stage-production{background:#d1fae5;color:#065f46}.stage-other{background:#e5e7eb;color:#374151}.topbar-link{color:#4a5568;font-size:15px;padding:4px 8px;border-radius:4px;text-decoration:none}.topbar-link:hover{background:#f0f4f9;color:#1a1f2b;text-decoration:none}.admin-users-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #e1e7ee;border-radius:8px;overflow:hidden}.admin-users-table th,.admin-users-table td{padding:10px 14px;text-align:start;border-bottom:1px solid #eef1f5;font-size:16px}.admin-users-table th{background:#f8fafc;font-weight:600;font-size:14px;color:#4a5568;text-transform:uppercase;letter-spacing:.4px}.admin-users-table tr:last-child td{border-bottom:none}.admin-users-table tr:hover{background:#fafbfc}.tree{display:flex;flex-direction:column;gap:4px}.tree-row{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:8px;cursor:pointer;transition:background 60ms ease}.tree-project{background:#fff;border:1px solid #e1e7ee;font-weight:600}.tree-project:hover{background:#f8fafc}.tree-version{background:#fafbfc;margin-inline-start:28px;margin-bottom:2px;border:1px solid transparent;font-weight:400}.tree-version:hover{background:#eef4ff;border-color:#cdd5e0}.tree-twisty{display:inline-block;width:16px;text-align:center;color:#6b7280;font-size:14px}.tree-icon{font-size:16px}.tree-title{flex:1;font-size:16px}.tree-children{padding:6px 0}.tree-actions{display:flex;gap:6px;margin-inline-start:auto}.btn.tiny{padding:3px 10px;font-size:14px;border-radius:4px}.version-num.small{background:#1a1f2b;color:#fff;border-radius:4px;padding:2px 8px;font-size:14px;font-weight:600}.version-meta-inline{flex:1}.tree-version-delete{position:static!important;margin-inline-start:6px;opacity:0}.tree-version:hover .tree-version-delete{opacity:1}.vis-badge{display:inline-block;font-size:12px;font-weight:600;border-radius:3px;padding:1px 5px;margin-inline-start:4px;vertical-align:middle}.vis-internal{background:#fee2e2;color:#991b1b}.vis-external{background:#d1fae5;color:#065f46}.share-row{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:15px;border-bottom:1px solid #f0f4f9}.share-row:last-child{border-bottom:none}.chip-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.chip{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border-radius:999px;background:#eef2f7;color:#1f2937;font-size:14px;line-height:1.4}.chip-locked{background:#dbeafe;color:#1e3a8a}.chip-x{border:none;background:transparent;color:inherit;cursor:pointer;font-size:15px;line-height:1;padding:0 2px}.chip-input{display:flex;flex-wrap:wrap;gap:6px;align-items:center;border:1px solid #cdd5e0;border-radius:6px;padding:6px 8px;background:#fff}.chip-input input{flex:1;min-width:140px;border:none;outline:none;font:inherit;padding:2px 0;background:transparent}.picker-popover{margin-top:6px;max-height:220px;overflow-y:auto;border:1px solid #cdd5e0;border-radius:6px;background:#fff;box-shadow:0 4px 12px #00000014}.picker-row{display:flex;align-items:center;gap:8px;width:100%;padding:6px 10px;border:none;background:transparent;text-align:start;font:inherit;cursor:pointer}.picker-row:hover{background:#f3f6fb}.success{color:#065f46;background:#d1fae5;border:1px solid #a7f3d0;padding:6px 10px;border-radius:6px;font-size:15px}.card-share{position:absolute;top:6px;inset-inline-end:32px;width:22px;height:22px;border:none;border-radius:50%;background:transparent;color:#6b7280;font-size:16px;line-height:1;padding:0;cursor:pointer;opacity:0;transition:opacity 80ms ease,background 80ms ease}.session-card:hover .card-share{opacity:1}.card-share:hover{background:#dbeafe;color:#1e40af}.auth-screen{display:flex;align-items:center;justify-content:center;height:100vh}.auth-card{background:#fff;padding:28px 32px;border-radius:10px;width:360px;box-shadow:0 4px 16px #0000000f}.auth-card h1{margin:0 0 18px;font-size:22px}.error{color:#c93f3f;font-size:15px;margin-top:6px}.page{padding:24px;max-width:1100px;margin:0 auto}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.page-header h1{font-size:22px;margin:0}.session-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}.session-card{background:#fff;border:1px solid #e1e7ee;border-radius:8px;padding:14px 16px;cursor:pointer;transition:box-shadow 80ms ease;position:relative}.session-card:hover{box-shadow:0 4px 12px #0000000d}.card-delete{position:absolute;top:6px;inset-inline-end:6px;width:22px;height:22px;border:none;border-radius:50%;background:transparent;color:#6b7280;font-size:18px;line-height:1;padding:0;cursor:pointer;opacity:0;transition:opacity 80ms ease,background 80ms ease}.session-card:hover .card-delete{opacity:1}.card-delete:hover{background:#fde2e2;color:#c93f3f}.card-delete:disabled{opacity:.5;cursor:default}.session-card .title{font-weight:600;margin-bottom:4px}.session-card .url{font-size:14px;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-card .meta{font-size:14px;color:#6b7280;margin-top:8px}.empty{text-align:center;color:#6b7280;padding:40px 0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#14192366;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#fff;border-radius:10px;padding:24px;width:420px;box-shadow:0 12px 40px #0000002e}.modal h2{margin:0 0 14px;font-size:18px}.tab-row{display:flex;gap:4px;background:#f0f4f9;padding:3px;border-radius:6px;margin-bottom:14px}.tab{flex:1;border:none;background:transparent;padding:6px 10px;font-size:15px;border-radius:4px;color:#4a5568}.tab.active{background:#fff;color:#1a1f2b;box-shadow:0 1px 2px #0000000f}.tab:hover:not(.active){color:#1a1f2b}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.review-layout{display:grid;grid-template-columns:var(--tree-width, 260px) 6px 1fr 6px var(--rail-width, 360px);height:calc(100vh - 49px);overflow:hidden}.review-layout.tree-hidden{grid-template-columns:1fr 6px var(--rail-width, 360px)}.review-tree{background:#f7fafc;border-inline-end:1px solid #e1e7ee;overflow-y:auto;overflow-x:hidden;padding:8px 6px;min-width:0}.review-divider{cursor:col-resize;background:transparent;position:relative;z-index:3;transition:background .1s ease}.review-divider:before{content:"";position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%);width:2px;background:#cdd5e0}.review-divider:hover{background:#4299e126}.review-divider:hover:before{background:#4299e1}.review-divider:active{background:#4299e140}.tree-toggle{font-size:14px}.review-stage{position:relative;background:#e8edf3;display:flex;flex-direction:column;min-width:0;overflow:hidden}.review-toolbar{display:flex;align-items:center;gap:10px;padding:8px 14px;background:#fff;border-bottom:1px solid #e1e7ee}.review-iframe-wrap{flex:1;overflow:auto;display:flex;justify-content:center;align-items:flex-start;padding:16px}.review-iframe{border:1px solid #cdd5e0;border-radius:6px;background:#fff;flex-shrink:0;box-shadow:0 4px 16px #0000000f}.rail{background:#fff;border-inline-start:1px solid #e1e7ee;display:flex;flex-direction:column;overflow:hidden}.rail-header{padding:12px 14px;border-bottom:1px solid #e1e7ee;font-weight:600}.rail-list{flex:1;overflow-y:auto}.rail-filters{display:flex;gap:6px;align-items:center;margin-top:8px;flex-wrap:wrap}.rail-filters .filter-select{flex:1;min-width:120px;font-size:14px;padding:4px 6px;height:28px}.rail-filters .btn.tiny{font-size:14px;padding:4px 8px;height:28px;white-space:nowrap}.rail-resolved-toggle{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:14px;color:#4a5568;font-weight:400}.rail-status-filter{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.rail-status-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border:1px solid #cbd5e0;border-radius:999px;font-size:13px;font-weight:500;color:#4a5568;background:#fff;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.rail-status-chip input{width:auto;margin:0}.rail-status-chip:not(.is-on){opacity:.6}.rail-status-chip:hover{opacity:1}.pt-comment.status-new .pt-comment-pin{background:#fed7d7;color:#742a2a}.pt-comment.status-in_progress .pt-comment-pin{background:#feebc8;color:#7b341e}.pt-comment.status-closed .pt-comment-pin{background:#c6f6d5;color:#22543d}.status-select{font-size:13px;padding:2px 6px;border-radius:4px;border:1.5px solid #cbd5e0;background:#fff;font-weight:500}.assign-me-btn{font-size:12px;padding:2px 8px;border-radius:4px;border:1px solid #90cdf4;background:#ebf8ff;color:#2b6cb0;cursor:pointer;font-weight:500;white-space:nowrap}.assign-me-btn:hover:not(:disabled){background:#bee3f8}.assign-me-btn:disabled{opacity:.5;cursor:default}.assign-group{display:inline-flex;flex-wrap:nowrap;align-items:center;gap:4px}.assign-group .assign-select{min-width:0}.reply-group{display:inline-flex;flex-wrap:nowrap;align-items:center;gap:4px}.scan-panel{display:flex;flex-direction:column;height:100%;min-width:0}.scan-panel-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-bottom:1px solid #e2e8f0;background:#f7fafc}.scan-panel-title{font-weight:600;font-size:14px;color:#2c3340}.scan-panel-body{overflow-y:auto;flex:1;padding:8px}.scan-panel-empty{padding:16px;color:#718096;font-size:14px}.scan-panel-error{color:#742a2a}.scan-panel-comment-preview{display:flex;align-items:baseline;gap:6px;padding:8px 10px;background:#fffaf0;border-bottom:1px solid #edf2f7;font-size:13px}.scan-panel-credit-alert{padding:10px 12px;background:#fff5f5;border-bottom:2px solid #fc8181;color:#742a2a;font-size:13px;line-height:1.5}.scan-panel-credit-alert strong{display:block;margin-bottom:4px}.scan-panel-credit-alert a{color:#2b6cb0}.scan-scorer-nocredits{background:#fed7d7!important;color:#742a2a!important;border-color:#fc8181!important}.scan-panel-comment-text{color:#2d3748;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.scan-panel-stats-bar{display:flex;justify-content:space-between;align-items:center;padding:6px 10px;background:#f7fafc;border-bottom:1px solid #edf2f7;font-size:12px;color:#4a5568}.scan-panel-stats-toggle{background:transparent;border:0;color:#2b6cb0;font-size:12px;cursor:pointer;padding:0}.scan-panel-stats-toggle:hover{text-decoration:underline}.scan-scorer-badge{display:inline-block;margin-inline-start:6px;padding:0 6px;border-radius:3px;font-size:10px;font-weight:600}.scan-scorer-ai{background:#ebf8ff;color:#2b6cb0}.scan-scorer-basic{background:#edf2f7;color:#4a5568}.scan-panel-stats{padding:8px 12px;background:#f7fafc;border-bottom:1px solid #edf2f7;font-size:12px;color:#4a5568;display:grid;grid-template-columns:1fr 1fr;gap:4px 12px}.scan-bucket{margin-bottom:14px}.scan-bucket-title{font-size:13px;font-weight:600;color:#4a5568;padding:4px 2px 6px;border-bottom:1px solid #edf2f7;margin-bottom:6px}.scan-bucket-count{color:#718096;font-weight:400;font-size:12px}.scan-panel-list{list-style:none;margin:0;padding:0}.scan-panel-row{display:block;padding:8px 10px;border:1px solid #edf2f7;border-radius:6px;margin-bottom:8px;background:#fafbfd;cursor:pointer;overflow:hidden}.scan-panel-row:hover{background:#f4f8fd}.scan-panel-row.is-active{border-color:#4f8cff;background:#eef4ff}.scan-panel-row-approved{opacity:.6;background:#f0fff4}.scan-panel-row-dismissed{opacity:.6}.scan-panel-row-failed{border-color:#feb2b2;background:#fff5f5}.scan-panel-row-head{display:flex;align-items:center;gap:6px;font-size:13px;margin-bottom:4px}.scan-pin{display:inline-block;background:#edf2f7;color:#2d3748;padding:1px 6px;border-radius:999px;font-weight:600;font-size:12px}.scan-panel-row-comment{color:#4a5568;font-size:12px;font-style:italic;word-break:normal;overflow-wrap:break-word;margin-bottom:8px}.scan-panel-section-label{font-size:11px;color:#718096;text-transform:uppercase;letter-spacing:.5px;margin:6px 0 2px}.scan-panel-no-alts{font-size:12px;color:#718096;padding:4px;font-style:italic}.scan-placement{display:block;padding:3px 0}.scan-placement-main{display:flex;align-items:center;gap:4px}.scan-placement-reason{font-size:11px;color:#4a5568;margin-top:2px;padding-inline-start:4px;word-break:normal;overflow-wrap:break-word;line-height:1.35}.scan-placement.is-current-view .scan-placement-nav{border-color:#4f8cff;box-shadow:0 0 0 2px #4f8cff26;background:#eef4ff}.scan-placement-nav{flex:1 1 auto;min-width:0;text-align:start;padding:3px 8px;border:1px solid #cbd5e0;border-radius:4px;background:#fff;cursor:pointer;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scan-placement-nav:hover{background:#f7fafc}.scan-placement-loc{color:#2c3340;overflow:hidden;text-overflow:ellipsis}.scan-placement-neighbor{display:inline-block;color:#a0aec0;margin-inline-start:4px;font-size:10px}.scan-placement-approve{font-size:11px;padding:2px 8px;flex-shrink:0}.conf-badge{padding:1px 6px;border-radius:4px;font-size:11px;font-weight:600;min-width:34px;text-align:center;flex-shrink:0}.conf-low{background:#fed7d7;color:#742a2a}.conf-mid{background:#feebc8;color:#7b341e}.conf-high{background:#c6f6d5;color:#22543d}.scan-panel-row-actions{display:block;margin-top:8px;padding-top:6px;border-top:1px dashed #e2e8f0}.scan-panel-row-actions>*{display:inline-block;vertical-align:middle;margin-inline-end:4px;font-size:12px}.scan-row-status{font-size:12px}.scan-row-status.ok{color:#22543d;font-weight:500}.scan-row-status.err{color:#742a2a;font-weight:500}.scan-row-status.muted{color:#718096}.thread .screen-badge{display:inline-block;background:#e0e7ff;color:#3730a3;font-size:12px;font-weight:600;border-radius:3px;padding:1px 6px;margin-inline-start:4px;vertical-align:middle}.thread{padding:12px 14px;border-bottom:1px solid #eef1f5;cursor:pointer;transition:background 60ms ease}.thread:hover{background:#f8fafc}.thread.active{background:#eef4ff}.thread.resolved{opacity:.65}.thread.off-viewport{opacity:.55}.thread.off-viewport .pin-num{background:#c8d0db}.thread .head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.thread .pin-num{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:#ff5c5c;color:#fff;font-size:14px;font-weight:600;margin-inline-end:8px}.thread.resolved .pin-num{background:#9aa4b1}.thread .author{font-size:15px;color:#1a1f2b;font-weight:500}.thread .body{font-size:15px;color:#2c3340;white-space:pre-wrap}.thread .meta{font-size:13px;color:#6b7280;margin-top:4px}.thread .actions{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.thread .actions button{font-size:14px;padding:4px 8px;background:transparent;border:1px solid #cdd5e0;border-radius:4px;color:#4a5568}.thread .actions button:hover{background:#f0f4f9}.replies{margin-top:8px;padding-inline-start:12px;border-inline-start:2px solid #e1e7ee}.reply{font-size:14px;margin-bottom:6px}.reply .author{font-weight:500}.composer{padding:10px;background:#f8fafc;border-top:1px solid #eef1f5}.composer textarea{resize:vertical;min-height:60px;font-size:15px}.composer .row{display:flex;gap:6px;margin-top:6px}.attach-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.attach-tile{position:relative;width:84px;height:84px;border:1px solid #cdd5e0;border-radius:6px;background:#fff;overflow:hidden;display:flex;align-items:center;justify-content:center}.attach-tile img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.attach-video{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block;background:#000}.attach-list-sm .attach-tile{width:58px;height:58px}.attach-file{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;text-decoration:none;color:#4a5568;padding:4px;text-align:center}.attach-file:hover{background:#f0f4f9;text-decoration:none}.attach-file-icon{font-size:22px;line-height:1}.attach-file-name{font-size:12px;margin-top:4px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 2px}.attach-remove{position:absolute;top:2px;inset-inline-end:2px;width:18px;height:18px;padding:0;border:none;border-radius:50%;background:#141923b3;color:#fff;font-size:16px;line-height:16px;cursor:pointer}.attach-remove:hover{background:#141923e6}.attach-tools{display:flex;gap:6px;margin-top:6px;align-items:center}.attach-tools .btn.tiny{font-size:14px;padding:4px 8px}.bell-wrap{position:relative}.bell{background:transparent;border:none;padding:4px 6px;position:relative;border-radius:6px}.bell:hover{background:#f0f4f9}.bell-icon{font-size:18px}.bell-badge{position:absolute;top:-2px;inset-inline-end:-2px;background:#e35353;color:#fff;font-size:12px;font-weight:600;min-width:16px;height:16px;border-radius:8px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center}.bell-dropdown{position:absolute;top:calc(100% + 6px);inset-inline-end:0;width:340px;max-height:420px;background:#fff;border:1px solid #e1e7ee;border-radius:8px;box-shadow:0 12px 32px #0000001f;z-index:50;display:flex;flex-direction:column}.bell-dropdown-header{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-bottom:1px solid #eef1f5;font-weight:600;font-size:16px}.bell-list{overflow-y:auto;flex:1}.bell-empty{padding:24px;text-align:center;color:#6b7280;font-size:15px}.bell-item{display:block;width:100%;text-align:left;background:#f6faff;border:none;border-bottom:1px solid #eef1f5;padding:10px 12px;cursor:pointer}.bell-item:hover{background:#eef4ff}.bell-item.read{background:#fff}.bell-item-text{font-size:15px;color:#1a1f2b}.bell-item-meta{font-size:13px;color:#6b7280;margin-top:3px}.link-btn{background:transparent;border:none;color:#4f8cff;font-size:14px;padding:0}.link-btn:hover{text-decoration:underline}.link-btn.danger{color:#c53030}.link-btn.muted{color:#4a5568}.link-btn:disabled{color:#a0aec0;cursor:not-allowed;text-decoration:none}.vp-switcher{display:inline-flex;border:1px solid #cdd5e0;border-radius:6px;overflow:hidden;background:#fff}.vp-btn{border:none;background:#fff;color:#4a5568;padding:6px 12px;font-size:15px;border-inline-end:1px solid #cdd5e0;display:inline-flex;align-items:center;gap:6px}.vp-btn:last-child{border-inline-end:none}.vp-btn:hover{background:#f0f4f9}.vp-btn.active{background:#4f8cff;color:#fff}.vp-btn-size{font-size:12px;opacity:.7;letter-spacing:.3px}.screen-nav{display:inline-flex;align-items:stretch;border:1px solid #cdd5e0;border-radius:6px;overflow:hidden;background:#fff;height:30px;box-shadow:0 1px 2px #1018280a;transition:border-color .1s ease,box-shadow .1s ease}.screen-nav:hover{border-color:#a0aec0}.screen-nav:focus-within{border-color:#4299e1;box-shadow:0 0 0 3px #4299e126}.screen-nav-btn{border:none;background:transparent;color:#4a5568;padding:0 10px;font-size:16px;line-height:1;cursor:pointer;border-inline-end:1px solid #e2e8f0;min-width:32px;transition:background .1s ease,color .1s ease}.screen-nav-btn:last-child{border-inline-end:none;border-inline-start:1px solid #e2e8f0}.screen-nav-btn:hover:not(:disabled){background:#edf2f7;color:#2d3748}.screen-nav-btn:disabled{color:#cbd5e0;cursor:default}.screen-nav-select{border:none;background:transparent;color:#2d3748;font-size:15px;padding:0 28px 0 12px;max-width:260px;cursor:pointer;appearance:none;-webkit-appearance:none;-moz-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'><path d='M2 3.5l3 3 3-3' stroke='%236b7280' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/></svg>");background-repeat:no-repeat;background-position:left 8px center;font-family:inherit}.screen-nav-select:focus{outline:none;background-color:#f7fafc}.screen-nav-select:hover:not(:disabled){background-color:#f7fafc}.vp-badge{display:inline-block;font-size:12px;text-transform:uppercase;letter-spacing:.4px;background:#e6ebf2;color:#4a5568;border-radius:3px;padding:1px 5px;margin-inline-start:6px;vertical-align:middle}.pick-banner{position:absolute;top:56px;left:50%;transform:translate(-50%);background:#1a1f2b;color:#fff;padding:8px 14px;border-radius:6px;font-size:15px;z-index:10}.upload-tray{position:fixed;inset-block-end:16px;inset-inline-end:16px;z-index:200;display:flex;flex-direction:column;gap:8px;max-width:380px}.upload-tray-row{position:relative;background:#fff;border:1px solid #d8dde6;border-radius:10px;box-shadow:0 6px 24px #0f172a1a;padding:10px 36px 10px 12px;font-size:15px}.upload-tray-row.status-error{border-color:#e9b8b8;background:#fff6f6}.upload-tray-row.status-done{border-color:#b9d8c2;background:#f5fbf7}.upload-tray-title{display:flex;flex-direction:column;gap:2px;background:transparent;border:none;text-align:start;cursor:pointer;color:inherit;padding:0;font:inherit;width:100%}.upload-tray-meta{color:#6b7280;font-size:14px}.upload-tray-bar{margin-top:8px;height:6px;background:#eef0f3;border-radius:999px;overflow:hidden}.upload-tray-fill{height:100%;background:linear-gradient(90deg,#3a78ff,#6aa3ff);transition:width .2s ease}.upload-tray-error{margin-top:6px;color:#7a1f1f;font-size:14px}.upload-tray-x{position:absolute;inset-block-start:8px;inset-inline-end:8px;background:transparent;border:none;color:#6b7280;cursor:pointer;font-size:18px;line-height:1;padding:2px 6px}.upload-tray-x:hover{color:#1a1f2b}.upload-chip{display:inline-flex;align-items:center;gap:6px;background:#eef4ff;color:#1d4ed8;border:1px solid #c7d8ff;padding:3px 10px;border-radius:999px;font-size:14px}.upload-chip-dot{width:8px;height:8px;border-radius:50%;background:#1d4ed8;animation:upload-chip-pulse 1.4s ease-in-out infinite}@keyframes upload-chip-pulse{0%,to{opacity:.4}50%{opacity:1}}.upload-pending-card{margin:auto;max-width:460px;padding:28px 32px;text-align:center;background:#fff;border:1px solid #d8dde6;border-radius:12px;box-shadow:0 12px 32px #0f172a0f}.upload-pending-card h3{margin-top:0}.upload-pending-bar{margin:16px 0 8px;height:10px;background:#eef0f3;border-radius:999px;overflow:hidden}.upload-pending-bar>div{height:100%;background:linear-gradient(90deg,#3a78ff,#6aa3ff);transition:width .3s ease}.upload-pending-card small{color:#6b7280}.tree-row.tree-version.uploading{background:linear-gradient(90deg,#fafcff,#fff)}.upload-inline-badge{display:inline-block;background:#1d4ed8;color:#fff;padding:1px 8px;border-radius:999px;font-size:13px;margin-inline-end:6px}.upload-inline-bar{display:inline-block;width:80px;height:6px;background:#eef0f3;border-radius:999px;overflow:hidden;margin-inline-start:8px;vertical-align:middle}.upload-inline-fill{display:block;height:100%;background:linear-gradient(90deg,#3a78ff,#6aa3ff);transition:width .2s ease}.project-tree{font-size:15px;color:#2d3748}.pt-root{display:flex;align-items:center;gap:6px;padding:6px 8px;font-weight:600;color:#1a202c;border-bottom:1px solid #e1e7ee;margin-bottom:4px}.pt-root-icon{font-size:16px}.pt-root-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pt-badge{background:#edf2f7;color:#4a5568;padding:1px 6px;border-radius:10px;font-size:13px;font-weight:500}.pt-parts,.pt-pages,.pt-comments{list-style:none;padding:0;margin:0}.pt-part{margin-bottom:2px}.pt-part-row{display:flex;align-items:center;gap:2px;padding:2px 4px;border-radius:4px}.pt-part.is-current>.pt-part-row{background:#ebf4ff}.pt-caret{background:none;border:none;padding:0;width:18px;cursor:pointer;color:#718096;font-size:13px}.pt-caret-empty{cursor:default}.pt-part-name{flex:1;background:none;border:none;padding:2px 4px;text-align:start;cursor:pointer;color:inherit;display:flex;align-items:center;gap:4px;overflow:hidden}.pt-part-name:hover{background:#edf2f7;border-radius:4px}.pt-part-icon{font-size:14px;flex:0 0 auto}.pt-part-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pt-part-meta{color:#a0aec0;font-size:13px;padding-inline-end:4px}.pt-pages{padding-inline-start:22px}.pt-page-row{display:flex;align-items:center;gap:2px;padding:2px 4px;border-radius:4px}.pt-page.is-current>.pt-page-row{background:#4299e1;color:#fff;font-weight:600}.pt-page.is-current>.pt-page-row .pt-page-index,.pt-page.is-current>.pt-page-row .pt-page-comments-count{color:#fff}.pt-page.is-visited>.pt-page-row{color:#4a5568}.pt-page-marker{width:12px;text-align:center;color:#a0aec0;font-size:12px}.pt-page.is-current>.pt-page-row .pt-page-marker{color:#fff}.pt-page-name{flex:1;background:none;border:none;padding:2px 4px;text-align:start;cursor:pointer;color:inherit;display:flex;align-items:center;gap:6px;overflow:hidden}.pt-page-name:hover{background:#4299e11a;border-radius:4px}.pt-page.is-current .pt-page-name:hover{background:#ffffff26}.pt-page-index{color:#a0aec0;font-size:13px;min-width:20px;text-align:end}.pt-page-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}.pt-page-comments-count{background:#edf2f7;color:#4a5568;padding:0 6px;border-radius:10px;font-size:12px;font-weight:500;border:none;cursor:pointer;line-height:inherit}.pt-page-comments-count:hover{background:#cbd5e0}.pt-page.is-current>.pt-page-row .pt-page-comments-count:hover{background:#ffffff40}.pt-comments{padding-inline-start:30px;margin-block:2px}.pt-comment{display:flex;align-items:baseline;gap:6px;width:100%;background:none;border:none;padding:2px 4px;text-align:start;cursor:pointer;color:#4a5568;border-radius:4px;font-size:13px}.pt-comment:hover{background:#edf2f7}.pt-comment.is-resolved{text-decoration:line-through}.pt-comment-pin{padding:0 4px;border-radius:8px;font-size:12px;font-weight:600}.pt-comment-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pt-empty{padding:6px 8px;color:#a0aec0;font-size:14px;font-style:italic}.ct-part-warn{margin-top:6px;padding:6px 8px;background:#fff5f5;border:1px solid #fc8181;border-radius:4px;color:#742a2a;font-size:13px}.pt-unassigned{border:1px solid #f6e05e;background:ivory;border-radius:6px;margin:4px 0 8px;padding:4px}.pt-unassigned-header{display:flex;align-items:center;gap:4px;padding:2px 4px}.pt-unassigned-icon{font-size:16px}.pt-unassigned-title{flex:1;font-weight:600;font-size:15px;color:#744210}.pt-unassigned-badge{background:#f6e05e;color:#744210}.pt-unassigned-explainer{font-size:13px;color:#744210;padding:4px 24px 6px;line-height:1.4}.pt-unassigned-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}.pt-unassigned-row{background:#fff;border-radius:4px;padding:6px;border:1px solid #e2e8f0}.pt-unassigned-row.is-busy{opacity:.5}.pt-unassigned-body{display:flex;flex-direction:column;gap:4px}.pt-unassigned-meta{font-size:12px;color:#718096;display:flex;gap:4px}.pt-unassigned-meta-label{color:#a0aec0}.pt-unassigned-meta-val{font-family:monospace}.pt-unassigned-controls{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.pt-unassigned-label{font-size:13px;color:#4a5568}.pt-unassigned-select{flex:1;min-width:100px;font-size:13px;padding:2px 4px;border:1px solid #cbd5e0;border-radius:4px;background:#fff}.pt-unassigned-warn{margin-top:6px;padding:6px 8px;background:#fff5f5;border:1px solid #fc8181;border-radius:4px;color:#742a2a;font-size:13px}
