/* Compact operations console. Local system fonts; no runtime design dependencies. */
:root {
  --ink:#262626;
  --muted:#5b5b5b;
  --line:#d6d6d6;
  --soft:#f4f4f4;
  --paper:#fff;
  --blue:#0f62fe;
  --danger:#a2191f;
  --radius:2px;
}
* { box-sizing:border-box; }
body {
  margin:0;
  color:var(--ink);
  background:var(--paper);
  font:13px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI","Apple SD Gothic Neo","Malgun Gothic",sans-serif;
}
a { color:#0043ce; text-decoration:none; }
a:hover { text-decoration:underline; }
button,input,select,textarea { font:inherit; }
button { cursor:pointer; }
a,button,input,select,textarea,summary { outline-offset:2px; }
:focus-visible { outline:2px solid var(--blue); }
h1,h2,h3,p { margin:0; }
h1 { font-size:22px; line-height:1.3; font-weight:600; }
h2 { font-size:14px; line-height:1.4; font-weight:600; }
h3 { font-size:13px; font-weight:600; }
strong { font-weight:600; }
small { font-size:12px; }
code,pre { font:12px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace; }
code { overflow-wrap:anywhere; }
ul { padding-left:20px; }
hr { border:0; border-top:1px solid var(--line); }
form { margin:0; }
.visually-hidden {
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}
.skip-link { position:fixed; top:-60px; left:8px; z-index:100; padding:8px 12px; background:white; border:2px solid var(--blue); }
.skip-link:focus { top:8px; }
.app-shell { display:grid; grid-template-columns:176px minmax(0,1fr); min-height:100vh; }
.sidebar { background:var(--soft); border-right:1px solid var(--line); position:sticky; top:0; height:100vh; }
.brand { display:flex; align-items:center; height:44px; padding:0 16px; color:var(--ink); font-weight:600; border-bottom:1px solid var(--line); }
.brand:hover { text-decoration:none; }
.main-nav { display:grid; padding:12px 0; }
.main-nav>a { color:var(--ink); padding:9px 13px; border-left:3px solid transparent; }
.main-nav>a:hover { background:#e8e8e8; text-decoration:none; }
.main-nav>a.active { border-left-color:var(--blue); background:#e0e0e0; font-weight:600; }
.main-shell { min-width:0; }
.topbar { display:flex; align-items:center; justify-content:space-between; min-height:44px; padding:0 16px; gap:12px; border-bottom:1px solid var(--line); background:white; }
.breadcrumb { color:var(--muted); font-size:12px; }
.identity { display:flex; align-items:center; gap:10px; font-size:12px; min-width:0; }
.identity-name { max-width:180px; text-overflow:ellipsis; overflow:hidden; white-space:nowrap; }
.logout-button { border:1px solid #b8b8b8; border-radius:var(--radius); padding:4px 8px; background:white; color:var(--ink); font-size:12px; }
.logout-button:hover { background:var(--soft); }
main#main-content { padding:16px; max-width:1800px; margin:0 auto; outline:none; }
.page-heading { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:12px; min-height:32px; }
.subtitle { color:var(--muted); font-size:12px; margin-top:5px; }
.record-id { color:var(--muted); font-size:12px; margin-bottom:4px; }
.button { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:32px; padding:5px 12px; border:1px solid transparent; border-radius:var(--radius); font-size:13px; line-height:1.4; white-space:nowrap; }
.button:hover { text-decoration:none; }
.button.primary { color:#fff; background:var(--blue); }
.button.primary:hover { background:#0353e9; }
.button.secondary { color:#393939; background:white; border-color:#a8a8a8; }
.button.secondary:hover { background:#e8e8e8; }
.button.small { min-height:28px; padding:3px 9px; font-size:12px; }
.button.danger { color:var(--danger); border-color:#da1e28; }
.button.danger:hover { background:#fff1f1; }
.text-link { color:#0043ce; font-size:13px; }
.summary-strip { display:flex; flex-wrap:wrap; gap:0; margin-bottom:12px; border:1px solid var(--line); background:var(--soft); }
.summary-strip>a,.summary-strip>span { padding:8px 14px; color:var(--ink); border-right:1px solid var(--line); }
.summary-strip strong { margin-left:8px; }
.summary-strip>a:hover { background:#e8e8e8; text-decoration:none; }
.panel { border:1px solid var(--line); border-radius:var(--radius); background:var(--paper); margin-bottom:16px; min-width:0; overflow:hidden; }
.panel-header { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:9px 12px; min-height:40px; border-bottom:1px solid var(--line); background:var(--soft); }
.panel-intro { padding:8px 12px; color:var(--muted); font-size:12px; border-bottom:1px solid var(--line); }
/* Keep absolute screen-reader labels inside the table's scroll container. */
.table-scroll { position:relative; overflow-x:auto; max-width:100%; }
table { width:100%; border-collapse:collapse; text-align:left; font-size:13px; }
th,td { padding:8px 10px; border-bottom:1px solid #e0e0e0; vertical-align:middle; line-height:1.35; }
th { background:#e8e8e8; color:#393939; font-size:12px; font-weight:600; white-space:nowrap; height:36px; }
td { height:36px; }
tbody tr:last-child td { border-bottom:0; }
tbody tr:nth-child(even) { background:#fafafa; }
tbody tr:hover { background:#edf5ff; }
.table-primary { font-weight:600; }
.server-table td { white-space:nowrap; }
.cell-secondary { display:block; color:var(--muted); font-size:12px; margin-top:2px; max-width:300px; overflow-wrap:anywhere; }
.cell-secondary a { color:#0043ce; }
.target-tags { display:flex; flex-wrap:wrap; gap:4px; }
.tag { display:inline-block; background:#f4f4f4; border:1px solid #d6d6d6; border-radius:2px; color:#525252; padding:1px 5px; font-size:12px; white-space:nowrap; }
.badge { display:inline-flex; align-items:center; padding:2px 6px; font-size:12px; line-height:1.3; border:1px solid transparent; border-radius:2px; white-space:nowrap; vertical-align:middle; }
.badge.success { background:#defbe6; color:#0e6027; border-color:#a7f0ba; }
.badge.info { background:#edf5ff; color:#0043ce; border-color:#a6c8ff; }
.badge.warning { background:#fff1c7; color:#684e00; border-color:#e8ca69; }
.badge.danger { background:#fff1f1; color:#a2191f; border-color:#ffb3b8; }
.badge.neutral { background:#f4f4f4; color:#525252; border-color:#c6c6c6; }
h1>.badge { margin-left:6px; font-weight:400; }
.muted,.small-label,.small-text,.footnote { color:var(--muted); }
.small-label,.small-text,.footnote { font-size:12px; }
.nowrap { white-space:nowrap; }
.numeric { text-align:right; font-variant-numeric:tabular-nums; }
.text-danger { color:var(--danger); }
.count-label { font-size:13px; color:var(--muted); }
.footnote { margin:8px 0 16px; }
.notice { padding:9px 12px; border:1px solid #a7d5b1; border-left:3px solid #198038; background:#f5fff7; color:#0e6027; border-radius:var(--radius); margin-bottom:10px; font-size:13px; }
.notice.error { background:#fff1f1; border-color:#ffb3b8; border-left-color:#da1e28; color:#a2191f; }
.notice.warning { background:#fff8e1; border-color:#e6d49c; border-left-color:#b28600; color:#684e00; }
.notice p { margin-top:3px; font-size:12px; }
.notice ul { margin:6px 0 0; }
.notice a:not(.button) { text-decoration:underline; }
.registry-notice,.inline-notice { display:flex; align-items:center; gap:6px 12px; flex-wrap:wrap; }
.registry-notice strong { font-weight:600; }
.inline-notice>.button { margin-left:auto; }
.empty-state { padding:20px 12px; text-align:left; }
.empty-state p { margin:4px 0 10px; color:var(--muted); font-size:13px; }
.empty-state p:last-child { margin-bottom:0; }
.empty-state.small { padding:16px 12px; }
.pagination { display:flex; justify-content:flex-end; align-items:center; gap:12px; padding:6px 10px; min-height:40px; border-top:1px solid var(--line); color:var(--muted); font-size:12px; }
.filter-form { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.filter-form label { margin:0; }
.filter-form select { width:auto; min-width:120px; }
.table-toolbar { display:flex; align-items:flex-end; flex-wrap:wrap; gap:8px; padding:10px 12px; background:var(--soft); border-bottom:1px solid var(--line); }
.filter-field { min-width:100px; }
.filter-field label { margin-bottom:4px; }
.search-field { flex:1; min-width:180px; }
.table-toolbar .button { flex-shrink:0; }
.form-layout { display:grid; grid-template-columns:minmax(0,1fr) 240px; gap:16px; align-items:start; }
.request-form { min-width:0; }
.form-section { padding:16px; overflow:visible; }
.form-section>h2 { margin-bottom:12px; }
.form-section-heading { margin-bottom:14px; padding-bottom:10px; border-bottom:1px solid var(--line); }
.form-section-heading p { margin-top:3px; color:var(--muted); font-size:12px; }
.form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px 16px; }
.field { min-width:0; }
.field-wide { grid-column:1/-1; }
label,legend { display:block; font-size:12px; font-weight:600; color:#393939; margin-bottom:5px; }
.form-fieldset { margin:0; padding:0; border:0; min-width:0; }
.form-fieldset legend { padding:0; }
.required-label { color:#8c252a; font-size:11px; margin-left:4px; font-weight:400; }
.optional-label { color:var(--muted); font-size:11px; margin-left:6px; font-weight:400; }
input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea { display:block; width:100%; min-height:32px; padding:5px 8px; color:var(--ink); background:white; border:1px solid #a8a8a8; border-radius:var(--radius); line-height:1.5; font-size:13px; }
input::placeholder,textarea::placeholder { color:#6f6f6f; }
input[readonly],input:disabled,select:disabled { background:#e8e8e8; color:#525252; }
textarea { min-height:84px; resize:vertical; }
input[type=checkbox],input[type=radio] { width:16px; height:16px; accent-color:var(--blue); vertical-align:middle; margin:0 6px 0 0; }
.field>div[id],.form-fieldset>div[id] { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0 12px; }
.field>div[id]>div,.form-fieldset>div[id]>div { padding:5px 0; }
.field>div[id] label,.form-fieldset>div[id] label { margin:0; font-size:13px; font-weight:400; cursor:pointer; }
.field-help { margin-top:4px; color:var(--muted); font-size:12px; }
.field-error-message { margin-top:4px; font-size:12px; color:var(--danger); }
.field-error input,.field-error select,.field-error textarea { border-color:#da1e28; }
.mentor-required>label:after { content:"인턴 필수"; font-size:11px; color:#8c252a; margin-left:6px; font-weight:400; }
.section-divider,.guidance-divider { border-top:1px solid var(--line); margin:16px 0; }
.subsection-title { margin-bottom:10px; }
.catalog-details { margin-top:12px; padding:8px 10px; border:1px solid var(--line); background:var(--soft); }
summary { cursor:pointer; color:#0043ce; }
.catalog-item { border-top:1px solid var(--line); padding-top:8px; margin-top:8px; font-size:12px; }
.catalog-item dl { display:grid; grid-template-columns:70px minmax(0,1fr); gap:4px; margin-bottom:0; }
.catalog-item dt { color:var(--muted); }
.catalog-item dd { margin:0; overflow-wrap:anywhere; }
.form-actions { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:12px 0; }
.form-actions>span { color:var(--muted); font-size:12px; }
.form-aside { position:sticky; top:16px; }
.guidance-card { padding:14px; background:var(--soft); }
.guidance-card ul { margin:10px 0; padding-left:16px; color:var(--muted); font-size:12px; }
.guidance-card li { margin-bottom:6px; }
.guidance-card p { margin-top:6px; font-size:12px; color:var(--muted); }
.back-link { display:inline-block; margin-bottom:8px; font-size:12px; }
.progress-panel { padding:10px 12px; }
.request-progress { display:flex; list-style:none; margin:0; padding:0; gap:12px; }
.request-progress>li { display:flex; align-items:center; gap:8px; flex:1; }
.progress-dot { display:grid; place-items:center; width:22px; height:22px; background:#e0e0e0; color:#525252; font-size:12px; flex-shrink:0; }
.request-progress strong { font-size:12px; color:var(--muted); }
.request-progress small { display:block; font-size:11px; color:var(--muted); }
.request-progress .complete .progress-dot { background:#defbe6; color:#0e6027; }
.request-progress .current .progress-dot { background:var(--blue); color:white; }
.request-progress .current strong { color:#0043ce; }
.detail-grid { display:grid; grid-template-columns:minmax(0,1.4fr) minmax(280px,1fr); gap:16px; align-items:start; }
.detail-list { display:grid; grid-template-columns:110px minmax(0,1fr); gap:10px 12px; padding:14px; margin:0; }
.detail-list dt { color:var(--muted); }
.detail-list dd { margin:0; overflow-wrap:anywhere; }
.public-key { padding:8px; margin-top:8px; white-space:pre-wrap; overflow-wrap:anywhere; background:var(--soft); border:1px solid var(--line); max-width:100%; }
.detail-note { padding:12px 14px; border-top:1px solid var(--line); }
.detail-note p { margin-top:6px; }
.detail-body { padding:12px 14px; }
.detail-body h3 { margin-bottom:8px; }
.detail-body>p { margin-top:8px; font-size:12px; color:var(--muted); }
.detail-body textarea { margin-bottom:8px; }
.detail-body .button { margin-top:8px; }
.compact-list { display:grid; grid-template-columns:70px minmax(0,1fr); gap:6px; margin:0; font-size:12px; }
.compact-list dt { color:var(--muted); }
.compact-list dd { margin:0; overflow-wrap:anywhere; }
.server-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); padding:12px; gap:12px; background:var(--soft); }
.server-summary>div { min-width:0; overflow-wrap:anywhere; }
.server-summary strong { display:block; font-size:13px; margin-top:3px; }
.health-legend { display:flex; gap:12px; flex-wrap:wrap; margin:-6px 0 14px; color:var(--muted); font-size:12px; }
.health-legend>span { display:flex; align-items:center; gap:5px; }
.legend-dot { width:6px; height:6px; background:#6f6f6f; }
.legend-dot.success { background:#198038; }
.legend-dot.warning { background:#b28600; }
.legend-dot.danger { background:#da1e28; }
.full-width { width:100%; }
.login-page { display:grid; place-items:center; min-height:100vh; padding:24px; background:var(--soft); }
.login-form-card { width:100%; max-width:360px; padding:24px; border:1px solid #c6c6c6; background:white; }
.login-form-card h1 { font-size:22px; }
.login-form-card .subtitle { margin-bottom:20px; }
.login-form-card .field { margin-bottom:14px; }
.login-help { font-size:12px; color:var(--muted); margin-top:18px; }
.login-divider { text-align:center; font-size:12px; color:var(--muted); margin:12px 0; }
.error-page { display:grid; place-items:center; min-height:100vh; padding:24px; background:var(--soft); }
.error-card { max-width:480px; padding:24px; }
.error-card>p:not(.record-id) { margin:12px 0 18px; color:var(--muted); }
@media(max-width:1050px) {
  .form-layout { grid-template-columns:minmax(0,1fr); }
  .form-aside { position:static; }
  .detail-grid { grid-template-columns:minmax(0,1fr); }
  .detail-sidebar { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
  .detail-sidebar .review-panel { grid-column:1/-1; }
  .server-summary { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:700px) {
  .app-shell { display:block; }
  .sidebar { position:static; height:auto; border-right:0; border-bottom:1px solid var(--line); }
  .brand { height:36px; border-bottom:0; padding:0 12px; }
  .main-nav { display:flex; overflow-x:auto; padding:0; }
  .main-nav>a { white-space:nowrap; padding:8px 10px; border-left:0; border-bottom:2px solid transparent; font-size:12px; }
  .main-nav>a.active { border-bottom-color:var(--blue); }
  .topbar { padding:0 12px; min-height:40px; }
  .identity { gap:6px; }
  .identity-name { max-width:110px; }
  main#main-content { padding:12px; }
  h1 { font-size:20px; }
  .page-heading { align-items:flex-start; }
  .page-heading .button { padding:5px 8px; }
  .summary-strip>a,.summary-strip>span { padding:6px 8px; }
  .summary-strip strong { margin-left:4px; }
  .panel-header { flex-wrap:wrap; padding:8px 10px; }
  th,td { padding:7px 9px; }
  .server-filters .search-field { flex-basis:100%; }
  .server-filters .filter-field:not(.search-field) { flex:1; min-width:80px; }
  .table-toolbar { padding:8px; }
  .form-grid { grid-template-columns:minmax(0,1fr); }
  .form-section { padding:12px; }
  .field>div[id],.form-fieldset>div[id] { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .form-actions { align-items:flex-start; }
  .detail-sidebar { display:block; }
  .detail-list { grid-template-columns:90px minmax(0,1fr); }
  .request-progress { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
  .request-progress small { font-size:11px; }
  .login-page { padding:16px; }
  .login-form-card { padding:20px; }
}
@media(prefers-reduced-motion:reduce) {
  *,*::before,*::after { scroll-behavior:auto!important; }
}
