:root{--primary:#2f5d8a;--accent:#3e9e6b;--background:#f6f7f9;--text:#1f2328;--surface:#fff;--border:color-mix(in srgb, var(--text) 14%, transparent);--muted:color-mix(in srgb, var(--text) 62%, transparent);--primary-soft:color-mix(in srgb, var(--primary) 12%, var(--surface));--danger:#b3261e;--danger-soft:#fbeceb;--warning:#8a5a00;--warning-soft:#fff4d6;--success-soft:color-mix(in srgb, var(--accent) 16%, var(--surface));--radius:10px}*{box-sizing:border-box}body{background:var(--background);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}h1{letter-spacing:-.01em;margin:0 0 .25rem;font-size:1.5rem}h2{font-size:1.05rem}h2,p{margin:0 0 .75rem}a{color:inherit}.muted,.topbar nav a{color:var(--muted)}.small{font-size:.85rem}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:10;gap:2rem;padding:.6rem 1.5rem;position:sticky;top:0}.brand,.topbar{align-items:center;display:flex}.brand{font-weight:700;text-decoration:none}.brand img{width:auto;height:38px;display:block}.topbar nav{flex:1;gap:.25rem;display:flex}.topbar nav a{border-radius:8px;padding:.4rem .8rem;font-weight:500;text-decoration:none}.topbar nav a.active,.topbar nav a:hover{background:var(--primary-soft);color:var(--text)}.account{align-items:center;gap:1rem;font-size:.9rem;display:flex}main.page{max-width:1280px;margin:0 auto;padding:1.75rem 1.5rem 4rem}main.centered{place-items:center;min-height:100vh;padding:1.5rem;display:grid}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.25rem;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem}.card+.card{margin-top:1rem}.card.narrow{width:min(400px,100%)}.card.flush{padding:0;overflow:hidden}.button{background:var(--primary);color:#fff;font:inherit;cursor:pointer;border:0;border-radius:8px;justify-content:center;align-items:center;gap:.4rem;padding:.6rem 1.1rem;font-weight:600;text-decoration:none;display:inline-flex}.button:hover{filter:brightness(.95)}.button:disabled{opacity:.55;cursor:not-allowed}.button.secondary{color:var(--text);border:1px solid var(--border);background:0 0}.button.danger{color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 35%,transparent);background:0 0}.button.small{padding:.3rem .65rem;font-size:.85rem}button.link{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}label{margin-bottom:.3rem;font-size:.9rem;font-weight:600;display:block}input[type=email],input[type=password],input[type=text]{border:1px solid var(--border);width:100%;font:inherit;background:var(--surface);color:var(--text);border-radius:8px;padding:.6rem .75rem}a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.alert,.field{margin-bottom:1rem}.alert{border-radius:8px;padding:.7rem .9rem;font-size:.93rem}.alert.error{background:var(--danger-soft);color:var(--danger)}.alert.warning{background:var(--warning-soft);color:var(--warning)}.alert.success{background:var(--success-soft)}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}td,th{text-align:right;border-bottom:1px solid var(--border);white-space:nowrap;padding:.55rem .75rem}th{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:var(--surface);font-size:.78rem;font-weight:600}td.left,td.mono,td:first-child,th.left,th:first-child{text-align:left}.dropzone,tbody tr.clickable{cursor:pointer}tbody tr.clickable:hover{background:var(--primary-soft)}tfoot td{border-top:2px solid var(--border);border-bottom:0;font-weight:700}.table-scroll{overflow-x:auto}td.mono,td.wrap{white-space:normal}td.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem}td.strong{font-weight:700}.badge{border-radius:999px;padding:.1rem .55rem;font-size:.75rem;font-weight:600;display:inline-block}.badge.error{background:var(--danger-soft);color:var(--danger)}.badge.warning{background:var(--warning-soft);color:var(--warning)}.badge.ok{background:var(--success-soft)}.badge.neutral{background:color-mix(in srgb,var(--text) 8%,transparent);color:var(--muted)}.diff{color:var(--warning);font-size:.8rem}.diff.none,.stat span{color:var(--muted)}.dropzone{border:2px dashed color-mix(in srgb,var(--primary) 45%,transparent);border-radius:var(--radius);text-align:center;background:var(--primary-soft);padding:2.25rem 1rem;transition:background .15s}.dropzone.over{background:color-mix(in srgb,var(--primary) 22%,var(--surface))}.dropzone.busy{opacity:.6;pointer-events:none}.dropzone strong{margin-bottom:.25rem;font-size:1.05rem;display:block}.results{gap:.6rem;margin:1rem 0 0;padding:0;list-style:none;display:grid}.results li{border:1px solid var(--border);border-left-width:4px;border-radius:8px;padding:.75rem .9rem}.results li.ok{border-left-color:var(--accent)}.results li.ko{border-left-color:var(--danger);background:var(--danger-soft)}.results .file{font-weight:600}.results ul{color:var(--warning);margin:.4rem 0 0;padding-left:1.1rem;font-size:.9rem}.grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;display:grid}.month-card{text-decoration:none;display:block}.month-card:hover{border-color:var(--primary)}.month-card strong{font-size:1.1rem;display:block}.stats{flex-wrap:wrap;gap:2rem;display:flex}.stat span{text-transform:uppercase;letter-spacing:.04em;font-size:.78rem;display:block}.stat strong{font-variant-numeric:tabular-nums;font-size:1.35rem}.back{color:var(--muted);margin-bottom:.75rem;font-size:.9rem;text-decoration:none;display:inline-block}.back:hover{color:var(--text)}.empty{text-align:center;padding:3rem 1rem}.week-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;padding:1rem 1.25rem .5rem;display:flex}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:1em;height:1em;animation:.7s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(1turn)}}.grid>.card{margin-top:0}.filters{flex-wrap:wrap;align-items:flex-end;gap:1rem;margin:1rem 0;display:flex}.filters label,label.inline{color:var(--muted);flex-direction:column;gap:.25rem;margin:0;font-size:.8rem;font-weight:600;display:flex}.filters label.check{color:var(--text);flex-direction:row;align-items:center;gap:.5rem;padding-bottom:.45rem;font-size:.9rem;font-weight:500}.filters input[type=text]{width:15rem;padding:.45rem .65rem}select{border:1px solid var(--border);font:inherit;background:var(--surface);color:var(--text);border-radius:8px;min-width:9rem;padding:.45rem .65rem}.alert.info{background:color-mix(in srgb,var(--text) 6%,transparent);color:var(--muted)}.review{flex-wrap:wrap;align-items:center;gap:.75rem;margin:0 1.25rem .75rem;display:flex}.review input[type=text]{flex:1;min-width:16rem;padding:.4rem .6rem}.tiles{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.tile{flex-direction:column;gap:.35rem;min-height:150px;padding:1.5rem;display:flex}.tile strong{font-size:1.3rem}.tile-foot{flex-wrap:wrap;gap:.5rem;margin-top:auto;padding-top:.75rem;display:flex}@media (width<=760px){body{font-size:14px}h1{font-size:1.25rem}.topbar{flex-wrap:wrap;gap:.5rem 1rem;padding:.5rem 1rem}.brand img{height:32px}.account{margin-left:auto}.account .muted{display:none}.topbar nav{flex:1 0 100%;order:3;overflow-x:auto}.topbar nav a{text-align:center;white-space:nowrap;flex:1}main.page{padding:1rem .75rem 3rem}.page-head{flex-direction:column;align-items:stretch;gap:.75rem}.page-head>div{flex-wrap:wrap}.page-head .button{flex:1}.card{padding:1rem}.stats{grid-template-columns:1fr 1fr;gap:.9rem 1rem;display:grid}.stat strong{font-size:1.15rem}.filters{gap:.6rem}.filters label{flex:45%}.filters label.check{flex-basis:100%;padding-bottom:0}.filters input[type=text],select{width:100%;min-width:0}td,th{padding:.5rem .55rem}.table-scroll td:first-child,.table-scroll th:first-child{background:var(--surface);z-index:1;white-space:normal;max-width:9.5rem;position:sticky;left:0}.week-head{padding:.85rem 1rem .4rem}.card.flush>.alert,.review{margin-left:1rem;margin-right:1rem}.review input[type=text]{flex-basis:100%;min-width:0}.review .button{flex:1}.dropzone{padding:1.5rem .75rem}.tile{min-height:0}main.centered{align-items:start;padding:12vh 1rem 1rem}}@media print{.back,.no-print,.topbar{display:none!important}body{background:#fff}.card{border:0;padding:0}}
