/*
 * Cyberpulse Carbon foundation layer.
 *
 * The application is currently served as vanilla HTML/JavaScript, so Carbon's
 * foundations are introduced without changing the existing DOM or API code.
 * These token names mirror Carbon's roles and keep the migration reversible:
 * existing portal components can be replaced with Carbon Web Components one
 * surface at a time without changing their event handlers.
 */
:root{
  --cds-font-family-sans:"IBM Plex Sans","Segoe UI",system-ui,sans-serif;
  --cds-body-compact-01:12px;
  --cds-body-01:14px;
  --cds-body-02:16px;
  --cds-heading-compact-01:20px;
  --cds-heading-02:24px;
  --cds-heading-03:28px;
  --cds-background:#f4f4f4;
  --cds-layer-01:#fff;
  --cds-layer-02:#f4f4f4;
  --cds-layer-hover-01:#e8e8e8;
  --cds-layer-selected-01:#e0e0e0;
  --cds-border-subtle-00:#e0e0e0;
  --cds-border-subtle-01:#c6c6c6;
  --cds-border-strong-01:#8d8d8d;
  --cds-text-primary:#161616;
  --cds-text-secondary:#525252;
  --cds-text-helper:#6f6f6f;
  --cds-text-disabled:#a8a8a8;
  --cds-interactive:#0f62fe;
  --cds-hover-primary:#0050e6;
  --cds-active-primary:#002d9c;
  --cds-support-success:#24a148;
  --cds-support-warning:#f1c21b;
  --cds-support-error:#da1e28;
  --cds-focus:#0f62fe;
  --cds-spacing-01:2px;
  --cds-spacing-02:4px;
  --cds-spacing-03:8px;
  --cds-spacing-04:12px;
  --cds-spacing-05:16px;
  --cds-spacing-06:24px;
  --cds-spacing-07:32px;
  --cds-spacing-08:40px;
}

html{font-family:var(--cds-font-family-sans)}
body{background:var(--cds-background);color:var(--cds-text-primary);font-family:inherit}
button,input,textarea,select{font-family:inherit}

/* The login shell uses the same foundations as the authenticated portal. */
.topbar{height:64px;background:var(--cds-layer-01);border-bottom:1px solid var(--cds-border-subtle-00);padding-inline:24px}
.topbar .brand{font-size:16px;letter-spacing:0}
.topbar .brand span{color:var(--cds-text-secondary)}
.shell{background:var(--cds-background)}
.card,.login-card{border-radius:0;box-shadow:none;border-color:var(--cds-border-subtle-00);background:var(--cds-layer-01)}
.login-card{padding:32px}
.button{min-height:40px;border:0;border-radius:0;background:#e0e0e0;color:var(--cds-text-primary);padding:0 16px;font-weight:600;transition:background .12s ease,color .12s ease}
.button:hover{background:#c6c6c6}
.button.primary{background:var(--cds-interactive);border-color:var(--cds-interactive);color:#fff}
.button.primary:hover{background:var(--cds-hover-primary);border-color:var(--cds-hover-primary)}
.button.small{min-height:32px;padding:0 12px;font-size:12px}
.form :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,select),
:is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,select){border:0;border-bottom:1px solid var(--cds-border-strong-01);border-radius:0;background:var(--cds-layer-02);color:var(--cds-text-primary);padding:10px 12px}
:is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,select):hover{background:var(--cds-layer-hover-01)}
:is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,select):focus{border-color:var(--cds-focus);box-shadow:inset 0 -2px 0 var(--cds-focus);outline:0}
:is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,select):disabled{background:#e0e0e0;color:var(--cds-text-disabled)}
.eyebrow{color:var(--cds-interactive);font-size:11px;letter-spacing:.1em}
.muted{color:var(--cds-text-secondary)}
.badge{border-radius:4px;background:#e0e0e0;color:var(--cds-text-secondary);font-weight:600}
.badge.dark{background:#393939;color:#fff}

/* Carbon's default enterprise surfaces are flat layers with clear borders. */
.exact-wireframe-app .card,
.exact-wireframe-app .customer-panel,
.exact-wireframe-app .customer-project-card,
.exact-wireframe-app .customer-activity-hero,
.exact-wireframe-app .activity-area,
.exact-wireframe-app .activity-comments,
.exact-wireframe-app .activity-files-panel,
.exact-wireframe-app .activity-requirements,
.exact-wireframe-app .activity-challenges,
.exact-wireframe-app .admin-toolbar,
.exact-wireframe-app .admin-list{border-radius:0;box-shadow:none;border-color:var(--cds-border-subtle-00)}

.exact-wireframe-app .button{min-height:40px;border:0;border-radius:0;background:#e0e0e0;color:var(--cds-text-primary);padding:0 16px;font-weight:600;transition:background .12s ease,color .12s ease}
.exact-wireframe-app .button:hover{background:#c6c6c6}
.exact-wireframe-app .button.primary{background:var(--cds-interactive);border-color:var(--cds-interactive);color:#fff}
.exact-wireframe-app .button.primary:hover{background:var(--cds-hover-primary);border-color:var(--cds-hover-primary)}
.exact-wireframe-app .button.small{min-height:32px;padding:0 12px;font-size:12px}
.exact-wireframe-app .button.ghost,.exact-wireframe-app .text-button{background:transparent;color:var(--cds-interactive)}
.exact-wireframe-app .button.ghost:hover,.exact-wireframe-app .text-button:hover{background:var(--cds-layer-hover-01)}

.exact-wireframe-app :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,select){border:0;border-bottom:1px solid var(--cds-border-strong-01);border-radius:0;background:var(--cds-layer-02);color:var(--cds-text-primary);padding:10px 12px}
.exact-wireframe-app :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,select):hover{background:var(--cds-layer-hover-01)}
.exact-wireframe-app :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,select):focus{border-color:var(--cds-focus);box-shadow:inset 0 -2px 0 var(--cds-focus);outline:0}
.exact-wireframe-app :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,select):disabled{background:#e0e0e0;color:var(--cds-text-disabled)}
.exact-wireframe-app input[type="checkbox"],.exact-wireframe-app input[type="radio"]{accent-color:var(--cds-interactive)}

.exact-wireframe-app .eyebrow{color:var(--cds-interactive);font-size:11px;letter-spacing:.1em}
.exact-wireframe-app .muted{color:var(--cds-text-secondary)}
.exact-wireframe-app .badge{border-radius:4px;background:#e0e0e0;color:var(--cds-text-secondary);font-weight:600}
.exact-wireframe-app .badge.dark{background:#393939;color:#fff}
.exact-wireframe-app .customer-status-chip,
.exact-wireframe-app .requirement-status,
.exact-wireframe-app .challenge-status,
.exact-wireframe-app .status{border-radius:4px;font-weight:600}

.exact-wireframe-app .wire-top{background:var(--cds-layer-01);border-bottom-color:var(--cds-border-subtle-00)}
.exact-wireframe-app .wire-main button:hover,
.exact-wireframe-app .wire-main button.active{background:var(--cds-layer-hover-01);color:var(--cds-interactive)}
.exact-wireframe-app .workspace-top{border-bottom-color:var(--cds-border-subtle-00)}
.exact-wireframe-app .activity-row{border-top-color:var(--cds-border-subtle-00)}
.exact-wireframe-app .activity-row:hover{background:var(--cds-layer-hover-01)}
.exact-wireframe-app .activity-type,
.exact-wireframe-app .customer-activity-tag{border-radius:4px;background:#e0e0e0;color:var(--cds-text-secondary)}

.exact-wireframe-app .wire-logo{border-radius:4px;background:var(--cds-interactive)}
.exact-wireframe-app .wire-internal,
.exact-wireframe-app .wire-rolebadge{border-radius:4px}
.exact-wireframe-app .wire-main button{border-radius:0}
.exact-wireframe-app .wire-iconbtn{border-radius:0;border-color:var(--cds-border-subtle-01);background:var(--cds-layer-01)}
.exact-wireframe-app .wire-iconbtn:hover{border-color:var(--cds-interactive);background:var(--cds-layer-hover-01)}
.exact-wireframe-app .wire-notif{border-radius:0;box-shadow:0 8px 24px rgba(0,0,0,.16)}
.exact-wireframe-app .wire-notif{width:420px;max-height:min(620px,calc(100vh - 80px));display:flex;flex-direction:column;background:var(--cds-layer-01)}
.exact-wireframe-app .wire-notif.hidden{display:none}
.exact-wireframe-app .wire-notif-hd{min-height:52px;padding:0 16px;background:var(--cds-layer-01);border-bottom:1px solid var(--cds-border-subtle-01)}
.exact-wireframe-app .wire-notif-hd>div{display:flex;align-items:baseline;gap:8px}
.exact-wireframe-app .wire-notif-hd b{font-size:16px;color:var(--cds-text-primary)}
.exact-wireframe-app .wire-notif-hd span{font-size:12px;color:var(--cds-text-secondary)}
.exact-wireframe-app .wire-close-notif{min-height:32px;padding:0 8px;color:var(--cds-link-primary)}
.exact-wireframe-app .wire-close-notif:hover{background:var(--cds-layer-hover-01)}
.exact-wireframe-app .wire-notif-list{overflow-y:auto;overscroll-behavior:contain;max-height:520px}
.exact-wireframe-app .wire-notif-item{appearance:none;width:100%;display:grid;grid-template-columns:12px minmax(0,1fr);gap:8px;padding:14px 16px;border:0;border-bottom:1px solid var(--cds-border-subtle-01);background:var(--cds-layer-01);color:var(--cds-text-primary);text-align:left;cursor:pointer}
.exact-wireframe-app .wire-notif-item:hover{background:var(--cds-layer-hover-01)}
.exact-wireframe-app .wire-notif-item:focus-visible{outline:2px solid var(--cds-focus);outline-offset:-2px}
.exact-wireframe-app .wire-notif-item--unread{background:var(--cds-layer-selected-01,#e8f1ff)}
.exact-wireframe-app .wire-notif-marker{width:8px;height:8px;margin-top:5px;border-radius:50%;background:transparent}
.exact-wireframe-app .wire-notif-item--unread .wire-notif-marker{background:var(--cds-interactive)}
.exact-wireframe-app .wire-notif-copy{display:grid;gap:4px;min-width:0}
.exact-wireframe-app .wire-notif-copy strong{font-size:14px;line-height:20px}
.exact-wireframe-app .wire-notif-copy>span{font-size:13px;line-height:18px;color:var(--cds-text-secondary);overflow-wrap:anywhere}
.exact-wireframe-app .wire-notif-copy small{font-size:11px;line-height:16px;color:var(--cds-text-helper)}
.exact-wireframe-app .wire-notif-empty{display:grid;gap:4px;padding:28px 20px;color:var(--cds-text-secondary);text-align:center}
.exact-wireframe-app .wire-notif-empty b{color:var(--cds-text-primary)}
.exact-wireframe-app .wire-iconbtn.has-unseen-notifications{color:var(--cds-interactive);border-color:var(--cds-interactive)}
.exact-wireframe-app .wire-iconbtn.notification-arrived{animation:notificationBellV8 .45s ease-out}
.notification-attention-highlight{position:relative;z-index:1;outline:3px solid var(--cds-focus,#0f62fe)!important;outline-offset:3px;box-shadow:0 0 0 7px rgba(15,98,254,.16)!important;animation:notificationAttentionV8 1.2s ease-in-out infinite}
@keyframes notificationBellV8{0%{transform:rotate(0)}25%{transform:rotate(-10deg)}55%{transform:rotate(10deg)}100%{transform:rotate(0)}}
@keyframes notificationAttentionV8{0%,100%{box-shadow:0 0 0 4px rgba(15,98,254,.10)}50%{box-shadow:0 0 0 9px rgba(15,98,254,.22)}}
@media (prefers-reduced-motion:reduce){.exact-wireframe-app .wire-iconbtn.notification-arrived,.notification-attention-highlight{animation:none}.notification-attention-highlight{box-shadow:0 0 0 7px rgba(15,98,254,.16)!important}}
.exact-wireframe-app .portal-modal{border-radius:0;box-shadow:0 12px 32px rgba(0,0,0,.2)}
.exact-wireframe-app .tabs{border-radius:0;background:#e0e0e0}
.exact-wireframe-app .tab{border-radius:0}
.exact-wireframe-app .tab.active{box-shadow:none;background:var(--cds-layer-01);color:var(--cds-interactive)}
.exact-wireframe-app .activity-row:focus-within,
.exact-wireframe-app .customer-activity-row:focus-visible{outline:2px solid var(--cds-focus);outline-offset:-2px}

/* Keep keyboard navigation visible across the portal. */
.exact-wireframe-app :is(button,a,input,textarea,select):focus-visible{outline:2px solid var(--cds-focus);outline-offset:2px}

@media(max-width:800px){
  .exact-wireframe-app .button{min-height:40px}
  .exact-wireframe-app .button.small{min-height:32px}
}

/* Consistent interaction feedback across customer and provider screens. */
:root{
  --cds-duration-fast-01:70ms;
  --cds-duration-fast-02:110ms;
  --cds-duration-moderate-01:150ms;
  --cds-motion-standard:cubic-bezier(.2,0,.38,.9);
}

button,a,[role="button"],select,input,textarea{
  -webkit-tap-highlight-color:transparent;
}

.exact-wireframe-app .button,
.exact-wireframe-app .wire-main button,
.exact-wireframe-app .wire-iconbtn,
.exact-wireframe-app .customer-year-tab,
.exact-wireframe-app .customer-download,
.exact-wireframe-app .activity-file-download,
.exact-wireframe-app .customer-requirement-files button,
.exact-wireframe-app .requirement-upload-option,
.exact-wireframe-app .wire-project,
.exact-wireframe-app .customer-project-card,
.exact-wireframe-app .dashboard-attention-item,
.exact-wireframe-app .dashboard-recent-item,
.exact-wireframe-app .customer-activity-row{
  transition:background-color var(--cds-duration-fast-02) var(--cds-motion-standard),
    color var(--cds-duration-fast-02) var(--cds-motion-standard),
    border-color var(--cds-duration-fast-02) var(--cds-motion-standard),
    box-shadow var(--cds-duration-fast-02) var(--cds-motion-standard),
    outline-color var(--cds-duration-fast-02) var(--cds-motion-standard);
}

.exact-wireframe-app .button{box-shadow:none;transform:none;cursor:pointer}
.exact-wireframe-app .button:not(:disabled):hover{box-shadow:none;transform:none}
.exact-wireframe-app .button:not(:disabled):active{background:var(--cds-layer-selected-01);box-shadow:inset 0 1px 2px rgba(0,0,0,.18);transform:none}
.exact-wireframe-app .button.primary:not(:disabled):active{background:var(--cds-active-primary);box-shadow:inset 0 1px 2px rgba(0,0,0,.24)}
.exact-wireframe-app .button:disabled{cursor:not-allowed;opacity:.48;box-shadow:none;transform:none}
.exact-wireframe-app .button.delete-activity:not(:disabled):hover{background:#fff1f1;color:var(--cds-support-error)}
.exact-wireframe-app .button.delete-activity:not(:disabled):active{background:#ffe0e0}

.exact-wireframe-app .wire-main button{transition:background-color var(--cds-duration-fast-02) var(--cds-motion-standard),color var(--cds-duration-fast-02) var(--cds-motion-standard)}
.exact-wireframe-app .wire-main button:active{background:var(--cds-layer-selected-01)}
.exact-wireframe-app .customer-project-card:hover,
.exact-wireframe-app .wire-project:hover,
.exact-wireframe-app .dashboard-attention-item:hover,
.exact-wireframe-app .dashboard-recent-item:hover{transform:none;box-shadow:none}
.exact-wireframe-app .customer-activity-row:hover{padding-left:20px}
.exact-wireframe-app .customer-year-tab:hover{box-shadow:inset 0 0 0 1px var(--cds-interactive)}
.exact-wireframe-app .customer-year-tab{border-radius:0}
.exact-wireframe-app .customer-download:active,
.exact-wireframe-app .activity-file-download:active{background:var(--cds-layer-selected-01)}
.exact-wireframe-app .provider-project-filter select{height:40px;min-height:40px;border:0;border-bottom:1px solid var(--cds-border-strong-01);border-radius:0;background:var(--cds-layer-02);padding:10px 12px}
.exact-wireframe-app .provider-project-filter select:focus{border-color:var(--cds-focus);box-shadow:inset 0 -2px 0 var(--cds-focus);outline:0}

.exact-wireframe-app :is(input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),textarea,select){transition:background-color var(--cds-duration-fast-02) var(--cds-motion-standard),border-color var(--cds-duration-fast-02) var(--cds-motion-standard),box-shadow var(--cds-duration-fast-02) var(--cds-motion-standard)}
.exact-wireframe-app :is(input[type="checkbox"],input[type="radio"]){cursor:pointer}
.exact-wireframe-app input[type="file"]::file-selector-button{min-height:32px;margin:0 10px 0 0;padding:0 12px;border:0;background:#e0e0e0;color:var(--cds-text-primary);font:inherit;font-size:12px;font-weight:600;cursor:pointer;transition:background-color var(--cds-duration-fast-02) var(--cds-motion-standard)}
.exact-wireframe-app input[type="file"]::file-selector-button:hover{background:#c6c6c6}
.exact-wireframe-app :is(input,textarea,select)[aria-invalid="true"]{border-bottom:2px solid var(--cds-support-error)}
.exact-wireframe-app :is(input,textarea,select):disabled{cursor:not-allowed}

.exact-wireframe-app :is(.customer-comment-list,.challenge-remarks-list,.customer-subactivity-list,.requirement-upload-file-list,.requirement-upload-options){scrollbar-color:#a8a8a8 transparent;scrollbar-width:thin}
.exact-wireframe-app :is(button,a,input,textarea,select):focus-visible{outline:2px solid var(--cds-focus);outline-offset:2px}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* Customer activity-file upload: clear two-step layout for selecting files
   and linking each file to one or more requirements. */
.exact-wireframe-app .activity-upload-modal{
  width:min(680px,calc(100vw - 32px));
  max-height:calc(100vh - 32px);
  padding:24px;
}
.exact-wireframe-app .activity-upload-modal .card-heading{
  align-items:flex-start;
  gap:18px;
  margin-bottom:20px;
}
.exact-wireframe-app .activity-upload-modal .card-heading p{
  max-width:510px;
  line-height:1.5;
}
.exact-wireframe-app .activity-upload-modal .form{
  display:grid;
  gap:18px;
}
.exact-wireframe-app .activity-upload-modal .form>label{
  display:grid;
  gap:8px;
  margin:0;
}
.exact-wireframe-app .activity-upload-modal input[type=file]{
  width:100%;
  min-height:44px;
  box-sizing:border-box;
  padding:5px 8px;
  background:var(--cds-layer-01);
}
.exact-wireframe-app .activity-upload-modal .requirement-upload-fieldset{
  min-width:0;
  margin:0;
  padding:16px;
  border:1px solid var(--cds-border-subtle-01);
  background:var(--cds-layer-01);
}
.exact-wireframe-app .activity-upload-modal .requirement-upload-fieldset legend{
  padding:0 6px;
  color:var(--cds-text-primary);
  font-size:13px;
  line-height:1.4;
}
.exact-wireframe-app .activity-upload-modal .requirement-upload-file-list{
  display:grid;
  gap:12px;
  max-height:300px;
  margin:4px 0 10px;
  padding-right:4px;
  overflow:auto;
}
.exact-wireframe-app .activity-upload-modal .requirement-upload-file{
  display:grid;
  gap:10px;
  min-width:0;
  padding:12px;
  border:1px solid var(--cds-border-subtle-01);
  background:var(--cds-layer-01);
}
.exact-wireframe-app .activity-upload-modal .requirement-upload-file>strong{
  display:block;
  min-width:0;
  overflow:hidden;
  color:var(--cds-text-primary);
  font-size:13px;
  line-height:1.4;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.exact-wireframe-app .activity-upload-modal .requirement-upload-options{
  display:grid;
  gap:8px;
  max-height:180px;
  margin:0;
  padding:2px;
  overflow:auto;
}
.exact-wireframe-app .activity-upload-modal .requirement-upload-option{
  display:grid;
  grid-template-columns:20px minmax(0,1fr);
  align-items:start;
  gap:10px;
  min-height:48px;
  box-sizing:border-box;
  padding:10px 12px;
  border:1px solid var(--cds-border-subtle-01);
  background:var(--cds-layer-01);
}
.exact-wireframe-app .activity-upload-modal .requirement-upload-option input{
  width:18px;
  height:18px;
  margin:2px 0 0;
}
.exact-wireframe-app .activity-upload-modal .requirement-upload-option span{
  display:grid;
  min-width:0;
  gap:4px;
}
.exact-wireframe-app .activity-upload-modal .requirement-upload-option b{
  overflow-wrap:anywhere;
  font-size:13px;
  line-height:1.35;
}
.exact-wireframe-app .activity-upload-modal .requirement-upload-option small{
  color:var(--cds-text-secondary);
  font-size:11px;
  line-height:1.35;
}
.exact-wireframe-app .activity-upload-modal .modal-actions{
  display:flex;
  justify-content:flex-end;
  gap:10px;
  margin-top:0;
  padding-top:18px;
}
@media(max-width:600px){
  .exact-wireframe-app .activity-upload-modal{padding:20px}
  .exact-wireframe-app .activity-upload-modal .modal-actions{flex-direction:column-reverse}
  .exact-wireframe-app .activity-upload-modal .modal-actions .button{width:100%}
}

/* The base form rule gives every input generous padding. Reset checkbox
   dimensions explicitly so the native control stays compact and aligned. */
.activity-upload-modal .requirement-upload-option{
  display:grid!important;
  grid-template-columns:18px minmax(0,1fr)!important;
  align-items:start!important;
}
.activity-upload-modal .requirement-upload-option input[type="checkbox"]{
  appearance:auto!important;
  box-sizing:border-box!important;
  width:16px!important;
  min-width:16px!important;
  max-width:16px!important;
  height:16px!important;
  min-height:16px!important;
  margin:2px 0 0!important;
  padding:0!important;
  border:0!important;
  box-shadow:none!important;
}
.activity-upload-modal .requirement-upload-option span{min-width:0!important;text-align:left!important}

/* Compact Carbon-style access switch used in the user administration row. */
.overview-access-control{
  position:relative;
  display:inline-flex!important;
  grid-template-columns:none!important;
  flex-direction:row!important;
  align-items:center!important;
  gap:8px!important;
  min-height:32px;
  margin:0;
  color:var(--cds-text-secondary);
  font-size:12px;
  font-weight:600;
  cursor:pointer;
}
.overview-access-input{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  margin:-1px!important;
  padding:0!important;
  overflow:hidden!important;
  clip:rect(0 0 0 0)!important;
  white-space:nowrap!important;
  border:0!important;
}
.overview-access-track{
  position:relative;
  display:inline-flex!important;
  align-items:center;
  width:32px;
  height:18px;
  padding:2px;
  box-sizing:border-box;
  border:1px solid #6f6f6f;
  border-radius:999px;
  background:#8d8d8d;
  transition:background-color .15s ease,border-color .15s ease;
}
.overview-access-track>span{
  width:12px;
  height:12px;
  border-radius:50%;
  background:#fff;
  transition:transform .15s ease,background-color .15s ease;
}
.overview-access-input:checked+.overview-access-track{
  border-color:var(--cds-interactive);
  background:var(--cds-interactive);
}
.overview-access-input:checked+.overview-access-track>span{
  transform:translateX(14px);
  background:#fff;
}
.overview-access-input:focus-visible+.overview-access-track{
  outline:2px solid var(--cds-focus);
  outline-offset:2px;
}
.overview-access-input:disabled+.overview-access-track{opacity:.55;cursor:wait}
