/* BMW Warranty Tracker - UI v2: 진한 남색 상단바, 구역별 색상, 큰 글씨 */
:root{
  --bg:#eef2f8;--fg:#142033;--muted:#53607a;--line:#cfd8e6;--card:#fff;
  --ink:#0f2547;--ink-2:#1b3a6b;--brand:#1d5fd6;--brand-dk:#1547a3;--brand-fg:#fff;--brand-soft:#e4edff;
  --ok:#0b7a5a;--ok-soft:#dcf5ea;--ok-line:#8fd6b9;
  --danger:#c2312b;--danger-soft:#fde6e4;--danger-line:#f1aaa6;
  --warn:#8a5a00;--warn-soft:#fff1c9;--warn-line:#f0cd6b;
  --violet:#6d3fd0;--violet-soft:#efe8ff;
  --teal:#0f7f9a;--teal-soft:#dff3f8;
  --radius:10px;
}
*{box-sizing:border-box}
html{font-size:17px}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI","Malgun Gothic","Apple SD Gothic Neo","Noto Sans KR",sans-serif;background:var(--bg);color:var(--fg);line-height:1.6}
a{color:var(--brand)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #ffb703;outline-offset:2px}

/* 상단바 */
header.top{background:linear-gradient(90deg,var(--ink) 0%,var(--ink-2) 100%);border-bottom:4px solid var(--brand);position:sticky;top:0;z-index:10}
.bar{max-width:1280px;margin:0 auto;padding:10px 18px;display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center}
.brand{font-weight:800;color:#fff;text-decoration:none;font-size:1.1rem;letter-spacing:.01em;margin-right:10px}
nav{display:flex;flex-wrap:wrap;gap:6px;flex:1}
nav a{color:#dbe6ff;text-decoration:none;padding:6px 12px;border-radius:999px;font-weight:600;font-size:.95rem}
nav a:hover{background:rgba(255,255,255,.16);color:#fff}
.who{display:flex;gap:12px;align-items:center;color:#c5d3f0;font-size:.9rem;flex-wrap:wrap}
.who a{color:#dbe6ff}
.who button.secondary{background:transparent;color:#fff;border-color:rgba(255,255,255,.6);padding:5px 12px}
.who button.secondary:hover{background:rgba(255,255,255,.16)}

main{max-width:1280px;margin:0 auto;padding:24px 18px 56px}
h1{font-size:1.55rem;margin:0 0 18px;color:var(--ink);display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
h2{font-size:1.1rem;margin:0 0 12px;color:var(--ink)}

/* 카드: 위쪽 색띠로 구역 구분 */
.card{background:var(--card);border:1px solid var(--line);border-top:5px solid var(--brand);border-radius:var(--radius);padding:18px 20px;margin-bottom:18px;box-shadow:0 1px 3px rgba(15,37,71,.08)}
.card.violet{border-top-color:var(--violet)}
.card.violet h2{color:var(--violet)}
.card.teal{border-top-color:var(--teal)}
.card.teal h2{color:var(--teal)}
.card.blue h2{color:var(--brand-dk)}
.card.search{background:var(--brand-soft);border-color:#b7cdf7;border-top-color:var(--brand)}

/* 알림 */
.flash,.error,.warn{padding:12px 16px;border-radius:8px;margin-bottom:18px;border:1px solid;border-left-width:6px;font-weight:600}
.flash{background:var(--ok-soft);border-color:var(--ok-line);color:var(--ok)}
.error{background:var(--danger-soft);border-color:var(--danger-line);color:var(--danger)}
.warn{background:var(--warn-soft);border-color:var(--warn-line);color:var(--warn)}

/* 입력칸 */
label{display:block;font-weight:700;margin:14px 0 5px;color:var(--ink-2)}
input[type=text],input[type=password],input[type=search],select,textarea,input[type=file]{width:100%;padding:10px 12px;border:2px solid #b9c6dc;border-radius:8px;font:inherit;background:#f8fbff;color:var(--fg)}
input[type=text]:hover,input[type=password]:hover,input[type=search]:hover,select:hover,textarea:hover{border-color:#8aa3cf}
input:focus,select:focus,textarea:focus{border-color:var(--brand);background:#fff}
textarea{min-height:150px;resize:vertical}
.row{display:flex;flex-wrap:wrap;gap:12px;align-items:end}
.row>div{flex:1;min-width:170px}

/* 버튼 */
button,.btn{display:inline-block;padding:10px 18px;border:2px solid var(--brand);background:var(--brand);color:var(--brand-fg);border-radius:8px;font:inherit;font-weight:700;cursor:pointer;text-decoration:none;line-height:1.3}
button:hover,.btn:hover{background:var(--brand-dk);border-color:var(--brand-dk)}
button.secondary,.btn.secondary{background:#fff;color:var(--brand-dk)}
button.secondary:hover,.btn.secondary:hover{background:var(--brand-soft)}
button.danger,.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}
button.danger:hover,.btn.danger:hover{background:#9c2520;border-color:#9c2520}
button.link{background:none;border:none;color:var(--brand);padding:0;text-decoration:underline;font-weight:600}
form.inline{display:inline}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}

/* 표 */
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:0 1px 3px rgba(15,37,71,.08)}
table{width:100%;border-collapse:collapse;min-width:860px}
th,td{padding:11px 12px;border-bottom:1px solid #e1e8f3;text-align:left;vertical-align:top;font-size:.95rem}
th{background:var(--ink-2);color:#fff;font-weight:700;white-space:nowrap}
tbody tr:nth-child(even) td{background:#f6f9fe}
tbody tr:hover td{background:#e9f0ff}
.list th{background:var(--ink-2)}
.list td:nth-child(1){font-weight:700}
.list td:nth-child(1),.list td:nth-child(5),.list td:nth-child(8),.list td:nth-child(9){white-space:nowrap}
.list td:nth-child(2){color:var(--ink-2);font-weight:600}
.list td:nth-child(4){font-family:ui-monospace,Consolas,monospace;font-weight:700;color:var(--ink-2);letter-spacing:.04em;white-space:nowrap}

.muted{color:var(--muted);font-size:.92rem}
.small{font-size:.88rem}
.badge{white-space:nowrap;display:inline-block;padding:2px 12px;border-radius:999px;font-size:.88rem;font-weight:800;border:2px solid var(--line)}
.badge.exist{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-line)}
.badge.none{background:var(--danger-soft);color:var(--danger);border-color:var(--danger-line)}
.badge.unk{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-line)}
.pre{white-space:pre-wrap;word-break:break-word}

.pager{display:flex;gap:10px;align-items:center;margin-top:16px}

/* 상세 화면: 칸마다 색이 다른 요약 */
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:14px}
.fact{border-radius:8px;padding:10px 14px;border:1px solid var(--line);border-left-width:6px}
.fact b{display:block;font-size:.82rem;color:var(--muted);font-weight:700}
.fact span{font-size:1.1rem;font-weight:800}
.fact.f-model{background:var(--brand-soft);border-color:#b7cdf7;border-left-color:var(--brand)}
.fact.f-model span{color:var(--brand-dk)}
.fact.f-code{background:#e3f4f8;border-color:#a9d6e2;border-left-color:#0e6b8a}
.fact.f-code span{color:#0e6b8a;font-family:ui-monospace,Consolas,monospace;letter-spacing:.04em}
.fact.f-who{background:var(--violet-soft);border-color:#d3c3f7;border-left-color:var(--violet)}
.fact.f-who span{color:var(--violet)}
.fact.f-time{background:var(--teal-soft);border-color:#a9dbe8;border-left-color:var(--teal)}
.fact.f-time span{color:var(--teal)}
.fact.f-exist{background:var(--ok-soft);border-color:var(--ok-line);border-left-color:var(--ok)}
.fact.f-none{background:var(--danger-soft);border-color:var(--danger-line);border-left-color:var(--danger)}
.fact.f-unk{background:var(--warn-soft);border-color:var(--warn-line);border-left-color:#e0a100}
.fact.f-exist span{color:var(--ok)}.fact.f-none span{color:var(--danger)}.fact.f-unk span{color:var(--warn)}
.symptom{background:#f8fbff;border:1px solid #d8e3f6;border-radius:8px;padding:14px 16px;font-size:1.02rem}

.gallery{display:flex;flex-wrap:wrap;gap:14px}
.gallery figure{margin:0;width:210px}
.gallery img{width:210px;height:158px;object-fit:cover;border:3px solid var(--violet-soft);border-radius:8px;background:#eee}
.comment{border:1px solid #d6ecf2;background:var(--teal-soft);border-radius:8px;padding:12px 14px;margin-bottom:10px}
.comment:nth-of-type(even){background:#eef9fc}
.comment .muted{color:var(--teal)}

/* 로그인 */
.login{max-width:420px;margin:56px auto}
.login h1{font-size:1.6rem}
.login button[type=submit]{width:100%;padding:12px}

@media (max-width:640px){
  html{font-size:16px}
  .bar{padding:8px 12px}
  nav{flex:1 1 100%;order:3}
  nav a{padding:5px 10px;font-size:.9rem}
  .who{flex:1 1 100%;order:2}
  main{padding:16px 12px 40px}
  .card{padding:14px}
  .gallery figure,.gallery img{width:100%}
  .gallery img{height:auto;aspect-ratio:4/3}
}
@media (prefers-reduced-motion:no-preference){
  button,.btn,nav a{transition:background-color .12s,border-color .12s}
}
.nowrap{white-space:nowrap}
.filelist{margin:0 0 12px;padding-left:20px}
.filelist li{margin:6px 0}
