:root{--tf-green:#4a9b2e;--tf-green-dark:#2f6b1c;--tf-green-darker:#1f4a12;--tf-green-light:#eaf4e3;--tf-accent:#f6a800;--tf-ink:#1c2b14;--tf-gray:#5b6b54;--tf-border:#d7e0d0;--tf-bg:#f6f8f4;--tf-white:#ffffff;--tf-red:#c0392b;--tf-amber:#b7791f;--tf-blue:#2b6cb0}*{box-sizing:border-box}body,html{padding:0;margin:0;background:var(--tf-bg);color:var(--tf-ink);font-family:Segoe UI,system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;font-size:14px}a{color:var(--tf-green-dark)}.tf-header{background:linear-gradient(90deg,var(--tf-green-dark),var(--tf-green));color:#fff;padding:0 20px;height:64px;justify-content:space-between;box-shadow:0 2px 6px rgba(0,0,0,.12)}.tf-brand,.tf-header{display:flex;align-items:center}.tf-brand{gap:12px}.tf-logo{display:flex;align-items:center;gap:10px}.tf-logo-img{height:48px;width:auto;object-fit:contain}.tf-logo-text{font-weight:800;font-size:18px;letter-spacing:.3px;color:#fff}.tf-title{font-weight:600;font-size:15px;opacity:.95;border-left:1px solid rgba(255,255,255,.4);padding-left:12px;margin-left:4px}.tf-idbar{background:var(--tf-white);border-bottom:1px solid var(--tf-border);padding:8px 20px;display:flex;gap:16px;align-items:center;flex-wrap:wrap}.tf-idbar .seg{display:inline-flex;border:1px solid var(--tf-green);border-radius:6px;overflow:hidden}.tf-idbar .seg button{border:none;background:#fff;color:var(--tf-green-dark);padding:6px 14px;cursor:pointer;font-weight:600}.tf-idbar .seg button.active{background:var(--tf-green);color:#fff}.tf-idbar label{font-weight:600;color:var(--tf-gray);margin-right:4px}.tf-page{padding:18px 20px 80px}.tf-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}.tf-toolbar .spacer{flex:1 1}.tf-filter{display:inline-flex;align-items:center;gap:6px}.tf-filter label{font-weight:600;color:var(--tf-gray)}.tf-filterbar{display:flex;gap:16px;flex-wrap:wrap;align-items:center;background:#fff;border:1px solid var(--tf-border);border-radius:8px;padding:10px 14px;margin-bottom:12px}input[type=date],input[type=number],input[type=text],select{font-family:inherit;font-size:13px;padding:5px 8px;border:1px solid var(--tf-border);border-radius:5px;background:#fff;color:var(--tf-ink)}.btn{font-family:inherit;font-size:13px;font-weight:600;padding:8px 16px;border-radius:6px;border:1px solid transparent;cursor:pointer;display:inline-flex;align-items:center;gap:6px}.btn-primary{background:var(--tf-green);color:#fff}.btn-primary:hover{background:var(--tf-green-dark)}.btn-secondary{background:#fff;color:var(--tf-green-dark);border-color:var(--tf-green)}.btn-secondary:hover{background:var(--tf-green-light)}.btn-ghost{background:transparent;color:var(--tf-gray);border-color:var(--tf-border)}.btn:disabled{opacity:.5;cursor:not-allowed}.tf-grid-wrap{overflow:auto;border:1px solid var(--tf-border);border-radius:8px;background:#fff;max-height:calc(100vh - 260px)}table.tf-grid{border-collapse:separate;border-spacing:0;width:100%;font-size:13px}table.tf-grid thead th{position:-webkit-sticky;position:sticky;top:0;z-index:2;background:var(--tf-green-dark);color:#fff;text-align:left;padding:4px 6px;white-space:nowrap;font-weight:600;border-right:1px solid rgba(255,255,255,.15)}th.th-resize{position:relative;overflow:hidden}.th-label{display:inline-block;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 8px)}.col-resize{position:absolute;top:0;right:0;height:100%;width:7px;cursor:col-resize;-webkit-user-select:none;-moz-user-select:none;user-select:none}.col-resize:hover{background:rgba(255,255,255,.45)}table.tf-grid tbody td{border-bottom:1px solid var(--tf-border);border-right:1px solid var(--tf-border);padding:0;white-space:nowrap}table.tf-grid tbody tr:nth-child(2n){background:#fbfdfa}table.tf-grid tbody tr:hover{background:var(--tf-green-light)}table.tf-grid tbody td.ctx{padding:4px 5px;color:var(--tf-gray);background:#f3f5f1;overflow:hidden;text-overflow:ellipsis}.cell-input{border:1px solid transparent;background:transparent;width:100%;padding:4px 6px;font-size:13px;font-family:inherit}.btn-split{padding:3px 10px;font-size:11px;white-space:nowrap}.btn-remove{padding:3px 7px;margin-left:4px;color:var(--tf-red);border-color:var(--tf-border);font-weight:700}.btn-remove:hover:not(:disabled){background:#fbe3e3;border-color:var(--tf-red)}.cell-input:focus{outline:none;border:1px solid var(--tf-green);background:#fff;box-shadow:inset 0 0 0 1px var(--tf-green)}.cell-dirty{background:#fffbe6}td.center{text-align:center}table.tf-grid td.sticky-col,table.tf-grid th.sticky-col{position:-webkit-sticky;position:sticky;left:0;border-right:1px solid var(--tf-border)}table.tf-grid tbody td.sticky-col{z-index:3;background:#fff}table.tf-grid thead th.sticky-col{z-index:5}.pill{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:700}.pill-notsub{background:#eee;color:#555}.pill-sub{background:#e3f0fb;color:var(--tf-blue)}.pill-appr{background:var(--tf-green-light);color:var(--tf-green-dark)}.pill-rej{background:#fbe3e3;color:var(--tf-red)}.tf-stickybar{position:fixed;bottom:0;left:0;right:0;z-index:20;background:#fff;border-top:1px solid var(--tf-border);padding:10px 20px;display:flex;align-items:center;gap:12px;box-shadow:0 -2px 8px rgba(0,0,0,.12)}.tf-banner{background:var(--tf-green-light);border:1px solid var(--tf-green);color:var(--tf-green-dark);padding:10px 14px;border-radius:8px;margin-bottom:14px}.muted{color:var(--tf-gray)}.tf-allclear{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;background:linear-gradient(135deg,var(--tf-green-light),#ffffff);border:1px solid var(--tf-green);border-radius:12px;padding:36px 24px;margin:8px 0 16px}.tf-allclear-emoji{font-size:44px;line-height:1}.tf-allclear-text{font-size:18px;font-weight:700;color:var(--tf-green-dark)}.toast{position:fixed;bottom:80px;right:24px;background:var(--tf-green-dark);color:#fff;padding:12px 18px;border-radius:8px;box-shadow:0 4px 14px rgba(0,0,0,.25);z-index:50}.tf-landing{max-width:880px;margin:48px auto;padding:0 20px}.tf-cards{display:grid;grid-template-columns:1fr 1fr;grid-gap:20px;gap:20px;margin-top:24px}.tf-card{background:#fff;border:1px solid var(--tf-border);border-radius:12px;padding:24px;text-decoration:none;color:inherit;box-shadow:0 1px 4px rgba(0,0,0,.05);transition:transform .1s,box-shadow .1s}.tf-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px rgba(0,0,0,.1);border-color:var(--tf-green)}.tf-card h3{margin:0 0 8px;color:var(--tf-green-dark)}@media (max-width:720px){.tf-cards{grid-template-columns:1fr}}.req{color:var(--tf-red)}.help-link{font-size:12px}