.weekly-page{max-width:960px}
.wk-tool{padding:16px}
.wk-title{font-size:1.2rem;margin:0 0 .9rem}
.wk-sr{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}

/* week navigation */
.wk-weeknav{align-items:center;display:grid;gap:.5rem;grid-template-columns:1fr 1fr;margin-bottom:1rem}
.wk-weekname{grid-column:1/-1;grid-row:1;text-align:center}
.wk-weeklabel{font-size:1.1rem;font-weight:750;margin:0}
.wk-weekrel{color:#475569;font-size:.9rem;margin:.1rem 0 0}
.wk-backnow{grid-column:1/-1}
.wk-weeknav .intent-preset{width:100%}
.wk-weeknav .intent-preset[disabled]{cursor:not-allowed;opacity:.45}

/* punch mode */
.wk-punch{background:#f8fafc;border:1px solid #cbd5e1;border-radius:12px;margin-bottom:1.1rem;padding:14px}
.wk-punch h3{font-size:1rem;margin:0 0 .4rem}
.wk-status{color:#0f172a;font-size:1.05rem;font-weight:650;line-height:1.4;margin:0 0 .8rem;min-height:2.9em}
.wk-status[data-state="working"]{color:#166534}
.wk-status[data-state="break"]{color:#92400e}
.wk-punch-buttons{display:grid;gap:.6rem;grid-template-columns:1fr 1fr}
.wk-punch-btn{border:0;border-radius:10px;color:#fff;cursor:pointer;font:inherit;font-size:1.05rem;font-weight:750;min-height:60px;padding:.6rem .5rem}
.wk-in{background:#166534}
.wk-in:hover:not(:disabled){background:#14532d}
.wk-break{background:#92400e}
.wk-break:hover:not(:disabled){background:#78350f}
.wk-endbreak{background:#1d4ed8}
.wk-endbreak:hover:not(:disabled){background:#1e40af}
.wk-out{background:#b91c1c}
.wk-out:hover:not(:disabled){background:#991b1b}
.wk-punch-btn:disabled{background:#e2e8f0;color:#64748b;cursor:not-allowed}
.wk-punch-btn:focus-visible,.wk-linkbtn:focus-visible,.wk-chip:focus-visible,.wk-table input:focus-visible,.wk-settings select:focus-visible{outline:3px solid rgba(37,99,235,.4);outline-offset:2px}
.wk-punch-message{color:#475569;margin:.6rem 0 0;min-height:1.4em}
.wk-linkbtn{background:none;border:0;color:#1d4ed8;cursor:pointer;font:inherit;min-height:44px;padding:.4rem .2rem;text-decoration:underline}
.wk-linkbtn[data-armed="true"]{color:#b91c1c;font-weight:700}

/* week grid: stacked cards on phones */
.wk-table{border-collapse:collapse;display:block;width:100%}
.wk-table caption{color:#475569;display:block;font-size:.9rem;line-height:1.45;margin:0 0 .8rem;text-align:left}
.wk-table thead{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}
.wk-table tbody{display:grid;gap:.7rem}
.wk-table tr{background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;display:grid;gap:.65rem;grid-template-columns:repeat(2,minmax(0,1fr));padding:.8rem}
.wk-table tr.is-today{background:#eff6ff;border-color:#2563eb}
.wk-table tr[data-invalid="true"]{background:#fff1f2;border-color:#be123c}
.wk-table tbody th{align-items:baseline;border-bottom:1px solid #e2e8f0;display:flex;flex-wrap:wrap;font-size:1rem;gap:.4rem;grid-column:1/-1;padding:0 0 .5rem;text-align:left}
.wk-daydate{color:#475569;font-weight:500}
.wk-today{background:#1d4ed8;border-radius:999px;color:#fff;font-size:.72rem;font-weight:700;letter-spacing:.02em;padding:.1rem .5rem;text-transform:uppercase}
.wk-today[hidden]{display:none}
.wk-table td{display:block;min-width:0;padding:0}
.wk-table td:nth-child(4),.wk-table td.wk-paid{grid-column:1/-1}
.wk-cell-label{color:#475569;display:block;font-size:.8rem;font-weight:650;margin-bottom:.3rem}
.wk-table input{background:#fff;border:1px solid #94a3b8;border-radius:8px;box-sizing:border-box;font:inherit;font-size:16px;min-height:48px;min-width:0;padding:.5rem .6rem;width:100%}
.wk-table [aria-invalid="true"]{border-color:#be123c;box-shadow:0 0 0 1px #be123c}
.wk-break-controls{align-items:stretch;display:flex;gap:.5rem}
.wk-break-controls input{flex:1 1 auto}
.wk-chip{background:#fff;border:1px solid #94a3b8;border-radius:8px;color:#334155;cursor:pointer;flex:0 0 auto;font:inherit;font-weight:650;min-height:48px;min-width:56px;padding:.3rem .7rem}
.wk-chip:hover{background:#f1f5f9}
.wk-paid{background:#fff;border:1px solid #dbeafe;border-radius:8px;padding:.5rem .6rem!important}
.wk-paid output{display:block;font:inherit;font-size:1.1rem;font-variant-numeric:tabular-nums;font-weight:750;overflow-wrap:anywhere}
.wk-daynote{color:#475569;display:block;min-height:1.1em}
.wk-form-message{color:#9f1239;font-weight:650;margin:.8rem 0 0;min-height:1.4em}
.wk-grid-actions{margin:.4rem 0 1rem}
.wk-grid-actions .intent-preset{width:100%}

/* totals */
.wk-result{background:#f8fbff;border:1px solid #bfdbfe;border-radius:12px;margin-top:.5rem;padding:16px}
.wk-kicker{color:#475569;font-size:.95rem;font-weight:650;margin:0 0 .25rem}
.wk-total{display:block;font-size:clamp(1.7rem,6vw,2.35rem);line-height:1.15}
.wk-summary{display:grid;gap:.5rem;grid-template-columns:1fr;margin:1rem 0 0}
.wk-summary div{background:#fff;border:1px solid #dbeafe;border-radius:8px;padding:.65rem .75rem}
.wk-summary div[hidden]{display:none}
.wk-summary dt{color:#64748b;font-size:.88rem}
.wk-summary dd{font-size:1.1rem;font-variant-numeric:tabular-nums;font-weight:750;margin:.15rem 0 0}
.wk-summary dd.wk-paydetail{color:#475569;font-size:.85rem;font-weight:500}
.wk-projection{font-size:1.05rem;font-weight:700;margin:1rem 0 .2rem}
.wk-left{color:#334155;font-weight:650;margin:0 0 .6rem;min-height:1.4em}
.wk-small{color:#475569;font-size:.88rem;line-height:1.5;margin:.4rem 0 0}

/* settings */
.wk-settings{border:1px solid #e2e8f0;border-radius:12px;margin:1rem 0 0;padding:14px}
.wk-settings legend{font-weight:700;padding:0 .4rem}
.wk-settings select{background:#fff;border:1px solid #94a3b8;border-radius:8px;font:inherit;font-size:16px;min-height:44px;padding:9px 11px;width:100%}
.wk-settings-note{color:#9f1239;font-weight:650;margin:.6rem 0 0;min-height:1.2em}

/* actions */
.wk-actions{align-items:center;display:grid;gap:.6rem;grid-template-columns:1fr;margin-top:1rem}
.wk-actions .intent-copy,.wk-actions .intent-preset{width:100%}
.wk-actions .intent-copy-status{min-height:1.25em}
.wk-danger{display:flex;flex-wrap:wrap;gap:.2rem 1.2rem;margin-top:.6rem}
.wk-tool-message{color:#334155;margin:.4rem 0 0;min-height:1.4em}
.wk-save-note{margin-top:.2rem}
.wk-save-failed{color:#9f1239;font-weight:650}
.wk-steps{color:#334155;line-height:1.6;padding-left:1.25rem}
.wk-steps li+li{margin-top:.35rem}

@media(max-width:640px){
  .weekly-page{padding-left:14px;padding-right:14px}
}
@media(max-width:359px){
  .wk-table tr{grid-template-columns:1fr}
  .wk-punch-buttons{grid-template-columns:1fr}
}

/* wider screens: real table, four punch buttons in a row */
@media(min-width:769px){
  .wk-tool{padding:20px}
  .wk-weeknav{grid-template-columns:auto 1fr auto}
  .wk-weekname{grid-column:2;grid-row:1}
  .wk-weeknav .intent-preset{width:auto}
  .wk-backnow{grid-column:1/-1;justify-self:center}
  .wk-punch-buttons{grid-template-columns:repeat(4,minmax(0,1fr))}
  .wk-table{display:table}
  .wk-table caption{display:table-caption}
  .wk-table thead{clip:auto;height:auto;margin:0;overflow:visible;position:static;white-space:normal;width:auto}
  .wk-table tbody{display:table-row-group}
  .wk-table tr{background:transparent;border:0;border-radius:0;display:table-row;padding:0}
  .wk-table tr.is-today{background:#eff6ff}
  .wk-table tr[data-invalid="true"]{background:#fff1f2}
  .wk-table th,.wk-table td{border-bottom:1px solid #e2e8f0;display:table-cell;padding:.6rem .5rem;vertical-align:middle}
  .wk-table thead th{color:#334155;font-size:.88rem;text-align:left}
  .wk-table tbody th{display:table-cell;font-size:.98rem;white-space:nowrap}
  .wk-daydate{display:block}
  .wk-cell-label{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}
  .wk-table input{min-height:42px}
  .wk-chip{min-height:42px;min-width:44px}
  .wk-table td.wk-paid{background:transparent;border:0;border-bottom:1px solid #e2e8f0;border-radius:0;padding:.6rem .5rem!important;white-space:nowrap}
  .wk-grid-actions .intent-preset{width:auto}
  .wk-summary{grid-template-columns:repeat(3,minmax(0,1fr))}
  .wk-actions{display:flex;flex-wrap:wrap}
  .wk-actions .intent-copy,.wk-actions .intent-preset{width:auto}
}
