:root{
  --paper:#f3f1ea;
  --ink:#1e2a28;
  --ink-soft:#5b6764;
  --line:#dcd7c9;
  --accent:#2f5d50;
  --accent-dark:#203f36;
  --accent-soft:#e4ede9;
  --warn:#a8471f;
  --warn-soft:#f6e6de;
  --ok:#2f5d50;
  --pay:#1f5c8a;
  --pay-soft:#e3eef7;
  --approve:#6a3fb0;
  --approve-soft:#efe7fb;
  --age-red:#b23b3b;
  --age-red-soft:#f6dede;
  --age-orange:#b3791f;
  --age-orange-soft:#f8ecd4;
  --age-green:#2f5d50;
  --age-green-soft:#dfece5;
  --card:#ffffff;
  --shadow:0 1px 2px rgba(30,42,40,.04), 0 6px 16px rgba(30,42,40,.06);
  --sans:"Helvetica Neue",Helvetica,Arial,sans-serif;
  --serif:Georgia,"Iowan Old Style","Times New Roman",serif;
  font-size:15px;
}
*{box-sizing:border-box;}
html{background:var(--paper);}
body{
  margin:0;
  min-height:100vh;
  background:var(--paper);
  background-image:
    radial-gradient(circle at 0% 0%, rgba(47,93,80,.05), transparent 45%),
    radial-gradient(circle at 100% 0%, rgba(47,93,80,.04), transparent 40%);
  background-attachment:fixed;
  color:var(--ink);
  font-family:var(--serif);
  line-height:1.45;
  -webkit-font-smoothing:antialiased;
}
.page{
  max-width:1080px;
  margin:0 auto;
  padding:40px 32px 90px;
}
header.top{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:16px;
  border-bottom:2px solid var(--ink);
  padding-bottom:18px;
  margin-bottom:28px;
  flex-wrap:wrap;
}
h1{
  font-family:var(--serif);
  font-weight:700;
  font-size:27px;
  margin:0;
  letter-spacing:.2px;
}
.sub{
  color:var(--ink-soft);
  font-size:12.5px;
  font-family:var(--sans);
  max-width:340px;
  text-align:right;
}
h2{
  font-size:13px;
  text-transform:uppercase;
  letter-spacing:1.6px;
  color:var(--accent);
  border-bottom:1px solid var(--line);
  padding-bottom:8px;
  margin:0 0 16px;
  font-family:var(--sans);
  font-weight:700;
  display:flex;
  align-items:center;
  gap:8px;
}
section{
  background:var(--card);
  border:1px solid var(--line);
  border-radius:6px;
  box-shadow:var(--shadow);
  padding:24px 26px;
  margin-bottom:22px;
}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
@media(max-width:820px){.grid2{grid-template-columns:1fr;}}
.drop{
  border:1.5px dashed var(--line);
  border-radius:5px;
  padding:28px 16px;
  text-align:center;
  color:var(--ink-soft);
  font-family:var(--sans);
  font-size:13px;
  cursor:pointer;
  background:linear-gradient(180deg, #fbfaf7, #f6f4ee);
  transition:border-color .15s ease, background .15s ease, transform .1s ease;
}
.drop:hover{border-color:var(--accent);}
.drop.over{border-color:var(--accent);background:var(--accent-soft);transform:scale(.995);}
.drop strong{display:block;color:var(--ink);font-size:14.5px;margin-bottom:5px;font-family:var(--serif);}
.drop input{display:none;}
.status-line{
  font-family:var(--sans);
  font-size:12.5px;
  color:var(--ink-soft);
  margin-top:10px;
  padding-left:1px;
}
.status-line.ok{color:var(--ok);font-weight:600;}
.status-line.ok::before{content:"● "; }
.file-list{list-style:none;margin:8px 0 0;padding:0;font-family:var(--sans);font-size:12px;}
.file-list li{display:flex;justify-content:space-between;align-items:center;padding:5px 8px;border:1px solid var(--line);border-radius:4px;margin-bottom:5px;background:#fbfaf7;}
.file-list .fname{color:var(--ink);font-weight:600;}
.file-list .fcount{color:var(--ink-soft);margin-left:8px;}
.file-list .frem{background:none;border:none;box-shadow:none;color:var(--warn);cursor:pointer;font-size:14px;padding:0 4px;font-weight:700;}
.file-list .frem:hover{color:#7a2f13;}
table{border-collapse:collapse;width:100%;font-family:var(--sans);font-size:12.8px;}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);}
th{
  font-weight:700;
  color:var(--ink-soft);
  text-transform:uppercase;
  font-size:10.5px;
  letter-spacing:.6px;
  background:#fbfaf7;
  position:sticky;
  top:0;
}
tbody tr:hover td{background:#faf9f4;}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;}
tr.group-head td{background:var(--accent-soft);font-weight:700;color:var(--accent-dark);border-top:1.5px solid var(--accent);}
tr.group-head:hover td{background:var(--accent-soft);}
tr.warn td{background:var(--warn-soft);}
tr.excluded-row td{color:var(--ink-soft);opacity:.55;text-decoration:line-through;}
tr.warn:hover td{background:#f2ddd0;}
.tag{display:inline-block;padding:2px 8px;border-radius:10px;font-size:10.5px;font-weight:700;letter-spacing:.2px;}
.tag.ok{background:var(--accent-soft);color:var(--accent-dark);}
.tag.warn{background:var(--warn-soft);color:var(--warn);}
.tag.unmapped{background:#ececec;color:#888;}
.tag.pay-warn{background:var(--pay-soft);color:var(--pay);}
.tag.approved{background:var(--approve-soft);color:var(--approve);}
.tag.cross{background:#f1eee6;color:#7a6a3f;}
.excl-group-wrap{margin-top:18px;}
.excl-group-title{
  font-size:13px;text-transform:uppercase;letter-spacing:1.2px;color:var(--ink-soft);
  font-family:var(--sans);font-weight:700;margin:0 0 10px;
}
.excl-group{
  border:1px solid var(--line);border-radius:5px;margin-bottom:8px;overflow:hidden;background:#fbfaf7;
}
.excl-group summary{
  list-style:none;cursor:pointer;padding:10px 14px;display:flex;justify-content:space-between;
  align-items:center;font-family:var(--sans);font-weight:600;font-size:13px;color:var(--ink);
}
.excl-group summary::-webkit-details-marker{display:none;}
.excl-group summary::before{content:"▸";margin-right:8px;color:var(--ink-soft);font-size:11px;transition:transform .15s ease;display:inline-block;}
.excl-group[open] summary::before{transform:rotate(90deg);}
.excl-group summary:hover{background:#f3f1ea;}
.excl-namn{display:flex;align-items:center;}
.excl-meta{font-weight:400;color:var(--ink-soft);font-size:11.5px;}
.excl-group table{border-top:1px solid var(--line);}
.excl-group table th, .excl-group table td{padding:6px 14px;}
.kund-group{margin-bottom:14px;}
.kund-group > summary{font-size:13.5px;}
.kund-badges{display:flex;gap:6px;align-items:center;flex-wrap:wrap;}
.filter-bar{
  display:flex;gap:16px;align-items:center;flex-wrap:wrap;
  font-family:var(--sans);font-size:12.5px;color:var(--ink-soft);
  padding:10px 12px;border:1px solid var(--line);border-radius:5px;background:#fbfaf7;
  margin-bottom:14px;
}
.filter-bar label{display:flex;align-items:center;gap:5px;cursor:pointer;}
.filter-bar input[type=text]{width:180px;}
.section-details > summary{
  list-style:none;cursor:pointer;font-family:var(--sans);font-size:12.5px;font-weight:600;
  color:var(--accent);padding:6px 0;text-decoration:underline;text-underline-offset:3px;
}
.section-details > summary::-webkit-details-marker{display:none;}
.section-details > summary::before{content:"▸ ";font-size:11px;}
.section-details[open] > summary::before{content:"▾ ";}
.diff-fb{color:var(--pay);font-weight:700;}
tr.age-red td{background:var(--age-red-soft);}
tr.age-red:hover td{background:#f0cccc;}
tr.age-orange td{background:var(--age-orange-soft);}
tr.age-orange:hover td{background:#f3e0b8;}
tr.age-green td{background:var(--age-green-soft);}
tr.age-green:hover td{background:#cfe1d8;}
.legend-row{display:flex;align-items:center;gap:6px;font-family:var(--sans);font-size:12px;color:var(--ink-soft);margin-bottom:10px;}
.legend-dot{display:inline-block;width:11px;height:11px;border-radius:50%;margin-left:10px;}
.legend-dot:first-child{margin-left:0;}
.legend-dot.age-red{background:var(--age-red);}
.legend-dot.age-orange{background:var(--age-orange);}
.legend-dot.age-green{background:var(--age-green);}
#tbl-birthyears input[type=number]{width:90px;}
.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:16px;flex-wrap:wrap;font-family:var(--sans);}
button{
  font-family:var(--sans);
  background:var(--accent);
  color:#fff;
  border:none;
  padding:9px 16px;
  border-radius:4px;
  font-size:12.5px;
  cursor:pointer;
  font-weight:700;
  letter-spacing:.2px;
  box-shadow:0 1px 2px rgba(30,42,40,.15);
  transition:background .15s ease, transform .05s ease;
}
button:hover{background:var(--accent-dark);}
button:active{transform:translateY(1px);}
button.secondary{background:transparent;color:var(--accent);border:1px solid var(--accent);box-shadow:none;}
button.secondary:hover{background:var(--accent-soft);}
button.ghost{background:transparent;color:var(--ink-soft);border:1px solid var(--line);box-shadow:none;}
button.ghost:hover{background:#f3f1ea;color:var(--ink);}
button:focus-visible, input:focus-visible, select:focus-visible, .drop:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:2px;
}
input[type=text],input[type=number],select{
  font-family:var(--sans);
  padding:7px 9px;
  border:1px solid var(--line);
  border-radius:4px;
  font-size:12.8px;
  background:#fff;
  color:var(--ink);
  width:100%;
}
input[type=text]:focus,input[type=number]:focus,select:focus{
  border-color:var(--accent);
}
select{min-width:220px;}
.split-cell{min-width:280px;}
.split-row{display:flex;align-items:center;gap:6px;margin-bottom:6px;}
.split-row .split-select{min-width:200px;flex:1;}
.split-row .split-percent{width:56px;min-width:56px;padding:5px 6px;}
.split-add{
  background:none;border:none;box-shadow:none;color:var(--accent);
  font-size:11.5px;font-weight:600;padding:2px 0;cursor:pointer;
  text-decoration:underline;text-underline-offset:2px;
}
.split-add:hover{color:var(--accent-dark);background:none;}
.split-sum{display:block;font-size:11px;color:var(--ink-soft);margin-top:4px;font-family:var(--sans);}
.split-sum-bad{color:var(--warn);font-weight:700;}
.period-row{display:flex;align-items:center;gap:6px;margin-bottom:6px;flex-wrap:wrap;}
.period-row input[type=text].period-month{width:100px;min-width:100px;}
.period-row input[type=text].period-comment{flex:1;min-width:180px;}
.period-row .period-arrow{color:var(--ink-soft);font-size:12px;font-family:var(--sans);}
.period-add{
  background:none;border:none;box-shadow:none;color:var(--accent);
  font-size:11.5px;font-weight:600;padding:2px 0;cursor:pointer;
  text-decoration:underline;text-underline-offset:2px;
}
.period-add:hover{color:var(--accent-dark);background:none;}
.manual-form{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px;font-family:var(--sans);}
@media(max-width:700px){.manual-form{grid-template-columns:repeat(2,1fr);}}
.manual-form label{font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--ink-soft);display:block;margin-bottom:4px;font-weight:600;}
.manual-form div{display:flex;flex-direction:column;}
.small{font-size:11px;color:var(--ink-soft);font-family:var(--sans);}
.pill-btn{background:none;border:none;color:var(--warn);cursor:pointer;font-size:17px;line-height:1;padding:0 4px;box-shadow:none;}
.pill-btn:hover{background:none;color:#7a2f13;}
.empty{color:var(--ink-soft);font-family:var(--sans);font-size:13px;padding:14px 0;font-style:italic;}
.diff-pos{color:var(--warn);font-weight:700;}
.diff-zero{color:var(--ok);font-weight:600;}

::selection{background:var(--accent-soft);color:var(--accent-dark);}
@media print{
  body{background:#fff;}
  section{box-shadow:none;break-inside:avoid;}
  .drop, .toolbar button{display:none;}
}
