:root{
    --bg:#f4f6f9;
    --card:#ffffff;
    --ink:#171717;
    --muted:#5f6773;
    --line:#2a2a2a;
    --stroke:#d9e0e7;
    --nav:#111827;
    --nav-active:#1d4ed8;
    --soft:#f8fafc;
    --success:#14532d;
    --error:#991b1b;
}
*{box-sizing:border-box}
body{
    margin:0;
    background:var(--bg);
    color:var(--ink);
    font-family:Arial, Helvetica, sans-serif;
}
a{color:inherit;text-decoration:none}
button,.button-like,input,select,textarea{
    font:inherit;
    border:1px solid #cfd8e3;
    border-radius:12px;
    padding:11px 14px;
}
button,.button-like{
    cursor:pointer;
    background:#111827;
    color:#fff;
    border-color:#111827;
    display:inline-flex;
    align-items:center;
    justify-content:center;
}
button.secondary,.button-like.secondary{background:#fff;color:#111827}
input,select,textarea{background:#fff;color:#111827;width:100%}
input[readonly]{background:#f8fafc}
label{font-size:12px;font-weight:700;color:#374151;text-transform:uppercase;letter-spacing:.04em}

.app-shell{max-width:1440px;margin:0 auto;padding:22px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start}
.app-shell > *{width:100%}
.topbar{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:18px;
    padding:20px 22px;
    border:1px solid var(--stroke);
    border-radius:18px;
    background:var(--card);
    box-shadow:0 16px 38px rgba(15,23,42,.06);
    max-width:1200px;
    margin:0 auto;
}
.app-title{font-size:30px;font-weight:800;margin-bottom:6px}
.app-subtitle{font-size:14px;color:var(--muted);max-width:760px;line-height:1.5}
.topbar-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}
.user-pill{padding:10px 14px;border-radius:999px;background:#eef4ff;color:#1e3a8a;border:1px solid #c7d2fe;font-size:13px}
.inline-form{margin:0}
.nav-tabs{display:flex;gap:10px;flex-wrap:wrap;margin:18px auto 22px;justify-content:center;max-width:1200px}
.nav-tabs a{padding:12px 16px;border-radius:14px;background:var(--nav);color:#fff;font-weight:700;border:1px solid var(--nav)}
.nav-tabs a.active{background:var(--nav-active);border-color:var(--nav-active)}
.flash{padding:12px 14px;border-radius:14px;margin:14px 0;font-size:14px;line-height:1.5}
.flash.success{background:#ecfdf3;color:var(--success);border:1px solid #bbf7d0}
.flash.error{background:#fef2f2;color:var(--error);border:1px solid #fecaca}
.page-wrap{display:flex;flex-direction:column;gap:18px;margin:0 auto;width:100%;align-items:center;justify-content:flex-start}
.page-wrap.narrow{max-width:980px}
.preview-page{max-width:1260px}
.page-wrap.narrow > .card{max-width:920px}
.preview-page > .card{max-width:1240px}
.card{
    background:var(--card);
    border:1px solid var(--stroke);
    border-radius:18px;
    box-shadow:0 16px 38px rgba(15,23,42,.06);
    padding:24px;
    width:100%;
    margin:0 auto;
}
.block-card{margin-bottom:18px}
h1,h2{margin:0 0 10px}
h1{font-size:28px}
h2{font-size:22px}
.page-note{margin:0 0 16px;color:var(--muted);font-size:14px;line-height:1.6}
.auth-wrap{display:flex;justify-content:center;padding:44px 0}
.auth-card{max-width:520px;width:100%}
.auth-switch{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:18px}
.auth-switch a{padding:12px 14px;border-radius:12px;text-align:center;background:#f8fafc;border:1px solid #cfd8e3;font-weight:700}
.auth-switch a.active{background:#111827;color:#fff;border-color:#111827}
.stack-form{display:flex;flex-direction:column;gap:0;width:100%;margin:0 auto}
.slim-form{max-width:640px;margin:0 auto}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field.compact{margin-bottom:8px}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.section-heading{font-size:22px;font-weight:800;margin:8px 0 12px}
.badge{display:inline-block;padding:4px 9px;border-radius:999px;background:#e5e7eb;font-size:12px;vertical-align:middle}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.preview-page{max-width:1220px;margin:0 auto}
.preview-card{padding:20px}
.preview-toolbar{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:16px}
.preview-canvas{background:#f8fafc;border-radius:16px;padding:18px;display:flex;justify-content:center;align-items:flex-start;width:100%;height:auto;min-height:0;overflow:visible;position:relative}
.row-item{
    display:grid;
    grid-template-columns:1.4fr 100px 100px 100px;
    gap:10px 12px;
    padding:14px;
    border:1px dashed #c8d2e0;
    border-radius:14px;
    background:#fafbfd;
    margin-bottom:12px;
}
.row-item .wide{grid-column:1 / span 2}
.row-item .full{grid-column:1 / span 4}
.row-item .remove-btn{justify-self:start}
.editor-table{display:flex;flex-direction:column;gap:12px}
.editor-row{
    display:grid;
    grid-template-columns:repeat(4,1fr) 90px;
    gap:12px;
    padding:14px;
    border:1px solid #e2e8f0;
    border-radius:14px;
    background:#fff;
}
#divisionTable .editor-row{grid-template-columns:1fr 150px 90px}
#holidayTable .editor-row{grid-template-columns:1fr 90px}

.claim-sheet{
    width:210mm;
    min-height:297mm;
    margin:0 auto;
    background:#ffffff;
    padding:12mm 13mm 9mm;
    color:#111111;
    font-family:Arial, Helvetica, sans-serif;
    box-shadow:0 14px 40px rgba(15,23,42,.10);
    overflow:visible;
}
.header-banner{display:block;width:100%;max-width:none;margin:0 auto 12px}
.org-block{text-align:center}
.org-line{font-size:15px;line-height:1.2;margin:0 0 7px}
.form-line{font-size:15px;line-height:1.3;margin:18px 0 20px}
.meta-block{margin-bottom:18px}
.meta-row{margin-bottom:12px;font-size:14px;align-items:end}
.meta-row.single-line{display:grid;grid-template-columns:max-content minmax(320px,1fr);column-gap:16px}
.meta-row.triple-line{display:grid;grid-template-columns:max-content minmax(200px,1fr) max-content minmax(72px,98px) max-content minmax(120px,170px);column-gap:10px}
.meta-label{width:auto;flex:none;white-space:nowrap}
.meta-label.short,.meta-label.month{text-align:right;padding-right:0}
.meta-value{border-bottom:2px dashed #2f2f2f;font-weight:700;line-height:1;padding:0 6px 5px;min-height:24px;display:block;width:100%;white-space:nowrap}
.meta-value.long{text-align:center;min-width:340px}
.meta-value.division{min-width:200px;max-width:none}
.meta-value.short-name{text-align:center;min-width:72px}
.meta-value.month{min-width:120px}
.triple-line .small-gap{width:auto;flex-basis:auto}
.claim-table{width:100%;margin:12px auto 0;border-collapse:collapse;table-layout:fixed;font-size:12px;border:1.6px solid var(--line)}
.claim-table th,.claim-table td{border:1.6px solid var(--line);padding:4px 4px;vertical-align:middle;background:#fff}
.claim-table thead th{font-size:12px;font-weight:400;text-align:left;vertical-align:bottom;height:55px;padding-bottom:5px}
.claim-table tbody td{height:27px}
.claim-table .center{text-align:center}
.claim-table col.date{width:11.4%}
.claim-table col.program{width:25.4%}
.claim-table col.code{width:15.2%}
.claim-table col.timein{width:14.1%}
.claim-table col.timeout{width:11.0%}
.claim-table col.sessions{width:11.7%}
.claim-table col.signature{width:11.2%}
.claim-table tbody tr.blank-row td{height:24px}
.claim-table tfoot td{height:28px;border-bottom:1.6px solid var(--line)}
.claim-table .sessions-total{text-align:center;font-weight:700;white-space:nowrap;font-size:11px;padding:2px 1px}
.claim-table td:nth-child(2){white-space:nowrap;overflow:hidden;text-overflow:clip}
.claim-table th:last-child,.claim-table td:last-child{border-right:1.6px solid var(--line)}
.claim-table tbody tr:last-child td,.claim-table tfoot tr:last-child td{border-bottom:1.6px solid var(--line)}
.claim-table tfoot tr td:first-child{border-left:1.6px solid var(--line)}
.claim-table tfoot tr td:last-child{border-right:1.6px solid var(--line)}
.approval-block{margin-top:8px;padding:0 4px 10px;font-size:13px}
.approval-row{display:grid;grid-template-columns:max-content minmax(130px,1fr) max-content 135px;align-items:end;column-gap:8px;margin-top:10px;width:99.5%;margin-left:auto;margin-right:auto}
.approval-left{white-space:nowrap}
.approval-line{border-bottom:2px dashed #2f2f2f;height:15px;display:block;width:100%}
.approval-line.wide{flex:1}
.approval-line.date{width:100%}
.approval-date{white-space:nowrap}
.approval-sub{margin-top:4px;font-size:13px;width:99.5%;margin-left:auto;margin-right:auto}
.foot-note{margin-top:16px;text-align:center;font-size:11px;line-height:1.45;padding:0 12px}

@media (max-width:1100px){
    .topbar,.preview-toolbar{flex-direction:column}
    .claim-sheet{width:100%;min-height:auto;padding:16px}
    .preview-canvas{padding:12px;height:auto;min-height:0}
}
@media (max-width:820px){
    .app-shell{padding:14px}
    .two-col,.editor-row,.row-item,#divisionTable .editor-row,#holidayTable .editor-row,.meta-row.single-line,.meta-row.triple-line,.approval-row{grid-template-columns:1fr}
    .row-item .wide,.row-item .full{grid-column:auto}
}
@media print{
    @page{size:A4;margin:0}
    body{background:#fff}
    .app-shell,.preview-canvas{padding:0}
    .card{box-shadow:none;border:none;padding:0}
    .nav-tabs,.topbar,.preview-toolbar,.flash{display:none !important}
    .claim-sheet{box-shadow:none;margin:0;width:210mm;min-height:297mm;background:#fff;padding:12mm 13mm 9mm}
}

.render-surface{display:flex;justify-content:center;align-items:flex-start;width:min(100%, 1100px);height:auto;min-width:0;min-height:0;overflow:visible;position:relative;padding:8px;margin:0 auto}
.claim-preview-image{display:block;width:100%;height:auto;max-width:100%;max-height:none;object-fit:contain;object-position:center center;background:#fff;box-shadow:0 18px 46px rgba(15,23,42,.12);border:1px solid #e5e7eb;border-radius:2px;flex:0 0 auto}
.page-wrap.preview-page,.page-wrap.narrow{justify-content:flex-start;align-items:center}


.history-table-wrap{overflow-x:auto;margin-top:10px}
.history-table{width:100%;border-collapse:collapse;font-size:14px;background:#fff}
.history-table th,.history-table td{border:1px solid #dbe3ec;padding:10px 12px;text-align:left;vertical-align:middle}
.history-table th{background:#f8fafc;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:#374151}
.reset-claim-form{display:inline-flex}
