/* SignCrew 공용 스타일가이드 — v1 토큰 + 컴포넌트. 모든 화면이 이 파일을 링크한다. */
/* =========================================================================
   SignCrew UI Standard v1  —  Design Tokens (디자인 토큰)
   레퍼런스: IBM Carbon (간격·위계) + Atlassian (상태·do/don't)
   이 :root 블록이 유일한 진실의 원천(single source of truth).
   모든 화면은 여기 토큰만 참조한다. 하드코딩 색상·px 금지.
   ========================================================================= */
:root {
  /* --- 팔레트: 브랜드(Brand) --- */
  --sc-ink:        #16202C;  /* 딥 네이비-차콜. 최상위 텍스트·헤더 */
  --sc-signal:     #0F5FD8;  /* SignCrew primary. 신뢰·주요 액션 */
  --sc-signal-700: #0B47A3;  /* primary hover/press */
  --sc-signal-100: #E3EDFC;  /* primary 연한 배경 */
  --sc-beacon:     #F5A524;  /* 앰버. 경과 임박·주의(현장 안전색) */
  --sc-beacon-100: #FDF0D9;
  --sc-verdigris:  #0E9E8A;  /* 틸그린. 완료·확정(동판 녹청) */
  --sc-verdigris-100:#DBF3EF;

  /* --- 팔레트: 중립(Neutral) 스케일 --- */
  --sc-paper:   #FFFFFF;
  --sc-fog:     #F2F4F7;  /* 페이지 배경 */
  --sc-cloud:   #F8FAFC;  /* 카드 내부 강조 배경 */
  --sc-border:  #E4E7EC;  /* 기본 보더 */
  --sc-border-strong:#CDD3DC;
  --sc-steel:   #667085;  /* 보조 텍스트 */
  --sc-slate:   #344054;  /* 본문 텍스트 */

  /* --- 시맨틱: 상태(Status) --- */
  --sc-success: #12805C;  --sc-success-bg:#DCF5EC;
  --sc-warning: #B75B00;  --sc-warning-bg:#FDF0D9;
  --sc-danger:  #C0392B;  --sc-danger-bg: #FBE5E3;
  --sc-info:    #0F5FD8;  --sc-info-bg:   #E3EDFC;

  /* --- 오더 라이프사이클 상태색 (SignCrew 핵심) --- */
  --sc-st-open:   #0F5FD8;  --sc-st-open-bg:  #E3EDFC;  /* 공고중 */
  --sc-st-held:   #6941C6;  --sc-st-held-bg:  #EDE7FA;  /* 찜(예약) */
  --sc-st-expire: #B75B00;  --sc-st-expire-bg:#FDF0D9;  /* 경과 임박 */
  --sc-st-inhouse:#0E7C8C;  --sc-st-inhouse-bg:#DBF0F3; /* 자사 인수 */
  --sc-st-done:   #12805C;  --sc-st-done-bg:  #DCF5EC;  /* 완료 */
  --sc-st-cancel: #667085;  --sc-st-cancel-bg:#EEF0F3;  /* 취소 */

  /* --- 타이포 스케일 (Type scale) --- */
  --sc-font: "Pretendard","Pretendard Variable",-apple-system,BlinkMacSystemFont,
             "Segoe UI","Malgun Gothic",sans-serif;
  --sc-mono: "JetBrains Mono","SFMono-Regular",Consolas,"Liberation Mono",monospace;
  /* 2026-08-15 데모 피드백: 전반 폰트 확대 (토큰 일괄 상향) */
  --sc-fs-display: 36px; --sc-lh-display: 46px; --sc-fw-display: 700;
  --sc-fs-h1:  30px; --sc-lh-h1: 40px; --sc-fw-h1: 700;
  --sc-fs-h2:  24px; --sc-lh-h2: 33px; --sc-fw-h2: 600;
  --sc-fs-h3:  20px; --sc-lh-h3: 29px; --sc-fw-h3: 600;
  --sc-fs-body:18px; --sc-lh-body:29px; --sc-fw-body:400;
  --sc-fs-sm:  16px; --sc-lh-sm: 24px;
  --sc-fs-cap: 14px; --sc-lh-cap: 21px;  /* 캡션·라벨 */

  /* --- 간격 스케일 (Spacing, Carbon식 4px 배수. 이 값 외 사용 금지) --- */
  --sc-sp-1: 4px;   --sc-sp-2: 8px;   --sc-sp-3: 12px;
  --sc-sp-4: 16px;  --sc-sp-5: 24px;  --sc-sp-6: 32px;
  --sc-sp-7: 40px;  --sc-sp-8: 48px;  --sc-sp-9: 64px;

  /* --- 반경(Radius) --- */
  --sc-r-sm: 4px; --sc-r-md: 8px; --sc-r-lg: 12px; --sc-r-pill: 999px;

  /* --- 그림자(Elevation) --- */
  --sc-e1: 0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.10);
  --sc-e2: 0 4px 8px rgba(16,24,40,.06), 0 2px 4px rgba(16,24,40,.06);
  --sc-e3: 0 12px 24px rgba(16,24,40,.10);

  /* --- 레이아웃 --- */
  --sc-container: 1200px;
  --sc-sidebar: 240px;
  --sc-focus: 0 0 0 3px rgba(15,95,216,.35);  /* 키보드 포커스 링 */
}

/* =========================================================================
   Reset & Base
   ========================================================================= */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:var(--sc-font);
  font-size:var(--sc-fs-body); line-height:var(--sc-lh-body);
  color:var(--sc-slate); background:var(--sc-fog);
  -webkit-font-smoothing:antialiased;
}
a{color:var(--sc-signal);text-decoration:none}
a:hover{text-decoration:underline}
code,kbd{font-family:var(--sc-mono)}
:focus-visible{outline:none;box-shadow:var(--sc-focus);border-radius:var(--sc-r-sm)}

/* ============ SignCrew COMPONENT LIBRARY (표준이 정의하는 실제 컴포넌트) ============ */
/* Buttons */
.btn{font-family:inherit;font-size:var(--sc-fs-body);font-weight:600;line-height:1;
  border-radius:var(--sc-r-md);border:1px solid transparent;cursor:pointer;
  padding:10px var(--sc-sp-4);display:inline-flex;align-items:center;gap:var(--sc-sp-2);
  transition:background .12s,border-color .12s}
.btn--primary{background:var(--sc-signal);color:var(--sc-paper)}
.btn--primary:hover{background:var(--sc-signal-700)}
.btn--secondary{background:var(--sc-paper);color:var(--sc-slate);border-color:var(--sc-border-strong)}
.btn--secondary:hover{background:var(--sc-fog)}
.btn--ghost{background:transparent;color:var(--sc-signal)}
.btn--ghost:hover{background:var(--sc-signal-100)}
.btn--danger{background:var(--sc-danger);color:var(--sc-paper)}
.btn--danger:hover{filter:brightness(.93)}
.btn--sm{padding:6px var(--sc-sp-3);font-size:var(--sc-fs-sm)}
.btn--lg{padding:13px var(--sc-sp-5);font-size:var(--sc-fs-h3)}
.btn:disabled{opacity:.45;cursor:not-allowed}

/* Form fields */
.field{display:flex;flex-direction:column;gap:6px;max-width:360px}
.field__label{font-size:var(--sc-fs-sm);font-weight:600;color:var(--sc-ink)}
.field__label .req{color:var(--sc-danger)}
.input,.select,.textarea{font-family:inherit;font-size:var(--sc-fs-body);color:var(--sc-slate);
  padding:10px var(--sc-sp-3);border:1px solid var(--sc-border-strong);
  border-radius:var(--sc-r-md);background:var(--sc-paper);width:100%}
.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--sc-signal);box-shadow:var(--sc-focus)}
.field--error .input{border-color:var(--sc-danger)}
.field__hint{font-size:var(--sc-fs-cap);color:var(--sc-steel)}
.field__err{font-size:var(--sc-fs-cap);color:var(--sc-danger);display:flex;gap:4px;align-items:center}

/* Status badge */
.badge{display:inline-flex;align-items:center;gap:6px;font-size:var(--sc-fs-cap);
  font-weight:600;padding:3px 10px;border-radius:var(--sc-r-pill);line-height:1.4}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.badge--open{color:var(--sc-st-open);background:var(--sc-st-open-bg)}
.badge--held{color:var(--sc-st-held);background:var(--sc-st-held-bg)}
.badge--expire{color:var(--sc-st-expire);background:var(--sc-st-expire-bg)}
.badge--inhouse{color:var(--sc-st-inhouse);background:var(--sc-st-inhouse-bg)}
.badge--done{color:var(--sc-st-done);background:var(--sc-st-done-bg)}
.badge--cancel{color:var(--sc-st-cancel);background:var(--sc-st-cancel-bg)}

/* Data card */
.dcard{background:var(--sc-paper);border:1px solid var(--sc-border);border-radius:var(--sc-r-lg);
  padding:var(--sc-sp-4);box-shadow:var(--sc-e1)}
.dcard__top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--sc-sp-3)}
.dcard__title{font-weight:600;color:var(--sc-ink);font-size:var(--sc-fs-h3)}
.dcard__meta{font-size:var(--sc-fs-cap);color:var(--sc-steel);margin-top:2px}
.dcard__row{display:flex;justify-content:space-between;font-size:var(--sc-fs-sm);
  padding:6px 0;border-top:1px solid var(--sc-border)}
.dcard__row span:first-child{color:var(--sc-steel)}

/* Data table */
.dtable{width:100%;border-collapse:collapse;font-size:var(--sc-fs-sm);background:var(--sc-paper);
  border:1px solid var(--sc-border);border-radius:var(--sc-r-lg);overflow:hidden}
.dtable th{background:var(--sc-fog);text-align:left;padding:var(--sc-sp-3) var(--sc-sp-4);
  font-size:var(--sc-fs-cap);text-transform:uppercase;letter-spacing:.04em;color:var(--sc-steel);font-weight:600}
.dtable td{padding:var(--sc-sp-3) var(--sc-sp-4);border-top:1px solid var(--sc-border);color:var(--sc-slate)}
.dtable tbody tr:hover{background:var(--sc-cloud)}
.dtable .num{text-align:right;font-variant-numeric:tabular-nums}

/* Inline alert */
.alert{display:flex;gap:var(--sc-sp-3);padding:var(--sc-sp-3) var(--sc-sp-4);
  border-radius:var(--sc-r-md);border:1px solid;font-size:var(--sc-fs-sm)}
.alert__icon{font-weight:800;flex:none}
.alert--info{background:var(--sc-info-bg);border-color:var(--sc-info-bg);color:var(--sc-signal-700)}
.alert--success{background:var(--sc-success-bg);border-color:var(--sc-success-bg);color:var(--sc-success)}
.alert--warning{background:var(--sc-warning-bg);border-color:var(--sc-warning-bg);color:var(--sc-warning)}
.alert--danger{background:var(--sc-danger-bg);border-color:var(--sc-danger-bg);color:var(--sc-danger)}

/* Tabs */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--sc-border)}
.tab{padding:10px var(--sc-sp-4);font-size:var(--sc-fs-sm);font-weight:600;color:var(--sc-steel);
  border-bottom:2px solid transparent;cursor:pointer;background:none;border-top:none;border-left:none;border-right:none}
.tab.active{color:var(--sc-signal);border-bottom-color:var(--sc-signal)}

/* Empty / loading */
.empty{text-align:center;padding:var(--sc-sp-8);color:var(--sc-steel)}
.empty__ico{font-size:32px;margin-bottom:var(--sc-sp-3);opacity:.5}
.empty__title{font-weight:600;color:var(--sc-ink);margin-bottom:4px}
.skel{height:14px;border-radius:var(--sc-r-sm);
  background:linear-gradient(90deg,var(--sc-fog) 25%,var(--sc-border) 37%,var(--sc-fog) 63%);
  background-size:400% 100%;animation:skel 1.3s ease infinite}
@keyframes skel{0%{background-position:100% 0}100%{background-position:-100% 0}}

/* lifecycle rail (signature) */
.rail{display:flex;align-items:stretch;gap:0;flex-wrap:wrap}
.rail__step{flex:1;min-width:120px;position:relative;padding:var(--sc-sp-3) var(--sc-sp-4);
  background:var(--sc-paper);border:1px solid var(--sc-border);border-right:none}
.rail__step:first-child{border-radius:var(--sc-r-md) 0 0 var(--sc-r-md)}
.rail__step:last-child{border-right:1px solid var(--sc-border);border-radius:0 var(--sc-r-md) var(--sc-r-md) 0}
.rail__step::after{content:"";position:absolute;right:-8px;top:50%;transform:translateY(-50%) rotate(45deg);
  width:14px;height:14px;background:var(--sc-paper);border-top:1px solid var(--sc-border);
  border-right:1px solid var(--sc-border);z-index:2}
.rail__step:last-child::after{display:none}
.rail__k{font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--sc-steel);font-weight:700}
.rail__t{font-size:var(--sc-fs-sm);color:var(--sc-ink);font-weight:600;margin-top:2px}
.rail__d{font-size:var(--sc-fs-cap);color:var(--sc-steel);margin-top:4px;line-height:1.5}
.rail__step[data-tone="open"]{border-top:3px solid var(--sc-st-open)}
.rail__step[data-tone="held"]{border-top:3px solid var(--sc-st-held)}
.rail__step[data-tone="expire"]{border-top:3px solid var(--sc-st-expire)}
.rail__step[data-tone="inhouse"]{border-top:3px solid var(--sc-st-inhouse)}
.rail__step[data-tone="done"]{border-top:3px solid var(--sc-st-done)}
@media(max-width:760px){.rail__step{border-right:1px solid var(--sc-border)!important}
  .rail__step::after{display:none}}

/* term table */
.terms td.bad{color:var(--sc-danger)}
.terms td.good{color:var(--sc-success);font-weight:600}

/* checklist */
.check{list-style:none;display:flex;flex-direction:column;gap:var(--sc-sp-2)}
.check li{display:flex;gap:var(--sc-sp-3);align-items:flex-start;font-size:var(--sc-fs-sm)}
.check li::before{content:"✓";color:var(--sc-verdigris);font-weight:800;flex:none;
  width:20px;height:20px;background:var(--sc-verdigris-100);border-radius:var(--sc-r-sm);
  display:grid;place-items:center;font-size:12px}

.pill-row{display:flex;gap:var(--sc-sp-2);flex-wrap:wrap}
.tag{font-size:var(--sc-fs-cap);color:var(--sc-slate);background:var(--sc-fog);
  border:1px solid var(--sc-border);padding:2px 8px;border-radius:var(--sc-r-pill)}


/* M2449 semantic ui token bridge: record_file_id=114 ?? dark, semantic token-only selectors. */
:root,
:root[data-theme="light"]{
  --ui-bg:var(--sc-fog);
  --ui-surface:var(--sc-paper);
  --ui-surface-2:var(--sc-cloud);
  --ui-text:var(--sc-slate);
  --ui-text-muted:var(--sc-steel);
  --ui-border:var(--sc-border);
  --ui-accent:var(--sc-signal);
  --ui-danger:var(--sc-danger);
  --ui-warning:var(--sc-warning);
  --ui-success:var(--sc-success);
}
:root[data-theme="dark"]{
  --ui-bg:#101828;
  --ui-surface:#182230;
  --ui-surface-2:#202b3c;
  --ui-text:#f2f4f7;
  --ui-text-muted:#98a2b3;
  --ui-border:#344054;
  --ui-accent:#84caff;
  --ui-danger:#f97066;
  --ui-warning:#fdb022;
  --ui-success:#32d583;
  --sc-paper:var(--ui-surface);
  --sc-fog:var(--ui-bg);
  --sc-cloud:var(--ui-surface-2);
  --sc-border:var(--ui-border);
  --sc-border-strong:var(--ui-border);
  --sc-slate:var(--ui-text);
  --sc-steel:var(--ui-text-muted);
  --sc-ink:var(--ui-text);
  --sc-signal:var(--ui-accent);
  --sc-signal-700:var(--ui-accent);
  --sc-signal-100:var(--ui-surface-2);
  --sc-success:var(--ui-success);
  --sc-success-bg:var(--ui-surface-2);
  --sc-warning:var(--ui-warning);
  --sc-warning-bg:var(--ui-surface-2);
  --sc-danger:var(--ui-danger);
  --sc-danger-bg:var(--ui-surface-2);
  --sc-info:var(--ui-accent);
  --sc-info-bg:var(--ui-surface-2);
}

/* M2460 participation flow: semantic-token-only layout additions. */
.participation-row td{background:var(--ui-surface-2);}
.participation-list{display:flex;flex-direction:column;gap:var(--sc-sp-3);}
.participation-card{display:flex;justify-content:space-between;align-items:center;gap:var(--sc-sp-4);padding:var(--sc-sp-3);border:1px solid var(--ui-border);border-radius:var(--sc-r-md);background:var(--ui-surface);}
.participation-card__meta{font-size:var(--sc-fs-cap);color:var(--ui-text-muted);margin-top:4px;}
.posting-detail__head-actions{display:flex;gap:var(--sc-sp-2);align-items:center;}
@media(max-width:760px){.participation-card{align-items:flex-start;flex-direction:column}.participation-card .pill-row{width:100%}}

/* SuperUser bid simulator */
.simulator-head{background:linear-gradient(125deg,var(--sc-ink),#173b68);color:#fff;border-radius:var(--sc-r-lg);padding:28px}.simulator-head .page__sub,.simulator-head p{color:#bfdbfe}.simulator-badge{display:flex;flex-direction:column;align-items:flex-end}.simulator-badge strong{font-size:24px}.simulator-badge span{font-size:13px;color:#bfdbfe}.simulator-notice{display:flex;justify-content:space-between;align-items:center;margin:16px 0}.simulator-notice div{display:flex;flex-direction:column;gap:4px}.simulator-notice span,.simulator-notice small{color:var(--ui-text-muted)}.simulator-layout{display:grid;grid-template-columns:minmax(300px,390px) minmax(0,1fr);gap:18px;align-items:start}.simulator-controls{position:sticky;top:72px}.simulator-section-title{display:flex;gap:12px;margin:4px 0 16px}.simulator-section-title>span{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--sc-signal);color:#fff;font-weight:800}.simulator-section-title h2,.simulator-chart-head h2,.simulator-scenarios h2{margin:0}.simulator-section-title p,.simulator-chart-head p{margin:3px 0 0;color:var(--ui-text-muted);font-size:12px}.simulator-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:24px}.simulator-fields label{font-size:12px;font-weight:700;color:var(--ui-text-muted)}.simulator-fields .input{margin-top:6px}.simulator-actions{display:flex;justify-content:flex-end;gap:8px}.simulator-error{color:var(--ui-danger);font-weight:700}.simulator-results{display:flex;flex-direction:column;gap:16px}.simulator-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.simulator-kpis article{display:flex;flex-direction:column;gap:7px}.simulator-kpis span,.simulator-kpis small{color:var(--ui-text-muted);font-size:12px}.simulator-kpis strong{font-size:21px}.sim-positive{color:var(--ui-success)}.sim-negative{color:var(--ui-danger)}.simulator-chart-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.simulator-chart-card canvas{width:100%;height:300px}.scenario-rows{display:flex;flex-direction:column;margin-top:14px}.scenario-row{display:grid;grid-template-columns:1fr 1.2fr 1.2fr 1.2fr;gap:10px;padding:13px;border-top:1px solid var(--ui-border);font-size:13px}.simulator-compliance{margin-top:18px;border-left:4px solid var(--sc-signal)}.simulator-compliance p{margin:6px 0 0;color:var(--ui-text-muted);line-height:1.65}.badge--success{background:var(--sc-success-bg);color:var(--sc-success)}.badge--warning{background:var(--sc-warning-bg);color:var(--sc-warning)}.badge--danger{background:var(--sc-danger-bg);color:var(--sc-danger)}
@media(max-width:1100px){.simulator-layout{grid-template-columns:1fr}.simulator-controls{position:static}.simulator-kpis{grid-template-columns:1fr 1fr}}@media(max-width:650px){.simulator-fields,.simulator-kpis{grid-template-columns:1fr}.scenario-row{grid-template-columns:1fr 1fr}.simulator-badge{align-items:flex-start}.simulator-head{align-items:flex-start;gap:16px}}
