*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:var(--font-base);background:var(--color-background);color:var(--color-text-primary);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}a{color:var(--color-brand);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px;border-radius:var(--radius-sm)}button,input,select,textarea{font-family:inherit}h1,h2,h3,h4{margin:0;color:var(--color-text-primary)}.app-shell{display:grid;grid-template-columns:minmax(0,1fr);min-height:100vh}.app-shell--nav-open{grid-template-columns:264px minmax(0,1fr)}.sidebar{background:var(--color-sidebar-bg);color:var(--color-sidebar-text);padding:var(--space-xl) var(--space-lg);display:flex;flex-direction:column;gap:var(--space-xl)}.sidebar__brand{display:flex;align-items:center;gap:var(--space-sm);padding:0 var(--space-sm)}.sidebar__brand-name{color:var(--color-text-on-dark);font-weight:700;font-size:18px;letter-spacing:.2px}.sidebar__nav{display:flex;flex-direction:column;gap:4px}.sidebar__link{display:flex;align-items:center;gap:var(--space-md);padding:10px var(--space-md);border-radius:var(--radius-md);color:var(--color-sidebar-text);font-size:14px;font-weight:500;min-height:44px}.sidebar__link:hover{background:rgba(255,255,255,.06);text-decoration:none;color:var(--color-text-on-dark)}.sidebar__link--active,.sidebar__link--active:hover{background:var(--color-sidebar-active-bg);color:var(--color-sidebar-active-text)}.main{padding:var(--space-xl) var(--space-xxl) var(--space-xxl);max-width:1200px;min-width:0}.app-shell:not(.app-shell--nav-open)>.main{max-width:1440px}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-xl)}.page-header h1{font-size:24px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-xl)}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--space-lg);gap:var(--space-lg);margin-bottom:var(--space-xl)}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-lg);display:flex;gap:var(--space-md);align-items:center}.stat-card--link{text-decoration:none;color:inherit;cursor:pointer;transition:box-shadow .15s ease,border-color .15s ease,transform .15s ease}.stat-card--link:hover{box-shadow:var(--shadow-md);border-color:var(--color-brand);transform:translateY(-1px)}.stat-card--link:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.stat-card__icon{width:44px;height:44px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;background:var(--color-brand-surface);color:var(--color-brand);flex-shrink:0}.stat-card__icon--muted{background:var(--color-surface-muted);color:var(--color-text-secondary)}.stat-card__label{font-size:13px;color:var(--color-text-secondary)}.stat-card__value{font-size:24px;font-weight:700;color:var(--color-text-primary)}.section-title{font-size:18px;font-weight:600;margin:var(--space-xl) 0 var(--space-md)}.table-wrap{overflow-x:auto}table.data-table{width:100%;border-collapse:collapse;font-size:14px}.data-table th{text-align:left;color:var(--color-text-secondary);font-weight:500}.data-table td,.data-table th{padding:var(--space-md);border-bottom:1px solid var(--color-border);white-space:nowrap}.data-table tr:last-child td{border-bottom:none}.clickable-row{position:relative;cursor:pointer}.clickable-row:hover{background:var(--color-surface-muted)}.row-link:after{content:"";position:absolute;inset:0}.row-link:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:-2px}.status-badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:600}.chart-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:var(--space-lg);gap:var(--space-lg)}.chart-card__title{font-size:15px;font-weight:600;margin-bottom:var(--space-lg)}.legend{flex-direction:column;font-size:13px;color:var(--color-text-secondary)}.legend,.legend__row{display:flex;gap:var(--space-sm)}.legend__row{align-items:center}.legend__dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 var(--space-xl);border-radius:var(--radius-md);border:none;font-size:15px;font-weight:600;cursor:pointer}.btn--primary{background:var(--color-brand);color:var(--color-on-brand)}.btn--primary:hover{background:var(--color-brand-pressed)}.btn--secondary{background:var(--color-surface);color:var(--color-text-primary);border:1px solid var(--color-border)}.btn--secondary:hover{background:var(--color-surface-muted);text-decoration:none}.btn--ghost-danger{background:var(--color-error-surface);color:var(--color-error)}.btn--ghost-danger:hover{background:var(--color-error);color:var(--color-on-brand)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--block{width:100%}.btn--sm{min-height:32px;padding:0 12px;font-size:13px}.btn--md{min-height:36px;padding:0 16px;font-size:14px}.btn--xs{min-height:28px;padding:0 10px;font-size:12px}.detail-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:var(--space-lg);gap:var(--space-lg);align-items:start}.detail-list{gap:var(--space-md);margin:0 0 var(--space-lg)}.detail-list,.detail-list div{display:flex;flex-direction:column}.detail-list div{gap:2px}.detail-list dt{font-size:12px;color:var(--color-text-secondary)}.detail-list dd{margin:0;font-size:14px;color:var(--color-text-primary)}.doc-meta{display:flex;flex-direction:column;gap:2px;margin-bottom:var(--space-md);font-size:14px}.doc-viewer{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden;background:var(--color-surface-muted)}.doc-viewer__frame{width:100%;height:480px;border:0;display:block}.doc-viewer__image{width:100%;max-height:480px;object-fit:contain;display:block}.doc-actions{display:flex;gap:var(--space-sm);margin-top:var(--space-md);flex-wrap:wrap}.review-actions{border-top:1px solid var(--color-border);padding-top:var(--space-lg)}.review-actions__buttons{display:flex;gap:var(--space-sm);flex-wrap:wrap}.review-reject__textarea{min-height:96px;padding:var(--space-md);font-family:inherit;resize:vertical}.history-list{list-style:none;margin:0;padding:0;gap:var(--space-md)}.history-list,.history-list li{display:flex;flex-direction:column}.history-list li{gap:2px;padding-bottom:var(--space-md);border-bottom:1px solid var(--color-border);font-size:13px}.history-list li:last-child{border-bottom:none;padding-bottom:0}.history-list__action{font-weight:600;font-size:14px;color:var(--color-text-primary)}.history-list__reason{color:var(--color-text-primary);background:var(--color-surface-muted);border-radius:var(--radius-sm);padding:var(--space-sm);margin-top:4px}.sidebar__logout{margin-top:auto;background:transparent;border:1px solid rgba(255,255,255,.16);color:var(--color-sidebar-text);border-radius:var(--radius-md);min-height:40px;font-size:13px;font-weight:600;cursor:pointer}.sidebar__logout:hover:not(:disabled){background:rgba(255,255,255,.06);color:var(--color-text-on-dark)}.sidebar__logout:disabled{opacity:.6;cursor:not-allowed}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--space-lg)}.field__label{font-size:13px;font-weight:500}.field__input,.field__label{color:var(--color-text-primary)}.field__input{min-height:44px;padding:0 var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:15px;background:var(--color-surface)}.field__input:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:1px}.field__input--error{border-color:var(--color-error)}.field__input-wrap{position:relative;display:flex;align-items:center}.field__input-wrap .field__input{flex:1 1;padding-right:44px}.field__input-wrap .field__input--with-prefix{padding-left:52px;padding-right:var(--space-md)}.field__prefix{position:absolute;left:var(--space-md);font-size:15px;font-weight:500;pointer-events:none}.field__hint,.field__prefix{color:var(--color-text-secondary)}.field__hint{font-size:12px}.field__toggle{position:absolute;right:4px;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:transparent;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-sm,6px)}.field__toggle:hover{color:var(--color-text-primary)}.field__toggle:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:1px}.field__error{font-size:12px;color:var(--color-error)}.form-banner{padding:var(--space-md);border-radius:var(--radius-md);font-size:13px;margin-bottom:var(--space-lg)}.form-banner--error{background:var(--color-error-surface);color:var(--color-error)}.form-banner--info{background:var(--color-brand-surface);color:var(--color-brand-pressed)}.auth-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-xl);background:var(--color-background)}.auth-card{width:100%;max-width:420px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-xxl)}.auth-card__brand{display:flex;align-items:center;gap:var(--space-sm);justify-content:center;margin-bottom:var(--space-xl)}.auth-card__brand-name{font-size:20px;font-weight:700;color:var(--color-text-primary)}.auth-card__title{font-size:18px;font-weight:600;text-align:center;margin-bottom:var(--space-xl)}.text-muted{color:var(--color-text-secondary)}.panel-topbar{display:flex;align-items:center;gap:var(--space-md);margin-bottom:var(--space-lg)}.panel-topbar>.notif{margin-left:auto}.panel-topbar__menu{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:44px;height:44px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-primary);cursor:pointer}.panel-topbar__menu--open,.panel-topbar__menu:hover{border-color:var(--color-brand);color:var(--color-brand)}.panel-topbar__menu--open{background:var(--color-brand-surface)}.panel-topbar__brand:focus-visible,.panel-topbar__menu:focus-visible,.sidebar__brand-link:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.panel-topbar__brand,.sidebar__brand-link{display:inline-flex;align-items:center;gap:var(--space-sm);min-width:0;border-radius:var(--radius-md);text-decoration:none}.panel-topbar__brand:hover,.sidebar__brand-link:hover{text-decoration:none}.sidebar__close{display:none}@media (min-width:901px){.app-shell:not(.app-shell--nav-open)>.sidebar{display:none}.sidebar{position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar-backdrop{display:none}}.panel-topbar__brand-name{color:var(--color-text-primary);font-weight:700;font-size:18px;white-space:nowrap}.notif,.notif__bell{position:relative}.notif__bell{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-primary);cursor:pointer}.notif__bell:hover{background:var(--color-surface-muted)}.notif__count{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;padding:0 4px;border-radius:var(--radius-pill);background:var(--color-brand);color:var(--color-on-brand);font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}.notif__panel{position:absolute;right:0;top:calc(100% + 8px);width:360px;max-width:calc(100vw - 32px);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:50;overflow:hidden}.notif__panel-head{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border)}.notif__mark-all{border:none;background:transparent;color:var(--color-brand);font-size:12px;font-weight:600;cursor:pointer}.notif__mark-all:disabled{opacity:.6;cursor:default}.notif__list{max-height:420px;overflow-y:auto}.notif__empty{margin:0;padding:var(--space-lg);font-size:13px;color:var(--color-text-secondary);text-align:center}.notif__retry{border:none;background:transparent;color:var(--color-brand);font-weight:600;cursor:pointer}.notif__item{display:flex;flex-direction:column;gap:2px;width:100%;padding:var(--space-md) var(--space-lg);border:none;border-bottom:1px solid var(--color-border);background:var(--color-surface);text-align:left;cursor:pointer;color:var(--color-text-primary)}.notif__item:last-child{border-bottom:none}.notif__item:hover{background:var(--color-surface-muted);text-decoration:none}.notif__item--unread,.notif__item--unread:hover{background:var(--color-brand-surface)}.notif__item-title{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600}.notif__item--unread .notif__item-title{font-weight:700}.notif__dot{width:7px;height:7px;border-radius:50%;background:var(--color-brand);flex-shrink:0}.notif__item-body{font-size:12px;color:var(--color-text-primary);line-height:1.4}.notif__item-meta{font-size:11px;color:var(--color-text-secondary);margin-top:2px}.owner-cell{white-space:normal;max-width:220px}.owner-cell__name{font-weight:500;color:var(--color-text-primary)}.owner-cell__meta{font-size:12px;color:var(--color-text-secondary)}.owner-info{display:flex;flex-direction:column;gap:var(--space-sm);margin:0}.owner-info__row{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-border)}.owner-info__row:last-child{border-bottom:none;padding-bottom:0}.owner-info__row dt{color:var(--color-text-secondary);font-size:13px}.owner-info__row dd{margin:0;font-weight:500;color:var(--color-text-primary);text-align:right}.unread-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;border-radius:var(--radius-pill);background:var(--color-brand);color:var(--color-on-brand);font-size:12px;font-weight:700}.conversation{display:flex;flex-direction:column;gap:var(--space-lg)}.revision-status{align-self:flex-start;padding:6px 12px;border-radius:var(--radius-pill);font-size:13px;font-weight:600}.revision-status--none{background:var(--color-surface-muted);color:var(--color-text-secondary)}.revision-status--awaitingRevision{background:var(--color-warning-surface);color:var(--color-warning)}.revision-status--revisionCompleted{background:var(--color-success-surface);color:var(--color-success)}.conversation__messages{display:flex;flex-direction:column;gap:var(--space-md);max-height:460px;overflow-y:auto;padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted)}.msg{display:flex}.msg--own{justify-content:flex-end}.msg--other{justify-content:flex-start}.msg__bubble{max-width:76%;padding:var(--space-md);border-radius:var(--radius-lg);font-size:14px}.msg--own .msg__bubble{background:var(--color-brand);color:var(--color-on-brand);border-bottom-right-radius:var(--radius-sm)}.msg--other .msg__bubble{background:var(--color-surface);border:1px solid var(--color-border);border-bottom-left-radius:var(--radius-sm)}.msg__meta{font-size:12px;font-weight:600;opacity:.85;margin-bottom:4px}.msg__body{margin:0;line-height:1.5;white-space:pre-wrap}.msg__time{font-size:11px;opacity:.75;margin-top:6px}.msg--own .msg__time{text-align:right}.msg-system{padding:var(--space-md);border:1px solid var(--color-brand);border-left-width:4px;border-radius:var(--radius-md);background:var(--color-brand-surface);font-size:14px}.msg-system__meta{font-size:12px;font-weight:600;color:var(--color-text-secondary);margin-bottom:6px}.msg-attachment{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-sm);padding:var(--space-sm);border-radius:var(--radius-sm);background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-brand)}.msg-attachment__text{display:flex;flex-direction:column;min-width:0}.msg-attachment__name{font-size:13px;font-weight:500;color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.msg-attachment__meta{font-size:11px;color:var(--color-text-secondary)}.msg-attachment__actions{margin-left:auto;flex-shrink:0;display:flex;gap:6px}.msg-attachment__action{padding:4px 10px;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-brand);font-size:12px;font-weight:600;font-family:inherit;line-height:1.4;cursor:pointer;white-space:nowrap}.msg-attachment__action:hover:not(:disabled){background:var(--color-brand-surface);text-decoration:none}.msg-attachment__action:disabled{opacity:.6;cursor:progress}.revision-msg{border:1px solid;border-left:4px solid;border-radius:var(--radius-md);padding:var(--space-md)}.revision-msg--request{background:var(--color-warning-surface);border-color:var(--color-warning)}.revision-msg--delivery{background:var(--color-success-surface);border-color:var(--color-success)}.revision-msg__title{font-size:14px;font-weight:700;margin-bottom:4px}.revision-msg--request .revision-msg__title{color:var(--color-warning)}.revision-msg--delivery .revision-msg__title{color:var(--color-success)}.revision-msg__meta{font-size:12px;color:var(--color-text-secondary);margin-bottom:var(--space-sm)}.revision-msg__body{margin:0;font-size:14px;line-height:1.5;color:var(--color-text-primary);white-space:pre-wrap}.composer{display:flex;flex-direction:column;gap:var(--space-sm)}.composer__textarea{min-height:72px;padding:var(--space-md);font-family:inherit;resize:vertical;width:100%}.composer__files{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.composer__files li{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:6px var(--space-sm);border-radius:var(--radius-sm);background:var(--color-surface-muted);font-size:13px}.composer__files button{border:none;background:transparent;cursor:pointer;color:var(--color-text-secondary);font-size:14px}.composer__actions{display:flex;gap:var(--space-sm);flex-wrap:wrap}.composer__revision{margin-top:var(--space-sm);padding-top:var(--space-md);border-top:1px solid var(--color-border);display:flex;flex-direction:column;gap:var(--space-sm)}.dev-note{margin-top:var(--space-xl);padding:var(--space-md);border:1px dashed var(--color-border);border-radius:var(--radius-md);font-size:12px;color:var(--color-text-secondary)}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.5}}.skeleton{background:var(--color-surface-muted);border-radius:var(--radius-md);animation:skeleton-pulse 1.4s ease-in-out infinite}.doc-checklist__header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-sm);margin-bottom:var(--space-md)}.doc-checklist,.doc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-md)}.doc-list{margin-top:var(--space-sm);gap:var(--space-sm)}.doc-checklist__row{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-md);background:var(--color-surface)}.doc-checklist__summary{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-sm)}.doc-checklist__detail{font-size:13px}.doc-checklist__subtitle{margin:0 0 var(--space-sm);font-size:15px}.doc-requirement{border:1px solid var(--color-border);padding:1px 8px;color:var(--color-text-secondary)}.doc-requirement,.doc-status{font-size:12px;border-radius:var(--radius-sm)}.doc-status{font-weight:600;padding:2px 8px}.doc-status--complete{background:var(--color-success-surface);color:var(--color-success)}.doc-status--missing{background:var(--color-warning-surface);color:var(--color-warning)}.doc-status--rejected{background:var(--color-error-surface);color:var(--color-error)}.doc-status--optionalEmpty{background:var(--color-surface-muted);color:var(--color-text-secondary)}.doc-thumb{flex-shrink:0;display:block;width:96px;height:96px;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--color-border);background:var(--color-surface-muted)}.doc-thumb img{width:100%;height:100%;object-fit:cover}.doc-location{font-size:13px;margin-top:4px}.request-search{margin-bottom:var(--space-lg)}.request-search__label{display:block;margin-bottom:6px;font-size:13px;font-weight:500;color:var(--color-text-primary)}.request-search__row{display:flex;flex-wrap:wrap;gap:var(--space-sm);align-items:center}.request-search__box{position:relative;display:flex;align-items:center;flex:1 1 280px;max-width:420px}.request-search__icon{position:absolute;left:12px;color:var(--color-text-secondary);pointer-events:none}.request-search__input{width:100%;min-height:44px;padding:0 var(--space-md) 0 40px;border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:15px;background:var(--color-surface);color:var(--color-text-primary)}.request-search__input:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:1px;border-color:var(--color-brand)}.request-search__submit{min-height:44px}.request-code-link{font-weight:600;color:var(--color-text-primary);white-space:nowrap}.request-code-link:hover{color:var(--color-brand)}@media (max-width:600px){.request-search__box{flex-basis:100%;max-width:none}.request-search__submit{flex:1 1}}.data-table td.wrap-cell{white-space:normal;min-width:140px}.date-cell{white-space:nowrap}.msg-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));grid-gap:var(--space-sm);gap:var(--space-sm);margin-top:var(--space-sm);max-width:420px}.msg-photos--single{grid-template-columns:minmax(0,260px)}.msg-photo{display:flex;flex-direction:column;min-width:0;padding:0;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);overflow:hidden;text-align:left;font-family:inherit;cursor:zoom-in;transition:border-color .15s ease,box-shadow .15s ease}.msg-photo:hover{border-color:var(--color-brand);box-shadow:var(--shadow-sm)}.msg-photo:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.msg-photo__img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;background:var(--color-surface-muted)}.msg-photo__caption{display:flex;flex-direction:column;gap:1px;padding:6px var(--space-sm);min-width:0}.msg-photo__name{font-size:12px;font-weight:500;color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.msg-photo__meta{font-size:11px;color:var(--color-text-secondary)}.msg-photo--error{cursor:default}.msg-photo--error:hover{border-color:var(--color-border);box-shadow:none}.msg-photo__fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);aspect-ratio:4/3;padding:var(--space-sm);background:var(--color-error-surface);text-align:center}.msg-photo__fallback-text{font-size:12px;font-weight:500;color:var(--color-error)}.photo-viewer{position:fixed;inset:0;z-index:1000;display:flex;flex-direction:column;background:var(--color-sidebar-bg);color:var(--color-text-on-dark)}.photo-viewer__toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-bottom:1px solid rgba(255,255,255,.12)}.photo-viewer__title{display:flex;flex-direction:column;min-width:0;flex:1 1 200px}.photo-viewer__name{font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-viewer__meta{font-size:12px;opacity:.75}.photo-viewer__actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.photo-viewer__btn{min-width:40px;min-height:40px;padding:0 10px;border:1px solid rgba(255,255,255,.24);border-radius:var(--radius-md);background:rgba(255,255,255,.06);color:var(--color-text-on-dark);font-family:inherit;font-size:18px;font-weight:600;line-height:1;cursor:pointer}.photo-viewer__btn--text{font-size:14px}.photo-viewer__btn:hover:not(:disabled){background:rgba(255,255,255,.14)}.photo-viewer__btn:disabled{opacity:.4;cursor:default}.photo-viewer__btn:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.photo-viewer__btn--primary{background:var(--color-brand);border-color:var(--color-brand);color:var(--color-on-brand)}.photo-viewer__btn--primary:hover:not(:disabled){background:var(--color-brand-pressed)}.photo-viewer__zoom{min-width:56px;text-align:center;font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.photo-viewer__stage{position:relative;flex:1 1;min-height:0;display:flex;overflow:auto;padding:var(--space-md)}.photo-viewer__img{margin:auto;width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;border-radius:var(--radius-sm);cursor:zoom-in}.photo-viewer__stage--zoomed .photo-viewer__img{cursor:zoom-out}.photo-viewer__img--loading{visibility:hidden}.photo-viewer__message{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:var(--space-lg);text-align:center;font-size:15px}@media (max-width:600px){.msg-photos{grid-template-columns:repeat(2,minmax(0,1fr))}.msg-photos--single{grid-template-columns:minmax(0,1fr)}.photo-viewer__actions{width:100%;justify-content:space-between}.photo-viewer__stage{padding:var(--space-sm)}}.anchor-target{scroll-margin-top:24px}.field-row{display:flex;gap:12px}.field-row>.field{flex:1 1;min-width:0}.doc-row__actions{display:flex;flex-wrap:wrap;gap:8px;flex-shrink:0}.filter-bar{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:16px;align-items:flex-end}.filter-bar__field{display:flex;flex-direction:column;gap:4px;font-size:13px}.filter-bar__field--search .filter-bar__input{min-width:260px}.pager{display:flex;align-items:center;justify-content:space-between;margin-top:16px;font-size:13px}.pager__buttons{display:flex;gap:8px}@media (max-width:900px){.table-wrap:has(>.data-table--cards){overflow-x:visible}.data-table--cards,.data-table--cards tbody,.data-table--cards td,.data-table--cards tr{display:block;width:100%}.data-table--cards thead{display:none}.data-table--cards tr{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-xs) var(--space-md);margin-bottom:var(--space-md)}.data-table--cards tr:last-child{margin-bottom:0}.data-table--cards td,.data-table--cards tr:last-child td{position:relative;min-height:40px;padding:10px 0 10px 42%;border-bottom:1px solid var(--color-border);white-space:normal;overflow-wrap:anywhere;max-width:none}.data-table--cards td:before{content:attr(data-label);position:absolute;left:0;top:10px;width:calc(42% - var(--space-md));color:var(--color-text-secondary);font-size:13px;line-height:1.5}.data-table--cards td:not([data-label]),.data-table--cards td[colspan]{padding-left:0}.data-table--cards td:not([data-label]):before{content:none}.data-table--cards td:last-child,.data-table--cards tr:last-child td:last-child{border-bottom:none}.data-table--cards td:first-child{font-weight:600}.data-table--cards .cell-action{padding:var(--space-sm) 0}.data-table--cards .cell-action .btn{width:100%}.data-table--cards .clickable-row{cursor:pointer}.app-shell,.app-shell--nav-open{grid-template-columns:minmax(0,1fr)}.main{max-width:none;padding:0 var(--space-md) var(--space-xl)}.panel-topbar{position:-webkit-sticky;position:sticky;top:0;z-index:40;gap:var(--space-sm);justify-content:space-between;min-height:60px;margin:0 calc(-1 * var(--space-md)) var(--space-lg);padding:var(--space-sm) var(--space-md);padding-top:max(var(--space-sm),env(safe-area-inset-top));background:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.panel-topbar__menu{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:44px;height:44px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-primary);cursor:pointer}.panel-topbar__brand{display:flex;align-items:center;gap:var(--space-sm);flex:1 1;min-width:0}.notif__bell{width:44px;height:44px}.notif__panel{position:fixed;top:68px;left:var(--space-md);right:var(--space-md);width:auto;max-width:none}.notif__list{max-height:calc(100vh - 160px);max-height:calc(100dvh - 160px)}.notif__mark-all,.notif__retry{min-height:44px}.sidebar{position:fixed;top:0;bottom:0;left:0;z-index:70;width:min(300px,86vw);overflow-y:auto;overscroll-behavior:contain;gap:var(--space-lg);padding:max(var(--space-lg),env(safe-area-inset-top)) var(--space-md) max(var(--space-lg),env(safe-area-inset-bottom));box-shadow:var(--shadow-lg);transform:translateX(-100%);visibility:hidden;transition:transform .22s ease,visibility 0s linear .22s}.sidebar--open{transform:none;visibility:visible;transition:transform .22s ease}.sidebar__brand{justify-content:space-between}.sidebar__close{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin-left:auto;border:none;border-radius:var(--radius-md);background:transparent;color:var(--color-sidebar-text);cursor:pointer}.sidebar__link{min-height:48px;font-size:15px}.sidebar__logout{min-height:44px}.sidebar-backdrop{position:fixed;inset:0;z-index:65;background:var(--color-overlay)}body.body--menu-open{overflow:hidden}.anchor-target{scroll-margin-top:76px}.page-header{flex-wrap:wrap;gap:var(--space-sm) var(--space-md);margin-bottom:var(--space-lg)}.page-header h1{flex:1 1 200px;min-width:0;font-size:20px;overflow-wrap:anywhere}.card{padding:var(--space-lg)}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-md)}.stat-card{padding:var(--space-md)}.stat-card__value{font-size:22px}.chart-grid,.detail-grid{grid-template-columns:minmax(0,1fr)}.btn--md,.btn--sm,.btn--xs{min-height:44px}.btn--xs{padding:0 14px;font-size:14px}.check-row,.link-button{min-height:44px}.link-button{display:inline-flex;align-items:center}.check-row input[type=checkbox]{width:20px;height:20px;flex-shrink:0}.field__toggle{width:44px;height:44px}.msg-attachment__action{min-height:40px;padding:8px 12px}.field__input,.request-search__input,input,select,textarea{font-size:16px;max-width:100%}input[type=date],input[type=datetime-local],input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],select{min-height:44px}.field-row{flex-direction:column;gap:0}.doc-row__actions{flex:1 1 100%}.doc-row__actions .btn{flex:1 1 auto}.dashboard-filter>div{flex:1 1 100%}.dashboard-filter input,.dashboard-filter select{width:100%}.dashboard-filter .btn{flex:1 1 auto}.filter-bar{flex-direction:column;align-items:stretch}.filter-bar__field--search .filter-bar__input{min-width:0}.pager{flex-wrap:wrap;gap:var(--space-sm)}.pager__buttons{flex:1 1 100%}.pager__buttons .btn{flex:1 1}.conversation__messages{max-height:min(460px,60vh);max-height:min(460px,60dvh);padding:var(--space-sm)}.msg__bubble{max-width:88%}.composer__actions .btn{flex:1 1 auto}.doc-viewer__frame{height:60vh;height:60dvh}.doc-checklist__row{padding:var(--space-sm) var(--space-md)}.owner-info__row dd{text-align:left;overflow-wrap:anywhere}}@media (max-width:400px){.stat-grid{grid-template-columns:minmax(0,1fr)}}.card-heading{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-sm)}.back-link,.card-heading{align-items:center;margin-bottom:var(--space-md)}.back-link{display:inline-flex;gap:4px;color:var(--color-text-secondary);font-size:14px;font-weight:600;text-decoration:none}.back-link:hover{color:var(--color-brand)}.customer-header{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-lg);margin-bottom:var(--space-lg);border-top:4px solid var(--color-brand)}.customer-header__main{display:flex;flex-direction:column;gap:var(--space-sm);min-width:0}.customer-header__name{margin:0;font-size:24px;overflow-wrap:anywhere}.customer-header__contact{display:grid;grid-template-columns:repeat(3,minmax(0,auto));grid-gap:var(--space-sm) var(--space-xl);gap:var(--space-sm) var(--space-xl);margin:0;font-size:14px}.customer-header__contact dt{color:var(--color-text-secondary);font-size:12px}.customer-header__contact dd{margin:0;overflow-wrap:anywhere}.customer-header__contact a{color:var(--color-text-primary)}.badge-row{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px}.summary-notes{margin:calc(var(--space-sm) * -1) 0 var(--space-lg);padding-left:18px;color:var(--color-text-secondary);font-size:13px;display:flex;flex-direction:column;gap:2px}.summary-notes__warning{color:var(--color-warning);font-weight:600}.tabs{display:flex;gap:4px;overflow-x:auto;margin-bottom:var(--space-md);border-bottom:1px solid var(--color-border);scrollbar-width:thin}.tabs__link{flex:0 0 auto;padding:10px 14px;border-bottom:3px solid transparent;color:var(--color-text-secondary);font-size:14px;font-weight:600;text-decoration:none;white-space:nowrap}.tabs__link:hover{color:var(--color-text-primary)}.tabs__link--active{color:var(--color-brand);border-bottom-color:var(--color-brand)}.tabs__link:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:-2px}.tab-title{margin:0 0 var(--space-md);font-size:18px}.tab-footnote{font-size:13px;margin:var(--space-md) 0}.kv-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:var(--space-md) var(--space-xl);gap:var(--space-md) var(--space-xl);margin:0}.kv-list dt{color:var(--color-text-secondary);font-size:12px;margin-bottom:2px}.kv-list dd{margin:0;overflow-wrap:anywhere}.kv-list--compact{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--space-sm) var(--space-lg);font-size:14px;margin-bottom:var(--space-md)}.empty-state{align-items:center;gap:4px;padding:var(--space-xl) var(--space-md);border:1px dashed var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted);text-align:center}.cell-stack,.empty-state{display:flex;flex-direction:column}.cell-stack{gap:2px;min-width:0}.cell-wrap{overflow-wrap:anywhere;word-break:break-word}.data-table td.cell-wrap{max-width:260px}.customer-name{font-weight:600;color:var(--color-text-primary);text-decoration:none}.clickable-row:hover .customer-name{color:var(--color-brand)}.review-group{margin-bottom:var(--space-lg);padding:var(--space-md);border:1px solid var(--color-warning);border-radius:var(--radius-md);background:var(--color-warning-surface)}.review-group__title{margin:0 0 4px;font-size:15px;color:var(--color-warning)}.payment-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.payment-item{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}.payment-item[open]{border-color:var(--color-brand)}.payment-item__summary{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1.2fr) auto minmax(0,1.4fr);align-items:center;grid-gap:var(--space-sm) var(--space-md);gap:var(--space-sm) var(--space-md);padding:12px var(--space-md);cursor:pointer;font-size:14px}.payment-item__summary::-webkit-details-marker{display:none}.payment-item__summary:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:-2px;border-radius:var(--radius-md)}.payment-item__title{display:flex;flex-direction:column;min-width:0;overflow-wrap:anywhere}.payment-item__amount{font-size:16px;white-space:nowrap}.payment-item__body{padding:0 var(--space-md) var(--space-md);border-top:1px solid var(--color-border);padding-top:var(--space-md)}.payment-item__subtitle{margin:var(--space-sm) 0 6px;font-size:14px}.timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-md)}.timeline__item{border-left:3px solid var(--color-border);padding-left:var(--space-md)}.timeline__meta{display:flex;flex-wrap:wrap;gap:4px var(--space-md);color:var(--color-text-secondary);font-size:12px;margin-bottom:4px}.timeline__body{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px}.note-form{display:flex;flex-direction:column;gap:var(--space-sm);max-width:560px;margin-bottom:var(--space-lg)}.note-form .btn{align-self:flex-start}.action-row{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.btn[aria-disabled=true]{opacity:.5;pointer-events:none}@media (max-width:900px){.customer-header__contact{grid-template-columns:minmax(0,1fr)}.payment-item__summary{grid-template-columns:minmax(0,1fr) auto}.payment-item__summary>.badge-row{grid-column:1/-1}}@media (max-width:600px){.stat-grid--compact{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-sm)}.stat-grid--compact .stat-card{padding:var(--space-md)}.stat-grid--compact .stat-card__icon{display:none}.stat-grid--compact .stat-card__value{font-size:20px;overflow-wrap:anywhere}}.section-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:var(--space-lg);gap:var(--space-lg)}.section-card{display:flex;align-items:center;gap:var(--space-md);min-height:112px;padding:var(--space-lg) var(--space-xl);background:var(--color-surface);border:1px solid var(--color-border);border-left:4px solid var(--color-brand);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);color:var(--color-text-primary);text-decoration:none;transition:box-shadow .15s ease,border-color .15s ease}.section-card:hover{box-shadow:var(--shadow-md);border-color:var(--color-brand)}.section-card:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.section-card__icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:var(--radius-md);background:var(--color-brand-surface);color:var(--color-brand)}.section-card__body{display:flex;flex-direction:column;gap:4px;flex:1 1;min-width:0}.section-card__title{font-size:16px;font-weight:700;letter-spacing:.02em}.section-card__description{color:var(--color-text-secondary);font-size:13px}.section-card__count{flex:0 0 auto;min-width:48px;padding:6px 12px;background:var(--color-surface-muted);font-size:22px;text-align:center}.count-pill,.section-card__count{border-radius:var(--radius-pill);font-weight:700}.count-pill{display:inline-block;margin-left:6px;padding:2px 10px;background:var(--color-brand-surface);color:var(--color-brand);font-size:15px;vertical-align:middle}.status-chips{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin:0 0 var(--space-md)}.status-chip{padding:6px 12px;border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);color:var(--color-text-secondary);font-size:13px;font-weight:600;text-decoration:none}.status-chip:hover{color:var(--color-text-primary);border-color:var(--color-text-secondary)}.status-chip--active{background:var(--color-brand);border-color:var(--color-brand);color:var(--color-on-brand)}@media (max-width:600px){.section-cards{grid-template-columns:minmax(0,1fr);gap:var(--space-md)}.section-card{min-height:88px;padding:var(--space-md)}.status-chip{padding:10px 12px}}.confirm-dialog{width:min(480px,calc(100vw - 32px));padding:var(--space-xl);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface);color:var(--color-text-primary);box-shadow:var(--shadow-lg)}.confirm-dialog::-webkit-backdrop{background:var(--color-overlay)}.confirm-dialog::backdrop{background:var(--color-overlay)}.confirm-dialog__title{margin:0 0 var(--space-sm);font-size:18px}.confirm-dialog__text{margin:0 0 var(--space-md);font-size:13px}.confirm-dialog__hint{margin:4px 0 0;font-size:12px}.confirm-dialog textarea{width:100%}.confirm-dialog__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-sm);margin-top:var(--space-md)}@media (max-width:600px){.confirm-dialog{padding:var(--space-lg)}.confirm-dialog__actions .btn{flex:1 1 auto}}.back-nav{margin:calc(var(--space-sm) * -1) 0 var(--space-md)}.back-nav__link{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:6px 14px 6px 8px;border:1px solid var(--color-border);border-radius:var(--radius-pill);background:var(--color-surface);color:var(--color-text-secondary);font-size:14px;font-weight:600;text-decoration:none}.back-nav__link:hover{border-color:var(--color-brand);color:var(--color-brand);text-decoration:none}.back-nav__link:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}@media (max-width:900px){.back-nav{margin-top:0}.back-nav__link{min-height:44px}}.overview-title{margin-top:var(--space-xxl)}.overview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));grid-gap:var(--space-lg);gap:var(--space-lg)}.overview-panel{padding:var(--space-lg)}.overview-panel__title{margin:0 0 var(--space-md);font-size:16px}.overview-panel__empty{margin:0}.activity-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.activity-list>li+li{border-top:1px solid var(--color-border)}.activity-item{display:flex;flex-direction:column;gap:2px;padding:10px 4px;border-radius:var(--radius-sm);color:var(--color-text-primary);text-decoration:none;font-size:14px}.activity-item:hover{background:var(--color-surface-muted);text-decoration:none}.activity-item:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:-2px}.activity-item__main{display:flex;flex-wrap:wrap;align-items:center;gap:6px;overflow-wrap:anywhere}.activity-item__meta{color:var(--color-text-secondary);font-size:12px}.activity-item__preview{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}@media (max-width:600px){.overview-grid{grid-template-columns:minmax(0,1fr)}}