/* Productivity tools: timers, clocks, wheel, lists, calendars, habit grid */
.prod-center{text-align:center}
.prod-small{font-size:.88rem}
.prod-h3{font-size:1.05rem;margin:14px 0 8px}
.prod-btnrow{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.prod-chips{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.prod-danger{color:var(--danger)!important}
.prod-tblwrap{overflow-x:auto;max-width:100%;position:relative}
.prod-tblwrap:focus-visible{box-shadow:var(--focus-ring);outline:none}

/* timer displays */
.prod-timer,.prod-meter{margin:16px 0;padding:16px;border:1px solid var(--border);border-radius:var(--r);background:var(--surface-2);text-align:center}
.prod-display{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:clamp(2.6rem,1.5rem + 7vw,5.2rem);font-weight:700;line-height:1.1;margin:4px 0;color:var(--text);overflow-wrap:anywhere}
.prod-phase{font-weight:750;font-size:1.15rem;letter-spacing:.04em;text-transform:uppercase;margin:0;color:var(--text-2)}
.prod-phase.is-work{color:var(--danger)}
.prod-phase.is-rest{color:var(--ok)}
.prod-phase.is-done{color:var(--primary)}
.prod-bar{height:10px;border-radius:999px;background:var(--border);overflow:hidden;margin:10px auto;max-width:520px}
.prod-bar span{display:block;height:100%;width:0;background:var(--primary);transition:width .25s linear}
@media (prefers-reduced-motion:reduce){.prod-bar span{transition:none}}

/* alarm */
.prod-ring{margin:12px auto;max-width:520px;padding:14px;border:3px solid var(--warn);border-radius:var(--r);background:var(--warn-bg)}
.prod-ring-msg{font-size:1.3rem;font-weight:750;margin:0 0 6px;color:var(--text)}
.prod-ring .prod-btnrow{justify-content:center}
.prod-list{list-style:none;margin:0;padding:0;text-align:left}
.prod-list li{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:8px 0;border-bottom:1px solid var(--border)}
.prod-list li .grow{flex:1 1 180px;min-width:0;overflow-wrap:anywhere}

/* wheel */
.prod-wheel-wrap{display:flex;justify-content:center;margin:12px 0}
.prod-wheel{width:min(440px,100%);height:auto;aspect-ratio:1/1}
.prod-winner{font-size:1.6rem;font-weight:800;margin:0;overflow-wrap:anywhere}

/* coins and dice */
.prod-coins{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:8px 0}
.prod-coin{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:50%;font-weight:800;font-size:.85rem;border:3px solid var(--border-strong);background:var(--surface-2);color:var(--text)}
.prod-coin.h{background:var(--t-orange);border-color:var(--c-orange)}
.prod-coin.t{background:var(--t-blue);border-color:var(--c-blue)}
.prod-die{display:inline-flex;align-items:center;justify-content:center;min-width:48px;height:48px;padding:0 8px;border-radius:10px;font-weight:800;font-size:1.15rem;border:2px solid var(--border-strong);background:var(--surface);color:var(--text)}
.prod-die.drop{opacity:.55;text-decoration:line-through}
.prod-flipping .prod-coin{animation:prodflip .45s ease-out}
@keyframes prodflip{0%{transform:rotateY(0)}100%{transform:rotateY(720deg)}}
@media (prefers-reduced-motion:reduce){.prod-flipping .prod-coin{animation:none}}

/* teams */
.prod-teams{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin:0}
.prod-team{border:1px solid var(--border);border-radius:var(--r-sm);padding:10px 12px;background:var(--surface)}
.prod-team h4{margin:0 0 6px;font-size:1rem}
.prod-team ol{margin:0;padding-left:1.3em}
.prod-team li{overflow-wrap:anywhere}

/* world clock / add rows */
.prod-addrow{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:flex-end;margin:0 0 12px}
.prod-addrow .field{flex:1 1 240px;margin:0;min-width:0}
.prod-addrow select{width:100%}
.prod-clocks{list-style:none;padding:0;margin:0 0 8px;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.prod-clocks li{border:1px solid var(--border);border-radius:var(--r);padding:12px 14px;background:var(--surface-2)}
.prod-clocks .city{font-weight:750;margin:0;overflow-wrap:anywhere}
.prod-clocks .time{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:1.9rem;font-weight:700;margin:2px 0}
#world-clock-share{overflow-wrap:anywhere}
.prod-clocks .meta{font-size:.88rem;color:var(--text-2);margin:0 0 6px}

/* fullscreen clock */
.prod-bigclock{--bc-fg:#fff;--bc-bg:#000;position:relative;background:var(--bc-bg);color:var(--bc-fg);border-radius:var(--r);padding:28px 12px;text-align:center;margin:12px 0;overflow:hidden}
.prod-bc-time{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:700;font-size:clamp(2.4rem,1rem + 9vw,7rem);line-height:1;margin:0;color:inherit;white-space:nowrap}
.prod-bc-date{font-size:clamp(1rem,.8rem + 1.5vw,1.8rem);margin:10px 0 0;color:inherit}
.prod-bc-exit{position:absolute;top:12px;right:12px;display:none}
.prod-bigclock:fullscreen,.prod-bigclock.prod-maximized{display:flex;flex-direction:column;justify-content:center;align-items:center;border-radius:0;margin:0}
.prod-bigclock:fullscreen .prod-bc-time,.prod-bigclock.prod-maximized .prod-bc-time{font-size:min(19vw,40vh)}
.prod-bigclock:fullscreen .prod-bc-date,.prod-bigclock.prod-maximized .prod-bc-date{font-size:min(4.5vw,7vh)}
.prod-bigclock:fullscreen .prod-bc-exit,.prod-bigclock.prod-maximized .prod-bc-exit{display:inline-flex}
.prod-maximized{position:fixed!important;inset:0;z-index:9999;width:100vw;height:100vh}
html.prod-noscroll,html.prod-noscroll body{overflow:hidden}

/* breathing */
.prod-breath-wrap{display:flex;flex-direction:column;align-items:center;margin:16px 0;padding:16px;border:1px solid var(--border);border-radius:var(--r);background:var(--surface-2)}
.prod-breath{width:180px;height:180px;border-radius:50%;background:radial-gradient(circle at 40% 35%,var(--t-teal),var(--c-teal));transform:scale(.55);transition-property:transform;transition-timing-function:ease-in-out;margin:12px 0 18px}
.prod-breath.static{display:none}
.prod-breath-cue{font-size:1.6rem;font-weight:800;margin:0;text-align:center}
.prod-breath-count{font-family:var(--mono);font-size:2.2rem;font-weight:700;margin:2px 0}
.prod-steps ol{margin:0;padding-left:1.4em}
@media (prefers-reduced-motion:reduce){.prod-breath{display:none}}

/* typing test */
.prod-type{margin:14px 0}
.prod-type-text{font-family:var(--mono);font-size:1.05rem;line-height:1.9;padding:12px 14px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);overflow-wrap:anywhere;white-space:pre-wrap;margin:0 0 12px}
.prod-type-text .ok{color:var(--ok)}
.prod-type-text .bad{color:var(--danger);background:var(--danger-bg);text-decoration:underline wavy;text-underline-offset:3px}
.prod-type-text .cur{outline:2px solid var(--primary);outline-offset:1px;border-radius:2px}
.prod-type textarea{width:100%;font-family:var(--mono);font-size:1rem}
.prod-type-live{font-weight:650;color:var(--text-2);margin:8px 0 0}

/* invoice */
.prod-items{border:1px solid var(--border);border-radius:var(--r);padding:12px;margin:0 0 12px;min-width:0}
.prod-items legend{font-weight:700;padding:0 6px}
.prod-itemtbl{width:100%;border-collapse:collapse;min-width:520px}
.prod-itemtbl th{text-align:left;font-size:.88rem;color:var(--text-2);padding:4px 6px}
.prod-itemtbl td{padding:4px 6px;vertical-align:middle}
.prod-itemtbl input{width:100%;min-width:0;padding:8px;border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--bg);color:var(--text);font:inherit}
.prod-itemtbl td.amt{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.prod-itemtbl .q{width:90px}.prod-itemtbl .p{width:130px}
.prod-totals{margin:0 0 14px;display:flex;justify-content:flex-end}
.prod-totals dl{display:grid;grid-template-columns:auto auto;gap:4px 18px;margin:0;font-variant-numeric:tabular-nums}
.prod-totals dt{color:var(--text-2)}
.prod-totals dd{margin:0;text-align:right}
.prod-totals .grand{font-weight:800;font-size:1.1rem;color:var(--text)}

/* signature */
.prod-sigwrap{margin:0 0 12px}
.prod-sigpad{display:block;width:100%;max-width:640px;height:auto;aspect-ratio:640/220;border:2px dashed var(--border-strong);border-radius:var(--r-sm);background:#fff;touch-action:none;cursor:crosshair}
.prod-sigprev{display:inline-block;padding:12px;border-radius:var(--r-sm);background-color:#fff;background-image:linear-gradient(45deg,#e6e9ef 25%,transparent 25%),linear-gradient(-45deg,#e6e9ef 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#e6e9ef 75%),linear-gradient(-45deg,transparent 75%,#e6e9ef 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0}
.prod-sigprev img{display:block;max-width:100%;height:auto}

/* email signature preview */
.prod-sigframe{width:100%;min-height:170px;border:1px solid var(--border);border-radius:var(--r-sm);background:#fff}

/* notepad */
.prod-saved{font-size:.9rem;color:var(--text-2);margin:4px 0 0;min-height:1.4em}
.prod-undo{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* to-do */
.prod-todo{margin:12px 0}
.prod-filter{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 8px}
.prod-filter [aria-pressed="true"]{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}
.prod-count{margin:0 0 6px;color:var(--text-2)}
.prod-tasks{list-style:none;margin:0;padding:0}
.prod-tasks li{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:8px 0;border-bottom:1px solid var(--border)}
.prod-tasks li .chk{display:flex;align-items:center;gap:8px;flex:1 1 220px;min-width:0}
.prod-tasks li .chk input{width:22px;height:22px;flex:0 0 auto}
.prod-tasks li .chk label{overflow-wrap:anywhere;cursor:pointer}
.prod-tasks li.done .chk label{text-decoration:line-through;color:var(--text-3)}
.prod-tag{display:inline-block;font-size:.78rem;font-weight:700;padding:1px 8px;border-radius:999px;border:1px solid var(--border-strong);color:var(--text-2);white-space:nowrap}
.prod-tag.high{border-color:var(--danger);color:var(--danger)}
.prod-tag.over{border-color:var(--warn);color:var(--warn);background:var(--warn-bg)}
.prod-tasks .acts{display:flex;gap:4px}
.prod-tasks .acts .btn{min-width:32px;min-height:32px;padding:4px 8px}

/* calendars */
.prod-cal{display:grid;gap:18px}
.prod-cal.year{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.prod-cal h3{margin:0 0 6px;font-size:1.05rem}
.prod-cal table{width:100%;border-collapse:collapse;table-layout:fixed;font-variant-numeric:tabular-nums}
.prod-cal th,.prod-cal td{border:1px solid var(--border-strong);padding:4px;text-align:left;vertical-align:top;font-size:.9rem}
.prod-cal th{background:var(--surface-2);font-size:.8rem}
.prod-cal.month td{height:64px}
.prod-cal td.we{background:var(--surface-2)}
.prod-cal td.out{color:transparent}
.prod-cal td.wk,.prod-cal th.wk{width:2.4em;color:var(--text-3);font-size:.75rem}
.prod-cal-title{font-size:1.3rem;margin:0 0 8px}
@media print{
  html.prod-printing body>*:not(main){display:none!important}
  html.prod-printing main .tool-layout>aside,html.prod-printing main .crumbs,html.prod-printing main .page-head,html.prod-printing main .article-section,html.prod-printing main #ui-h,
  html.prod-printing .tool-form,html.prod-printing .tool-status,html.prod-printing .tool-note,html.prod-printing .out:not([data-out="cal"]),html.prod-printing .out-head{display:none!important}
  html.prod-printing .prod-cal th,html.prod-printing .prod-cal td{border-color:#555;color:#000}
  html.prod-printing .prod-cal td.we{background:#eee!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  html.prod-printing .prod-calpage{break-after:page}
}

/* meeting planner */
.prod-zones{border:1px solid var(--border);border-radius:var(--r);padding:12px;margin:0 0 12px;min-width:0}
.prod-zones legend{font-weight:700;padding:0 6px}
.prod-zonelist{list-style:none;margin:0 0 12px;padding:0}
.prod-zonelist li{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:flex-end;padding:8px 0;border-bottom:1px solid var(--border)}
.prod-zonelist .zn{flex:1 1 200px;font-weight:650;min-width:0;overflow-wrap:anywhere;align-self:center}
.prod-zonelist label{display:block;font-size:.82rem;color:var(--text-2)}
.prod-zonelist input[type=time]{padding:6px;border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--bg);color:var(--text);font:inherit}
.out[data-out="grid"] td.all{background:var(--ok-bg);font-weight:650}
.out[data-out="grid"] td.off{color:var(--text-3)}

/* habit tracker */
.prod-monthnav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:12px 0 8px}
.prod-monthnav h3{margin:0;text-align:center}
.prod-habitgrid{border-collapse:collapse;font-size:.85rem}
.prod-habitgrid th,.prod-habitgrid td{border:1px solid var(--border);padding:2px;text-align:center}
.prod-habitgrid th[scope=row]{text-align:left;padding:4px 8px;min-width:140px;max-width:220px;white-space:normal;overflow-wrap:anywhere;font-weight:650}
.prod-habitgrid thead th{font-size:.75rem;color:var(--text-2);min-width:28px}
.prod-habitgrid button.day{width:28px;height:28px;padding:0;border:1px solid var(--border-strong);border-radius:6px;background:var(--surface);color:var(--text);font-weight:800;cursor:pointer}
.prod-habitgrid button.day[aria-pressed="true"]{background:var(--ok);color:var(--bg);border-color:var(--ok)}
.prod-habitgrid button.day.today{box-shadow:0 0 0 2px var(--primary)}
.prod-habitgrid button.day:disabled{opacity:.35;cursor:not-allowed}
.prod-habitgrid .hb-acts{display:flex;gap:4px;justify-content:center}
.prod-habitgrid .hb-acts .btn{min-height:28px;padding:2px 8px;font-size:.78rem}
