:root{
  --ink:#1c2b3a; --paper:#f6f3ec; --line:#d8d1c0;
  --navy:#21344b; --navy-2:#2f4a6b; --brass:#a9762f; --brass-2:#c4924a;
  --green:#3f6b4f; --red:#933a3a; --muted:#6b6456; --white:#ffffff; --radius:6px;
}
*{box-sizing:border-box;}
body{margin:0;font-family:Georgia,'Iowan Old Style',serif;background:var(--paper);color:var(--ink);}
.util{font-family:'Courier New',monospace;letter-spacing:.03em;}
#app, .wrap{max-width:1000px;margin:0 auto;padding:18px 16px 60px;}
header.bar{display:flex;justify-content:space-between;align-items:baseline;border-bottom:2px solid var(--navy);padding-bottom:10px;margin-bottom:18px;flex-wrap:wrap;gap:8px;}
header.bar h1{font-size:1.5rem;margin:0;font-weight:700;color:var(--navy);}
header.bar .reg{font-size:.7rem;color:var(--brass);text-transform:uppercase;letter-spacing:.12em;margin-left:8px;}
.userbox{font-size:.85rem;color:var(--muted);text-align:right;}
.userbox .role{display:inline-block;background:var(--navy);color:#fff;padding:1px 8px;border-radius:3px;font-size:.65rem;text-transform:uppercase;letter-spacing:.08em;margin-left:6px;font-family:'Courier New',monospace;}
a{text-decoration:none;}
button,.btn{font-family:inherit;cursor:pointer;border:1px solid var(--navy);background:var(--navy);color:#fff;padding:7px 14px;border-radius:var(--radius);font-size:.85rem;display:inline-block;}
button:hover,.btn:hover{background:var(--navy-2);}
button.ghost,.btn.ghost{background:transparent;color:var(--navy);}
button.ghost:hover{background:#eae5d8;}
button.danger{background:var(--red);border-color:var(--red);}
button.danger:hover{background:#a84444;}
button.brass{background:var(--brass);border-color:var(--brass);}
button.brass:hover{background:var(--brass-2);}
button:disabled{opacity:.45;cursor:not-allowed;}
input,select,textarea{font-family:inherit;font-size:.9rem;padding:7px 9px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;color:var(--ink);width:100%;}
label{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;display:block;margin-bottom:4px;}
.field{margin-bottom:12px;}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin-bottom:16px;}
.card h2{margin:0 0 14px;font-size:1.05rem;color:var(--navy);border-bottom:1px solid var(--line);padding-bottom:8px;}
.row{display:flex;gap:10px;flex-wrap:wrap;}
.row > *{flex:1;min-width:140px;}
.tabs{display:flex;gap:4px;margin-bottom:16px;border-bottom:1px solid var(--line);flex-wrap:wrap;}
.tabs a{background:transparent;border:none;color:var(--muted);padding:9px 14px;font-size:.85rem;border-bottom:2px solid transparent;}
.tabs a.active{color:var(--navy);border-bottom-color:var(--brass);font-weight:700;}
.tabs a:hover{background:#eee8da;}
table{width:100%;border-collapse:collapse;font-size:.88rem;}
th,td{text-align:left;padding:7px 8px;border-bottom:1px solid var(--line);}
th{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);}
.pill{display:inline-block;font-size:.65rem;padding:2px 8px;border-radius:10px;text-transform:uppercase;letter-spacing:.05em;font-family:'Courier New',monospace;}
.pill.draft{background:#eee0c4;color:#7a5c1f;}
.pill.approved{background:#d9e8dc;color:var(--green);}
.unit-row{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);}
.unit-row:last-child{border-bottom:none;}
.unit-no{font-family:'Courier New',monospace;color:var(--brass);font-weight:700;min-width:26px;font-size:.85rem;padding-top:1px;}
.unit-title{font-weight:600;}
.unit-desc{font-size:.82rem;color:var(--muted);margin-top:2px;}
.check{margin-left:auto;flex-shrink:0;}
.done-tag{font-size:.7rem;color:var(--green);font-family:'Courier New',monospace;}
.progressbar{height:8px;background:#eae5d8;border-radius:4px;overflow:hidden;margin:6px 0 10px;}
.progressbar > div{height:100%;background:var(--green);}
.empty{color:var(--muted);font-style:italic;padding:20px 0;text-align:center;}
.login-wrap{min-height:80vh;display:flex;align-items:center;justify-content:center;}
.login-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:36px;max-width:380px;width:100%;}
.login-card h1{color:var(--navy);font-size:1.6rem;margin:0 0 4px;}
.login-card p.sub{color:var(--muted);font-size:.85rem;margin:0 0 22px;}
.seal{width:46px;height:46px;border:2px solid var(--brass);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--brass);font-family:'Courier New',monospace;font-weight:700;margin-bottom:14px;}
.errmsg{color:var(--red);font-size:.82rem;margin-top:8px;}
.okmsg{color:var(--green);font-size:.82rem;margin-top:8px;}
.hint{font-size:.75rem;color:var(--muted);margin-top:14px;border-top:1px solid var(--line);padding-top:12px;}
.small{font-size:.78rem;color:var(--muted);}
.topline{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;}
.assign-line{display:flex;gap:8px;align-items:center;margin-bottom:6px;}
.assign-line button{padding:4px 9px;font-size:.75rem;}
@media (max-width:600px){
  .row > *{min-width:100%;}
  .userbox{text-align:left;}
  table{display:block;overflow-x:auto;white-space:nowrap;-webkit-overflow-scrolling:touch;}
  table thead, table tbody{display:table;width:100%;}
  .tabs{gap:2px;}
  .tabs a{padding:7px 10px;font-size:.78rem;}
  .bar img{height:36px;}
}
