*, *::before, *::after { box-sizing: border-box; } body { margin: 0; background: var(--bg); color: var(--text); } button, input, textarea { font: inherit; } :where(button, input, textarea, a):focus-visible { outline: 2px solid var(--text); outline-offset: 4px; } .review-room { max-width: 1440px; margin-inline: auto; padding-inline: clamp(20px, 4vw, 64px); } .masthead { display: flex; justify-content: space-between; align-items: center; gap: 20px; min-height: 82px; border-bottom: 1px solid var(--divider); font-size: 13px; } .project-names { display: inline-flex; align-items: center; gap: 12px; font-weight: 600; } .project-names > span, .masthead-note { color: var(--text-secondary); } .introduction { display: flex; justify-content: space-between; align-items: flex-end; gap: 48px; padding-block: 64px 48px; } .introduction-copy { max-width: 630px; } .eyebrow { margin: 0 0 16px; color: var(--text-secondary); font-size: 12px; font-weight: 500; letter-spacing: 0.04em; } .introduction h1 { margin: 0; font-size: clamp(44px, 5.2vw, 72px); font-weight: 500; line-height: 1.05; letter-spacing: -0.055em; overflow-wrap: anywhere; } .intro-description { max-width: 440px; margin: 22px 0 0; color: var(--text-secondary); font-size: 16px; line-height: 1.65; } .review-progress { flex: 0 0 208px; padding-bottom: 4px; } .progress-label { display: flex; align-items: baseline; gap: 10px; margin-bottom: 16px; } .progress-label strong { font-size: 44px; line-height: 1; font-weight: 500; letter-spacing: -0.05em; font-variant-numeric: tabular-nums; } .progress-label span, .review-progress p { color: var(--text-secondary); font-size: 13px; } .review-progress progress { display: block; width: 100%; height: 4px; overflow: hidden; border: 0; border-radius: 0; background: var(--divider); accent-color: var(--text); } .review-progress progress::-webkit-progress-bar { background: var(--divider); } .review-progress progress::-webkit-progress-value { background: var(--text); } .review-progress progress::-moz-progress-bar { background: var(--text); } .review-progress p { margin: 12px 0 0; } .collection-tools { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; padding-block: 24px; border-block: 1px solid var(--divider); } .filter-group { display: flex; flex-wrap: wrap; gap: 6px; min-width: 0; } .filter-button { min-height: 44px; gap: 8px; } .filter-count { opacity: 0.65; font-size: 12px; font-variant-numeric: tabular-nums; } .search-field { flex: 0 1 280px; min-width: 220px; } .search-field input { width: 100%; min-width: 0; min-height: 44px; } .collection-summary { display: flex; justify-content: space-between; gap: 16px; padding-block: 21px; color: var(--text-secondary); font-size: 12px; line-height: 1.5; } .collection-summary p { margin: 0; } .collection-summary > span { flex-shrink: 0; font-variant-numeric: tabular-nums; } .work-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 38px 24px; margin: 0; padding: 0; list-style: none; } .work-grid > li, .work-card, .card-content { min-width: 0; } .work-card { height: 100%; } .photo-frame { position: relative; overflow: hidden; aspect-ratio: 3 / 2; border-radius: var(--radius); background: var(--table-alt); } .photo-frame img { display: block; width: 100%; height: 100%; object-fit: cover; } .photo-number { position: absolute; top: 12px; left: 12px; display: grid; place-items: center; width: 30px; height: 28px; border: 1px solid var(--divider); border-radius: var(--radius); background: var(--bg); color: var(--text); font-size: 11px; font-variant-numeric: tabular-nums; } .card-content { padding-top: 17px; } .card-context { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 13px; } .project-label { color: var(--text-secondary); font-size: 12px; } .status-badge { max-width: 100%; font-size: 11px; line-height: 1.5; white-space: normal; } .card-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; } .card-heading h2 { flex: 1; min-width: 0; margin: 7px 0 0; font-size: 20px; line-height: 1.35; letter-spacing: -0.025em; font-weight: 500; overflow-wrap: anywhere; } .review-button { flex-shrink: 0; min-height: 44px; gap: 8px; } .review-button > span { font-size: 18px; } .empty-state { display: flex; flex-direction: column; align-items: center; padding: 72px 20px 88px; border: 1px dashed var(--divider); border-radius: var(--radius); text-align: center; } .empty-mark { margin-bottom: 20px; color: var(--text-secondary); font-size: 42px; font-weight: 300; } .empty-state h2 { margin: 0; font-size: 24px; font-weight: 500; letter-spacing: -0.03em; } .empty-state p { max-width: 360px; margin: 12px 0 24px; color: var(--text-secondary); font-size: 14px; line-height: 1.7; } .empty-state button { min-height: 44px; } .room-footer { display: flex; align-items: baseline; justify-content: space-between; gap: 24px; margin-top: 64px; padding-block: 24px 32px; border-top: 1px solid var(--divider); color: var(--text-secondary); font-size: 12px; line-height: 1.6; } .room-footer > span { flex-shrink: 0; } .room-footer p { max-width: 460px; margin: 0; text-align: right; } .review-dialog { width: min(1120px, calc(100vw - 48px)); max-width: calc(100vw - 48px); max-height: 90vh; max-height: 90dvh; padding: 0; overflow: auto; background: var(--bg); color: var(--text); } .review-layout { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); min-width: 0; } .review-image-panel { display: flex; flex-direction: column; justify-content: center; min-width: 0; padding: 32px 24px; background: var(--table-alt); } .review-image { display: block; width: 100%; height: auto; max-height: 68vh; max-height: 68dvh; object-fit: contain; } .image-caption { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 20px; margin: 16px 0 0; color: var(--text-secondary); font-size: 11px; line-height: 1.5; } .review-details { min-width: 0; padding: 40px 28px 24px; } .review-heading { margin-bottom: 24px; } .review-heading .eyebrow { margin-bottom: 10px; } .review-title { margin: 0 0 18px; font-size: clamp(25px, 2.5vw, 34px); font-weight: 500; line-height: 1.15; letter-spacing: -0.04em; overflow-wrap: anywhere; } .saved-feedback { margin-bottom: 24px; padding: 14px 16px; border-left: 2px solid var(--divider); background: var(--table-alt); } .saved-feedback h3 { margin: 0 0 7px; color: var(--text-secondary); font-size: 11px; font-weight: 500; } .saved-feedback p { margin: 0; font-size: 13px; line-height: 1.65; white-space: pre-wrap; overflow-wrap: anywhere; } .feedback-field textarea { display: block; width: 100%; max-width: 100%; min-height: 120px; resize: vertical; } .field-help { margin: 10px 0 0; color: var(--text-secondary); font-size: 12px; line-height: 1.6; } .feedback-error { margin: 12px 0 0; padding: 10px 12px; border: 1px solid var(--text); border-radius: var(--radius); font-size: 13px; font-weight: 500; line-height: 1.6; } .decision-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 24px; } .decision-actions button, .review-close-row button { min-height: 44px; } .decision-confirmation { min-height: 21px; margin: 14px 0 24px; font-size: 13px; line-height: 1.6; overflow-wrap: anywhere; } .review-close-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 16px; padding-top: 16px; border-top: 1px solid var(--divider); } .save-note { max-width: 160px; color: var(--text-secondary); font-size: 11px; line-height: 1.5; } @media (max-width: 1100px) { .collection-tools { align-items: stretch; flex-direction: column-reverse; } .search-field { flex: auto; width: min(100%, 360px); min-width: 0; } .work-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 760px) { .review-layout { grid-template-columns: minmax(0, 1fr); } .review-image-panel { padding: 40px 20px 20px; } .review-image { max-height: 42vh; max-height: 42dvh; } .review-details { padding: 24px 20px 20px; } } @media (max-width: 600px) { .masthead { min-height: 68px; gap: 12px; font-size: 12px; } .masthead-note { max-width: 110px; text-align: right; line-height: 1.5; } .introduction { align-items: stretch; flex-direction: column; gap: 28px; padding-block: 40px 32px; } .intro-description { margin-top: 18px; font-size: 15px; } .review-progress { flex: auto; width: 100%; } .progress-label { margin-bottom: 12px; } .progress-label strong { font-size: 30px; } .collection-tools { gap: 20px; padding-block: 20px; } .search-field { width: 100%; } .filter-group { gap: 8px; } .filter-button { font-size: 13px; } .work-grid { grid-template-columns: minmax(0, 1fr); gap: 32px; } .card-heading h2 { font-size: 21px; } .room-footer { flex-direction: column; gap: 8px; margin-top: 40px; } .room-footer p { text-align: left; } .review-dialog { width: calc(100vw - 24px); max-width: calc(100vw - 24px); max-height: calc(100vh - 24px); max-height: calc(100dvh - 24px); } .feedback-field textarea, .search-field input { font-size: 16px; } .empty-state { padding: 48px 20px 56px; } }