@import"https://fonts.googleapis.com/css2?family=Sora:wght@400;500;600&display=swap";:root{--surface-0: #f5f6f8;--surface-1: #ffffff;--surface-2: #eef1f4;--surface-3: #e3e7ee;--surface-inverse: #0b111a;--text-1: #101828;--text-2: #344054;--text-3: #667085;--accent-1: #2563eb;--accent-2: #22c55e;--border-1: #d0d5dd;--shadow-1: 0 8px 24px rgba(15, 23, 42, .12);--shadow-2: 0 2px 8px rgba(15, 23, 42, .08);font-family:Sora,Segoe UI,sans-serif;color:var(--text-1);background-color:var(--surface-0);line-height:1.45}*,*:before,*:after{box-sizing:border-box}body,html,#root{margin:0;height:100%;width:100%}body{background-color:var(--surface-0);color:var(--text-1);text-rendering:optimizeLegibility;margin:0;height:100%}.app-shell{min-height:100vh;height:100vh;display:flex;flex-direction:column;overflow:hidden}.toolbar{height:64px;background:var(--surface-1);display:flex;align-items:center;justify-content:space-between;padding:0 20px;color:var(--text-1);border-bottom:1px solid var(--border-1);box-shadow:none}.toolbar__center{display:flex;align-items:center;gap:10px}.toolbar__brand-name{font-size:.95rem;font-weight:600;letter-spacing:.2px}.toolbar__status{display:block;font-size:.78rem;color:var(--text-3)}.toolbar__actions{display:flex;align-items:center;gap:8px}.modal-backdrop{position:fixed;inset:0;background:#0f172a80;display:flex;align-items:center;justify-content:center;z-index:50}.modal{background:var(--surface-1);color:var(--text-1);border-radius:12px;padding:20px 24px;width:min(420px,90vw);box-shadow:0 20px 40px #0f172a40;display:flex;flex-direction:column;gap:12px}.modal h3{margin:0;font-size:1rem}.modal p{margin:0;color:var(--text-2);font-size:.9rem;line-height:1.4}.modal__ok{align-self:flex-end;border:1px solid var(--border-1);background:var(--surface-2);color:var(--text-1);border-radius:8px;padding:6px 12px;cursor:pointer;font-weight:600}.toolbar__button{border:1px solid var(--border-1);border-radius:8px;padding:7px 12px;font-weight:600;letter-spacing:.2px;cursor:pointer;background-color:var(--surface-2);color:var(--text-1);transition:background-color .2s ease,border-color .2s ease,transform .2s ease,box-shadow .2s ease}.toolbar__button:hover:not(:disabled){background-color:var(--surface-3);border-color:#b8c0cc;transform:translateY(-1px)}.toolbar__button:focus-visible{outline:2px solid rgba(37,99,235,.4);outline-offset:2px}.toolbar__button:disabled,.toolbar__button--disabled{opacity:.5;cursor:not-allowed}.toolbar__busy-chip{background-color:var(--surface-2);padding:4px 10px;border-radius:999px;font-size:.75rem;color:var(--text-2);border:1px solid var(--border-1)}.toolbar__log{font-size:.75rem;color:var(--text-2);background:var(--surface-2);padding:4px 10px;border-radius:10px;max-width:220px;border:1px solid var(--border-1)}.workspace{--panel-width: 360px;--left-panel-width: var(--panel-width);--right-panel-width: var(--panel-width);flex:1;display:grid;grid-template-columns:64px var(--left-panel-width) 1fr var(--right-panel-width) 64px;grid-template-areas:"left-rail left-panel main right-panel right-rail";gap:1px;background-color:var(--border-1);min-height:0;height:100%;overflow:hidden}.workspace--left-collapsed{--left-panel-width: 0px}.workspace--right-collapsed{--right-panel-width: 0px}.sidebar-rail{background:var(--surface-1);display:flex;flex-direction:column;align-items:center;padding:12px 6px;gap:10px}.sidebar-rail--left{grid-area:left-rail;border-right:1px solid var(--border-1)}.sidebar-rail--right{grid-area:right-rail;border-left:1px solid var(--border-1)}.sidebar-rail__button{display:flex;flex-direction:column;align-items:center;gap:6px;border:1px solid transparent;background:transparent;border-radius:12px;padding:8px 6px;color:var(--text-2);cursor:pointer;width:100%}.sidebar-rail__button--active{border-color:#2563eb40;background:#2563eb14;color:var(--accent-1)}.sidebar-rail__icon{width:28px;height:28px;border-radius:8px;border:1px solid var(--border-1);display:grid;place-items:center;font-weight:600;font-size:.8rem;background:var(--surface-2);color:inherit}.sidebar-rail__label{font-size:.7rem;letter-spacing:.3px}.sidebar-panel{background:var(--surface-1);min-width:0;overflow:hidden;width:100%;transition:width .25s ease,opacity .2s ease}.sidebar-panel--left{grid-area:left-panel;border-right:1px solid var(--border-1)}.sidebar-panel--right{grid-area:right-panel;border-left:1px solid var(--border-1);overflow-y:auto}.sidebar-panel--left{overflow-y:auto}.workspace--left-collapsed .sidebar-panel--left,.workspace--right-collapsed .sidebar-panel--right{opacity:0;pointer-events:none;width:0;display:none}.workspace__main{grid-area:main;min-width:0;min-height:0;display:flex;flex-direction:column;height:100%}.viewer-area{background-color:var(--surface-inverse);position:relative;min-height:0;height:100%}.viewer-area canvas{width:100%!important;height:100%!important}.viewer__placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#5b6c83;font-size:1.1rem;text-transform:uppercase;letter-spacing:1.2px}.viewer__placeholder p{margin:0;width:100%;text-align:center;transform:translateY(-8px)}.views-panel{background-color:var(--surface-1);padding:16px;display:flex;flex-direction:column;gap:12px;overflow-y:auto;height:100%}.views-panel h2{margin:0;color:var(--text-1);letter-spacing:.4px;font-size:.95rem}.views-panel__section-button{border:1px solid rgba(15,23,42,.12);background:var(--surface-2);color:var(--text-1);font-weight:600;font-size:.9rem;letter-spacing:.2px;padding:8px 12px;border-radius:10px;text-align:left;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,background .15s ease}.views-panel__section-button:hover:not(:disabled){background:#f1f5f9;transform:translateY(-1px);box-shadow:0 6px 16px #0f172a14}.views-panel__section-button:disabled{opacity:.6;cursor:not-allowed;transform:none;box-shadow:none}.views-panel__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:12px;flex:1}.view-card{background-color:var(--surface-1);border-radius:10px;box-shadow:inset 0 0 0 1px #0f172a14;padding:10px;display:flex;flex-direction:column;gap:8px}.view-card__header{font-weight:600;color:var(--text-2);letter-spacing:.4px;font-size:.8rem}.view-card__image{width:100%;height:120px;object-fit:contain;background:var(--surface-2);border-radius:8px;border:1px dashed rgba(15,23,42,.2)}.view-card__placeholder{flex:1;display:flex;align-items:center;justify-content:center;background:repeating-linear-gradient(45deg,#10182814,#10182814 10px,#fff9 10px 20px);border-radius:8px;color:var(--text-3);font-size:.8rem;text-align:center;padding:12px}.viewer-overlay{position:absolute;top:16px;left:16px;background:#0f172aa6;color:#f8fafc;padding:8px 14px;border-radius:8px;font-size:.85rem;max-width:280px;pointer-events:none;letter-spacing:.2px}.viewer__create-drawing{position:absolute;top:16px;right:16px;z-index:10;background:var(--surface-1);color:var(--text-1);border:1px solid var(--border-1);padding:6px 10px;border-radius:8px;cursor:pointer;font-weight:600}.viewer__create-drawing:hover{transform:translateY(-2px)}.viewer__fit{position:relative;background:var(--surface-1);color:var(--text-1);border:1px solid var(--border-1);padding:6px 10px;border-radius:8px;cursor:pointer;font-weight:600}.viewer__fit:hover{transform:translateY(-1px)}.viewer__title{position:absolute;bottom:16px;left:16px;color:#f8fafc;font-size:1.1rem;font-weight:600;letter-spacing:.4px;text-shadow:0 2px 10px rgba(0,0,0,.45);pointer-events:none}.viewer__comment-toggle{position:relative;background:var(--surface-1);color:var(--text-1);border:1px solid var(--border-1);padding:6px 10px;border-radius:8px;cursor:pointer;font-weight:600;display:inline-flex;gap:8px;align-items:center}.viewer__comment-toggle--active{background:var(--accent-1);color:#fff;border-color:transparent}.viewer__comment-toggle:disabled{opacity:.5;cursor:not-allowed}.viewer__comment-toggle-hint{font-size:.75rem;opacity:.7}.drawing-page{position:relative;width:100%;height:100%;background:#f6f9fc;border-left:1px solid rgba(19,35,60,.06);display:flex;flex-direction:column}.drawing-toolbar{padding:6px 12px;display:flex;gap:12px;align-items:center;flex-shrink:0}.drawing-canvas{position:relative;flex:1;padding:8px;overflow:auto;background-color:#fff;background-size:contain;background-repeat:no-repeat;background-position:center}.drawing-zone{position:absolute;border:2px dashed rgba(25,103,210,.6);background:transparent;display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:pointer;z-index:10;transition:background-color .2s ease}.drawing-zone:hover{background:#1967d214}.drawing-zone img{width:100%;height:100%;object-fit:contain;background-color:transparent}.drawing-zone span{color:#1967d280;font-size:.85rem;font-weight:500}.drawing-zone__handle{position:absolute;width:14px;height:14px;right:-7px;bottom:-7px;background:#1967d266;border:2px solid #1f65c1;border-radius:4px;cursor:nwse-resize;z-index:20}.drawing-canvas--editing .drawing-zone{cursor:move}.drawing-canvas--inserting{cursor:crosshair}.drawing-zone--draft{pointer-events:none;border:2px dashed rgba(25,103,210,.8);background:#1967d214}.drawing-measure-overlay{position:absolute;inset:0;pointer-events:none}.drawing-measure-point{stroke:#0a4db5;stroke-width:2;fill:#0a4db533}.drawing-measure-hover{stroke:#ff8c42;stroke-width:2;fill:#ff8c4233}.drawing-measure-line,.drawing-dim-line{stroke:#0a4db5;stroke-width:2}.drawing-dim-line--selected{stroke:#ff8c42}.drawing-dim-point{fill:#0a4db5;stroke:#fff;stroke-width:1}.drawing-dim-label{fill:#0a4db51a;stroke:#0a4db599;stroke-width:1}.drawing-dim-label--selected{fill:#ff8c4226;stroke:#ff8c4299}.drawing-dim-label__text{font-size:11px;fill:#0a4db5;-webkit-user-select:none;user-select:none;pointer-events:none}.drawing__delete-dim{margin-left:8px;background:#ffe0d1;border:1px solid #ff8c42;color:#a64b06;padding:4px 8px;border-radius:6px;cursor:pointer}.drawing__delete-dim:disabled{opacity:.5;cursor:not-allowed}.viewer-stack{position:relative;min-height:0;height:100%}.context-menu{position:fixed;z-index:30;background:#fff;border-radius:12px;box-shadow:0 12px 30px #12233c33;padding:8px;display:flex;flex-direction:column;gap:8px;min-width:200px}.context-menu__button{border:none;background:#eff4fb;color:#163458;padding:10px 12px;border-radius:8px;font-weight:600;text-align:left;cursor:pointer;display:flex;align-items:center;justify-content:space-between}.context-menu__button:hover:not(:disabled){background:#dfe9f6}.context-menu__button--disabled{opacity:.6;cursor:not-allowed}.context-menu__badge{margin-left:8px;font-size:.7rem;background:#e0e8f4;padding:2px 6px;border-radius:999px}.comment-form__backdrop{position:fixed;inset:0;background:#10192680;display:flex;align-items:center;justify-content:center;z-index:40}.comment-form{background:#fff;border-radius:16px;padding:20px 24px;width:min(420px,92vw);box-shadow:0 20px 40px #0c1e3640}.comment-form__header{display:flex;justify-content:space-between;align-items:center}.comment-form__header h3{margin:0}.comment-form__close{border:none;background:transparent;font-size:1.4rem;cursor:pointer}.comment-form__body{display:flex;flex-direction:column;gap:12px;margin-top:12px}.comment-form__body label{display:flex;flex-direction:column;gap:6px;font-size:.9rem;color:#1b3354}.comment-form__body input,.comment-form__body textarea,.comment-form__body select{border:1px solid rgba(18,35,60,.2);border-radius:8px;padding:8px 10px;font-size:.9rem}.comment-form__row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.comment-form__actions{display:flex;justify-content:flex-end;gap:10px;margin-top:8px}.comment-form__cancel{background:transparent;border:1px solid rgba(18,35,60,.2);border-radius:8px;padding:8px 14px;cursor:pointer}.comment-form__submit{background:#163a5f;color:#fff;border:none;border-radius:8px;padding:8px 14px;cursor:pointer;font-weight:600}.comment-form__submit:disabled{opacity:.5;cursor:not-allowed}.comment-form__warning{margin-top:12px;color:#b35a2b;font-size:.85rem}.review-pin{position:relative;pointer-events:auto}.review-pin__dot{width:9px;height:9px;border-radius:999px;border:1.5px solid #fff;cursor:pointer;background:currentColor;box-shadow:0 1px 4px #00000040}.review-pin--issue{color:#e4573e}.review-pin--idea{color:#f6a94a}.review-pin--comment{color:#3f7dd7}.review-pin--review{color:#5e6fb8}.review-pin--status-in_progress{color:#3f7dd7}.review-pin--status-passed{color:#4caf6a}.review-pin--status-failed{color:#e4573e}.review-pin--status-cancelled{color:#8c96a8}.review-pin--review .review-pin__dot{border-radius:4px;width:11px;height:11px}.review-pin--selected .review-pin__dot{transform:scale(1.15);box-shadow:0 0 0 3px #ffffff73}.review-pin-card{position:absolute;top:12px;left:12px;background:var(--surface-1);border-radius:8px;padding:8px 10px;min-width:150px;box-shadow:var(--shadow-2);color:var(--text-1);border:1px solid rgba(15,23,42,.08)}.review-pin-card__title{font-weight:600;margin-bottom:4px;font-size:.85rem}.review-pin-card__meta{display:flex;gap:8px;align-items:center;font-size:.72rem;color:var(--text-2)}.review-pin-card__footer{display:flex;justify-content:space-between;margin-top:4px;font-size:.7rem;color:var(--text-3)}.review-panel{background:var(--surface-1);padding:16px;height:100%;overflow:auto;display:flex;flex-direction:column;gap:12px}.review-panel__header{display:flex;justify-content:space-between;align-items:baseline}.review-panel__header h2{margin:0;color:var(--text-1);font-size:1rem}.review-panel__count{font-size:.75rem;color:var(--text-3)}.review-panel__start{border:1px solid rgba(37,99,235,.4);background:var(--surface-1);color:var(--accent-1);border-radius:8px;padding:6px 12px;cursor:pointer;font-weight:600}.review-panel__tabs{display:flex;gap:8px;flex-wrap:wrap}.review-panel__tab{border:1px solid var(--border-1);background:var(--surface-2);color:var(--text-2);border-radius:8px;padding:6px 10px;cursor:pointer;font-weight:600;font-size:.82rem}.review-panel__tab--active{background:var(--surface-1);color:var(--text-1);border-color:#2563eb59;box-shadow:var(--shadow-2)}.review-panel__filters{display:flex;gap:10px}.review-panel__filters label{display:flex;flex-direction:column;gap:6px;font-size:.78rem;color:var(--text-2)}.review-panel__filters select{border:1px solid var(--border-1);border-radius:8px;padding:6px 8px;background:var(--surface-2);color:var(--text-1)}.review-table{display:flex;flex-direction:column;gap:8px}.review-table__header,.review-table__row{display:grid;grid-template-columns:.8fr 1.6fr .8fr 1.3fr .8fr .7fr 1fr;gap:6px;align-items:center}.review-table__header{font-weight:600;font-size:.75rem;color:var(--text-2);text-transform:uppercase;letter-spacing:.6px}.review-table__row{background:var(--surface-1);border-radius:10px;padding:10px 12px;border:1px solid rgba(15,23,42,.08);text-align:left;cursor:pointer;transition:border-color .2s ease,background .2s ease,transform .2s ease}.review-table__row:hover{background:var(--surface-2);border-color:#2563eb40;transform:translateY(-1px)}.review-table__row:focus-visible{outline:2px solid rgba(37,99,235,.35);outline-offset:2px}.review-library__grid{display:grid;grid-template-columns:1fr;gap:12px}.insight-card{border:1px solid rgba(15,23,42,.08);border-radius:12px;background:var(--surface-1);padding:12px 14px;display:flex;flex-direction:column;gap:8px}.insight-card__title{font-weight:600;color:var(--text-1);font-size:.9rem}.insight-card__summary{margin:0;color:var(--text-2);font-size:.82rem;line-height:1.35}.insight-card__tags{display:flex;flex-wrap:wrap;gap:6px}.insight-card__tag{font-size:.7rem;padding:2px 8px;border-radius:999px;background:#0f172a0f;color:var(--text-2);font-weight:600}.insight-card__meta{display:flex;flex-wrap:wrap;gap:8px 12px;font-size:.7rem;color:var(--text-3)}.review-panel,.views-panel{animation:panelFadeIn .25s ease}.review-pin-card{animation:cardPop .2s ease}@keyframes panelFadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes cardPop{0%{opacity:0;transform:translateY(4px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.review-table__title{font-weight:600;color:var(--text-1)}.review-table__empty{padding:16px;color:var(--text-3)}.review-detail{display:flex;flex-direction:column;gap:12px}.review-detail__back{border:none;background:transparent;color:#21508f;cursor:pointer;text-align:left}.review-detail__title{display:flex;justify-content:space-between;align-items:baseline}.review-detail__description{color:var(--text-2)}.review-detail__meta{display:flex;gap:8px;align-items:center}.review-detail__controls{display:flex;gap:12px}.review-detail__controls label{display:flex;flex-direction:column;gap:6px;font-size:.85rem}.review-detail__controls select{border:1px solid rgba(18,35,60,.2);border-radius:8px;padding:6px 8px}.review-detail__section h4{margin:0 0 8px}.review-detail__replies{list-style:none;padding:0;margin:0 0 12px;display:flex;flex-direction:column;gap:10px}.review-detail__replies li{background:#ffffffbf;border-radius:10px;padding:10px 12px}.review-detail__reply-header{display:flex;justify-content:space-between;gap:8px;font-size:.8rem}.review-detail__reply-header button{border:none;background:transparent;color:#c2462b;cursor:pointer}.review-detail__reply-form{display:flex;flex-direction:column;gap:6px}.review-detail__reply-form input,.review-detail__reply-form textarea{border:1px solid rgba(18,35,60,.2);border-radius:8px;padding:8px 10px}.review-detail__reply-submit{align-self:flex-start;background:#163a5f;color:#fff;border:none;border-radius:8px;padding:8px 14px;cursor:pointer}.review-detail__delete{align-self:flex-start;background:#ffe4de;color:#a3351f;border:1px solid #f4b6a7;border-radius:8px;padding:8px 14px;cursor:pointer}.review-detail__empty{color:#6b7d94}.chip{padding:2px 8px;border-radius:999px;font-size:.72rem;text-transform:capitalize;background:#0f172a14;color:var(--text-2)}.chip--issue{background:#e4573e26;color:#c5422f}.chip--idea{background:#f6a94a33;color:#b96a12}.chip--comment{background:#3f7dd733;color:#2f5ea6}.chip--review{background:#5e6fb833;color:#3f4d8c}.chip--kind{background:#163a5f26}.chip--tag{background:#2360ac2e}.chip--status-open{background:#3f7dd72e;color:#2a5aa0}.chip--status-in_progress{background:#f6a94a38;color:#b96a12}.chip--status-resolved{background:#6bbe8038;color:#3f7a54}.chip--status-closed{background:#78819533;color:#4a5568}.chip--status-in_progress{background:#3f7dd72e;color:#2a5aa0}.chip--status-passed{background:#6bbe8038;color:#3f7a54}.chip--status-failed{background:#e4573e33;color:#c5422f}.chip--status-cancelled{background:#78819533;color:#4a5568}.checklist-section{display:flex;flex-direction:column;gap:10px}.checklist-progress{background:#163a5f14;border-radius:10px;padding:8px;display:flex;flex-direction:column;gap:6px}.checklist-progress__bar{height:6px;border-radius:999px;background:linear-gradient(90deg,#3f7dd7,#4caf6a);transition:width .2s ease}.checklist-summary{display:flex;flex-wrap:wrap;gap:8px;font-size:.75rem;color:#3a5574}.checklist-item{background:#ffffffbf;border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:8px}.checklist-item__text{font-size:.9rem;color:#233b5c}.checklist-toggle{display:flex;gap:6px;flex-wrap:wrap}.checklist-toggle__button{border:1px solid rgba(18,35,60,.2);border-radius:6px;padding:4px 8px;background:#fff;cursor:pointer;font-size:.75rem;text-transform:capitalize}.checklist-toggle__button--active{box-shadow:inset 0 0 0 2px #163a5f59}.checklist-toggle__button--pending{background:#f1f3f6}.checklist-toggle__button--pass{background:#6bbe8033}.checklist-toggle__button--fail{background:#e4573e33}.checklist-toggle__button--na{background:#78819533}.checklist-note{border:1px solid rgba(18,35,60,.2);border-radius:8px;padding:6px 8px;font-size:.85rem}.review-start-form{background:#fff;border-radius:16px;padding:20px 24px;width:min(420px,92vw);box-shadow:0 20px 40px #0c1e3640}.review-start-form__summary{background:#163a5f14;border-radius:8px;padding:8px 10px;font-size:.85rem;color:#2a4467}.auto-suggestion{background:#f6a94a33;border:1px solid rgba(246,169,74,.4);border-radius:8px;padding:8px 10px;display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:.85rem;color:#8a4e10}.auto-suggestion button{border:none;background:#f6a94a;color:#fff;border-radius:6px;padding:4px 10px;cursor:pointer;font-weight:600}.viewer__mode-stack{position:absolute;top:56px;right:16px;z-index:10;display:flex;flex-direction:column;gap:8px}.sidebar-tabs{display:flex;flex-direction:column;min-height:0;height:100%}.sidebar-tabs__controls{display:flex;background:var(--surface-1);padding:8px;gap:8px;border-bottom:1px solid var(--border-1)}.sidebar-tabs__button{flex:1;border:1px solid var(--border-1);padding:8px 12px;border-radius:8px;background:var(--surface-2);font-weight:600;cursor:pointer;color:var(--text-2)}.sidebar-tabs__button--active{background:var(--surface-1);color:var(--text-1);border-color:#2563eb59;box-shadow:var(--shadow-2)}.sidebar-tabs__content{flex:1;min-height:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:1200px){.workspace{grid-template-columns:1fr;grid-template-rows:auto auto 1fr auto auto;grid-template-areas:"left-rail" "left-panel" "main" "right-panel" "right-rail"}}
