.auth{background:var(--bg);grid-template-columns:1fr;min-height:100dvh;display:grid}.auth-aside{display:none}.auth-main{gap:var(--sp-5);width:100%;max-width:440px;padding:var(--sp-6) var(--gutter);flex-direction:column;justify-content:center;align-items:stretch;margin:0 auto;display:flex}.auth-main>.brand{align-self:flex-start}.auth-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-5) var(--sp-4)}.auth-title{font-size:var(--fs-h2);font-weight:var(--fw-black)}.input-code{text-transform:uppercase;letter-spacing:.06em;font-weight:var(--fw-semibold)}.input-code::placeholder{text-transform:none;letter-spacing:normal;font-weight:var(--fw-regular)}.input-code[readonly]{background:var(--grey-50);color:var(--text-strong)}.auth-switch{color:var(--text);align-self:flex-start}@media (width>=900px){.auth{grid-template-columns:minmax(0,5fr) minmax(0,6fr)}.auth-aside{background:var(--surface-raised);color:var(--text-on-dark);padding:var(--sp-7) var(--sp-7) var(--sp-6);flex-direction:column;justify-content:space-between;display:flex;position:relative;overflow:hidden}.auth-aside:after{content:"";aspect-ratio:1;opacity:.06;background:url(/brand/chs-logo-light.svg) 50%/contain no-repeat;width:78%;position:absolute;bottom:-22%;right:-18%}.auth-mark{width:64px;height:64px}.auth-aside-copy{z-index:1;gap:var(--sp-3);flex-direction:column;max-width:420px;display:flex;position:relative}.auth-aside-title{font-size:var(--fs-display);font-weight:var(--fw-black);color:var(--white);line-height:1.1}.auth-aside-title:after{content:".";color:var(--coral-400)}.auth-aside-text{font-size:var(--fs-lg);font-weight:var(--fw-medium);color:var(--grey-200)}.auth-main>.brand{display:none}.auth-form{padding:var(--sp-6)}}.full-center{min-height:100dvh;padding:var(--gutter);place-items:center;display:grid}.preview-banner{background:var(--coral-400);color:var(--ink);font-size:var(--fs-sm);text-align:center;padding:8px var(--gutter)}.portal{flex-direction:column;min-height:100dvh;display:flex}.portal-header{background:var(--surface);border-bottom:1px solid var(--border);z-index:50;position:sticky;top:0}.portal-header-inner{justify-content:space-between;align-items:center;gap:var(--sp-3);min-height:64px;display:flex}.portal-header .brand img{width:36px;height:36px}.header-actions{align-items:center;gap:var(--sp-2);min-width:0;display:flex}.reviewer-btn{min-width:0;max-width:260px}.reviewer-btn .reviewer-name{text-overflow:ellipsis;overflow:hidden}.reviewer-label{font-weight:var(--fw-medium);color:var(--text-muted)}@media (width<=639px){.portal-header .brand-name,.reviewer-label{display:none}.reviewer-btn{max-width:150px;padding-inline:10px}.header-actions .btn-secondary span{display:none}.header-actions .btn-secondary{width:40px;min-height:40px;padding:0}}.portal-main{padding-block:var(--sp-5) var(--sp-6);gap:var(--sp-4);flex-direction:column;flex:1;display:flex}.project-head{align-items:center;gap:var(--sp-4);display:flex}.client-logo{object-fit:contain;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);flex:none;width:72px;height:72px;padding:8px}.project-title{font-size:var(--fs-h1);font-weight:var(--fw-black);overflow-wrap:anywhere}@media (width<=639px){.project-head{align-items:flex-start;gap:var(--sp-3)}.client-logo{width:56px;height:56px;padding:6px}.project-title{font-size:var(--fs-h2)}}.review-intro{color:var(--text);border-left:4px solid var(--coral-400);max-width:70ch;padding:4px 0 4px 15px}.reviewer-gate{max-width:520px;padding:var(--sp-5)}.portal-footer{padding-block:0 var(--sp-5)}.portal-footer>p{border-top:1px solid var(--border);padding-top:var(--sp-4)}.tabs{gap:var(--sp-2);scrollbar-width:none;border-bottom:1px solid var(--border);display:flex;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{align-items:center;gap:var(--sp-2);min-height:44px;font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:3px solid #0000;margin-bottom:-1px;padding:8px 16px;display:inline-flex}.tab:hover{color:var(--text-strong)}.tab.is-active{color:var(--text-strong);border-bottom-color:var(--coral-400)}.tab-count{font-size:var(--fs-xs);background:var(--grey-100);color:var(--grey-800);border-radius:var(--radius-pill);padding:1px 8px}.filters{gap:var(--sp-3);flex-direction:column;display:flex}.filters-top{gap:var(--sp-2);align-items:center;display:flex}.search{flex:auto;min-width:0;max-width:460px;position:relative}.search-icon{color:var(--text-muted);pointer-events:none;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.search-input{border-radius:var(--radius-pill);padding-left:42px}.search-input::-webkit-search-cancel-button{cursor:pointer}.filters-toggle{flex:none;display:none}.filters-toggle[aria-expanded=true]{background:var(--grey-900);color:var(--white)}.filter-panel{gap:var(--sp-2);flex-wrap:wrap;display:flex}.filter-menu{position:relative}.filter-trigger{align-items:center;gap:var(--sp-2);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-pill);min-height:40px;font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text-strong);cursor:pointer;padding:6px 12px 6px 16px;display:inline-flex}.filter-trigger:hover{border-color:var(--grey-900)}.filter-trigger.has-value{border-color:var(--grey-900);background:var(--grey-900);color:var(--white)}.filter-count{background:var(--coral-400);color:var(--ink);border-radius:var(--radius-pill);font-size:var(--fs-xs);font-weight:var(--fw-bold);text-align:center;min-width:20px;padding:0 6px}.filter-caret{transition:transform var(--dur) var(--ease)}.filter-menu.is-open .filter-caret{transform:rotate(180deg)}.filter-pop{z-index:60;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);min-width:240px;max-width:min(340px,100vw - 30px);max-height:360px;box-shadow:var(--overlay-shadow);padding:var(--sp-2);position:absolute;top:calc(100% + 8px);left:0;overflow:auto}.filter-options{margin:0;padding:0;list-style:none}.filter-option{border-radius:var(--radius-sm);min-height:40px;font-size:var(--fs-sm);cursor:pointer;align-items:center;gap:10px;padding:6px 8px;display:flex}.filter-option:hover{background:var(--grey-50)}.filter-option input{width:18px;height:18px;accent-color:var(--grey-900);flex:none;margin:0}.filter-option-count{font-size:var(--fs-xs);color:var(--text-muted);font-variant-numeric:tabular-nums}.filter-empty{padding:8px}.filter-clear{margin-top:4px}.results-bar{align-items:center;gap:var(--sp-2) var(--sp-3);flex-wrap:wrap;min-height:32px;display:flex}.chips{gap:var(--sp-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.chip{background:var(--grey-100);border-radius:var(--radius-pill);min-height:32px;font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-strong);cursor:pointer;border:0;align-items:center;gap:6px;padding:4px 10px 4px 14px;display:inline-flex}.chip:hover{background:var(--grey-200)}@media (width<=767px){.search{max-width:none}.filters-toggle{display:inline-flex}.filter-panel{gap:var(--sp-2);padding:var(--sp-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);flex-direction:column;display:none}.filter-panel.is-open{display:flex}.filter-trigger{border-radius:var(--radius-sm);justify-content:space-between;width:100%}.filter-trigger>span:first-child{margin-right:auto}.filter-pop{box-shadow:none;border:0;max-width:none;max-height:none;padding:4px 0 8px;position:static}}.asset-grid{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(min(100%,240px),1fr));margin:0;padding:0;list-style:none;display:grid}.asset-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);min-width:0;transition:border-color var(--dur) var(--ease), transform var(--dur) var(--ease);overflow:hidden}.asset-card:has(.asset-link:hover){border-color:var(--grey-900)}.asset-link{height:100%;color:inherit;flex-direction:column;text-decoration:none;display:flex}.asset-link:hover{color:inherit}.asset-link:focus-visible{outline-offset:-3px;border-radius:var(--radius-lg)}.asset-thumb{aspect-ratio:1;background:var(--grey-50);border-bottom:1px solid var(--border);position:relative;overflow:hidden}.asset-thumb img{object-fit:contain;width:100%;height:100%;transition:transform var(--dur-slow) var(--ease)}.asset-link:hover .asset-thumb img{transform:scale(1.03)}.asset-thumb-ph{justify-content:center;align-items:center;gap:var(--sp-2);color:var(--grey-400);font-size:var(--fs-xs);font-weight:var(--fw-semibold);flex-direction:column;display:flex;position:absolute;inset:0}.asset-badge{position:absolute;top:12px;left:12px}.asset-body{padding:var(--sp-3) var(--sp-3) 20px;gap:var(--sp-2);flex-direction:column;display:flex}.asset-title{font-size:var(--fs-body);font-weight:var(--fw-bold);overflow-wrap:anywhere;line-height:1.3}.asset-fields{font-size:var(--fs-xs);flex-direction:column;gap:2px;margin:0;display:flex}.asset-field{gap:6px;min-width:0;display:flex}.asset-field dt{color:var(--text-muted);font-weight:var(--fw-medium);flex:none}.asset-field dt:after{content:":"}.asset-field dd{color:var(--text-strong);font-weight:var(--fw-semibold);white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.asset-card .skeleton.asset-thumb{border-bottom:0;border-radius:0}.asset-badge-inline{align-self:flex-start;display:none}@media (width<=559px){.asset-grid{gap:var(--sp-2)}.asset-card{border-radius:var(--radius-sm)}.asset-link{flex-direction:row;align-items:stretch}.asset-link:focus-visible{border-radius:var(--radius-sm)}.asset-thumb{aspect-ratio:1;border-bottom:0;border-right:1px solid var(--border);flex:none;width:112px}.asset-thumb img,.asset-link:hover .asset-thumb img{transform:scale(1.25)}.asset-thumb-ph span,.asset-badge{display:none}.asset-badge-inline{display:inline-flex}.asset-body{justify-content:center;gap:6px;min-width:0;padding:12px}.asset-title{font-size:var(--fs-sm)}}.state-dot{background:var(--ink);border-radius:50%;flex:none;width:8px;height:8px}.empty{text-align:center;padding:var(--sp-7) var(--gutter);align-items:center;gap:var(--sp-3);flex-direction:column;display:flex}.empty h2{font-size:var(--fs-h3)}.detail{--media-h:min(72vh, 120vw);z-index:200;background:var(--bg);animation:detail-in var(--dur-slow) var(--ease);outline:none;flex-direction:column;display:flex;position:fixed;inset:0;overflow:hidden}@keyframes detail-in{0%{opacity:0;transform:translateY(12px)}}.detail-bar{justify-content:space-between;align-items:center;gap:var(--sp-3);min-height:64px;padding:8px var(--gutter);background:var(--surface);border-bottom:1px solid var(--border);flex:none;display:flex}.detail-close{padding-inline:12px 16px}.detail-preview{margin-right:auto}.detail-nav{align-items:center;gap:var(--sp-2);display:flex}.detail-count{text-align:center;font-variant-numeric:tabular-nums;min-width:72px;font-weight:var(--fw-semibold)}.detail-body{-webkit-overflow-scrolling:touch;flex-direction:column;flex:1;min-height:0;display:flex;overflow-y:auto}.detail-media{gap:var(--sp-3);padding:var(--sp-3) var(--gutter);flex-direction:column;display:flex}.detail-info{gap:var(--sp-4);padding:var(--sp-3) var(--gutter) var(--sp-6);flex-direction:column;display:flex}.detail-title{font-size:var(--fs-h2);font-weight:var(--fw-black);overflow-wrap:anywhere}.detail-fields{border-top:1px solid var(--border);grid-template-columns:1fr;margin:0;display:grid}.detail-field{gap:var(--sp-3);border-bottom:1px solid var(--border);font-size:var(--fs-sm);grid-template-columns:minmax(110px,38%) 1fr;padding:10px 0;display:grid}.detail-field dt{color:var(--text-muted);font-weight:var(--fw-medium)}.detail-field dd{color:var(--text-strong);font-weight:var(--fw-semibold);overflow-wrap:anywhere;margin:0}@media (width>=900px){.detail{--media-h:max(420px, calc(100vh - 64px - 2 * var(--sp-4) - 120px))}.detail-body{flex-direction:row;overflow:hidden}.detail-media{min-width:0;padding:var(--sp-4);flex:62%;overflow-y:auto}.detail-info{background:var(--surface);border-left:1px solid var(--border);padding:var(--sp-5) var(--sp-4) var(--sp-6);flex:0 0 min(420px,38%);overflow-y:auto}}.model-tabs{gap:var(--sp-2);flex-wrap:wrap;display:flex}.model-tab{border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border-strong);min-height:36px;font-size:var(--fs-xs);font-weight:var(--fw-bold);cursor:pointer;color:var(--text-strong);padding:4px 16px}.model-tab.is-active{background:var(--grey-900);border-color:var(--grey-900);color:var(--white)}.viewer{width:100%;height:var(--media-h,min(72vh, 120vw));background:var(--grey-50);border:1px solid var(--border);border-radius:var(--radius-lg);min-height:300px;position:relative;overflow:hidden}.viewer-stage{touch-action:none;position:absolute;inset:0}.viewer-canvas{cursor:grab;outline:none;width:100%;height:100%;display:block}.viewer-canvas:active{cursor:grabbing}:is(.viewer:fullscreen,.viewer.is-pseudo-fullscreen){border:0;border-radius:0}.viewer:fullscreen{width:100vw;height:100vh}.viewer.is-pseudo-fullscreen{z-index:400;width:100%;height:100%;min-height:0;position:fixed;inset:0}.viewer-tools{gap:var(--sp-2);z-index:2;display:flex;position:absolute;top:12px;right:12px}.viewer-tool{background:var(--surface);width:40px;height:40px;color:var(--text-strong);border:1px solid var(--border);cursor:pointer;transition:background-color var(--dur) var(--ease), color var(--dur) var(--ease);border-radius:50%;place-items:center;display:grid}.viewer-tool:hover:not(:disabled){background:var(--grey-900);color:var(--white);border-color:var(--grey-900)}.viewer-tool:disabled{opacity:.4;cursor:default}.viewer-note{z-index:2;pointer-events:none;font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--grey-700);position:absolute;bottom:12px;left:12px;right:12px}.viewer-note:before{content:"";background:var(--coral-400);vertical-align:1px;border-radius:50%;width:8px;height:8px;margin-right:8px;display:inline-block}.viewer-loading,.viewer-error{z-index:1;justify-content:center;align-items:center;gap:var(--sp-2);padding:var(--sp-4);text-align:center;background:var(--grey-50);flex-direction:column;display:flex;position:absolute;inset:0}.viewer-loading-text{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text-strong);font-variant-numeric:tabular-nums}.viewer-error{color:var(--danger)}.viewer-error .strong{color:var(--text-strong)}.progress{background:var(--grey-200);border-radius:var(--radius-pill);width:min(260px,70%);height:6px;overflow:hidden}.progress>span{background:var(--coral-400);border-radius:inherit;width:0;height:100%;transition:width var(--dur) linear;display:block}.progress-indeterminate>span{width:35%;animation:indeterminate 1.2s var(--ease) infinite}@keyframes indeterminate{0%{transform:translate(-100%)}to{transform:translate(290%)}}.hero-image{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--grey-50);cursor:zoom-in;width:100%;padding:0;display:block;overflow:hidden}.hero-image img{object-fit:contain;width:100%;max-height:72vh}.image-strip-wrap{gap:var(--sp-2);flex-direction:column;display:flex}.image-strip{gap:var(--sp-2);scroll-snap-type:x proximity;margin:0;padding:2px 2px 8px;list-style:none;display:flex;overflow-x:auto}.image-strip li{scroll-snap-align:start;flex:none}.image-thumb{cursor:zoom-in;background:var(--grey-50);border:1px solid var(--border);border-radius:var(--radius-sm);width:96px;height:96px;padding:0;display:block;overflow:hidden}.image-thumb img{object-fit:cover;width:100%;height:100%}.image-thumb:hover{border-color:var(--grey-900)}.image-thumb-pending{cursor:default;color:var(--grey-400);place-items:center;display:grid}.image-thumb-pending.is-error{color:var(--danger)}.image-thumb-pending .spinner{width:20px;height:20px}.pending-tile{justify-content:center;align-items:center;gap:var(--sp-2);min-height:300px;padding:var(--sp-5);text-align:center;background:var(--grey-50);border:1px dashed var(--border-strong);border-radius:var(--radius-lg);color:var(--grey-500);flex-direction:column;display:flex}.detail-media>.pending-tile{min-height:var(--media-h,300px)}.pending-tile.is-error{color:var(--danger)}.pending-tile .strong{color:var(--text-strong)}.pending-name{overflow-wrap:anywhere}.feedback{gap:var(--sp-3);padding-top:var(--sp-4);border-top:2px solid var(--grey-900);flex-direction:column;display:flex}.feedback-title{font-size:var(--fs-h3);font-weight:var(--fw-bold)}.feedback-current{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.decision-group{gap:var(--sp-2);grid-template-columns:1fr 1fr;display:grid}.decision{border-radius:var(--radius-pill);background:var(--surface);border:2px solid var(--border-strong);min-height:48px;font-size:var(--fs-sm);font-weight:var(--fw-bold);color:var(--text-strong);cursor:pointer;transition:background-color var(--dur) var(--ease), border-color var(--dur) var(--ease), color var(--dur) var(--ease);padding:8px 12px}.decision:hover{border-color:var(--grey-900)}.decision-approve.is-selected{background:var(--state-approved-bg);border-color:var(--state-approved-bg);color:var(--state-approved-fg)}.decision-changes.is-selected{background:var(--state-changes-bg);border-color:var(--state-changes-bg);color:var(--state-changes-fg)}.feedback-history{gap:var(--sp-2);padding-top:var(--sp-2);flex-direction:column;display:flex}.history-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.history-item{border-bottom:1px solid var(--border);flex-direction:column;gap:4px;padding:12px 0;display:flex}.history-item:last-child{border-bottom:0}.history-comment{color:var(--text-strong);background:var(--grey-50);border-radius:var(--radius-sm);overflow-wrap:anywhere;margin-top:4px;padding:8px 12px}.lightbox{z-index:500;background:var(--ink);color:var(--white);touch-action:pan-y pinch-zoom;animation:fade-in var(--dur) var(--ease);flex-direction:column;display:flex;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}}.lightbox-bar{align-items:center;gap:var(--sp-3);padding:8px var(--gutter);flex:none;min-height:60px;display:flex}.lightbox-count{font-size:var(--fs-sm);font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;flex:none}.lightbox-title{min-width:0;font-size:var(--fs-xs);color:var(--grey-300);white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.lightbox-btn,.lightbox-nav{background:color-mix(in srgb, var(--white) 10%, transparent);width:44px;height:44px;color:var(--white);cursor:pointer;border:0;border-radius:50%;place-items:center;padding:0;display:grid}.lightbox-btn:hover,.lightbox-nav:hover{background:color-mix(in srgb, var(--white) 22%, transparent)}.lightbox-stage{min-height:0;padding:0 var(--gutter) var(--gutter);flex:1;grid-template:minmax(0,1fr)/minmax(0,1fr);display:grid;position:relative}.lightbox-img{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;grid-area:1/1;width:100%;height:100%}.lightbox-thumb{filter:blur(6px);opacity:.7}.lightbox-full{opacity:0;transition:opacity var(--dur-slow) var(--ease)}.lightbox-full.is-loaded{opacity:1}.lightbox-full.is-loaded~.lightbox-spinner{display:none}.lightbox-stage:has(.lightbox-full.is-loaded) .lightbox-thumb{visibility:hidden}.lightbox-spinner{border-color:color-mix(in srgb, var(--white) 25%, transparent);border-top-color:var(--coral-400);grid-area:1/1;place-self:center}.lightbox-nav{width:52px;height:52px;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-prev{left:var(--gutter)}.lightbox-next{right:var(--gutter)}.lightbox:fullscreen{background:var(--ink)}@media (width<=639px){.lightbox-nav{top:auto;bottom:var(--sp-4);transform:none}.lightbox-stage{padding-bottom:84px}}.lightbox :focus-visible{outline-color:var(--coral-300)}
