:root{--bg:#f6f7fb;--card:#fff;--text:#111827;--muted:#667085;--line:#e5e7eb;--accent:#2563eb}
*{box-sizing:border-box;min-width:0}
html,body{width:100%;max-width:100%;overflow-x:hidden}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}
body.dark{--bg:#0f172a;--card:#172033;--text:#f8fafc;--muted:#aab4c3;--line:#2d3a50;--accent:#60a5fa}
header{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:6px;padding:calc(10px + env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) 10px max(10px,env(safe-area-inset-left));background:var(--card);border-bottom:1px solid var(--line)}
.title{flex:1;display:flex;flex-direction:column}.title b{font-size:18px;white-space:nowrap}.title small{color:var(--muted);margin-top:2px}.icon{border:0;background:transparent;color:var(--text);font-size:22px;padding:7px}
.switch{display:flex;gap:7px;padding:10px 12px;background:var(--bg);max-width:100%}button{font:inherit}.switch button,.drawer button{border:1px solid var(--line);background:var(--card);color:var(--text);padding:10px 13px;border-radius:12px}.switch button.active{background:var(--accent);color:#fff;border-color:var(--accent)}
main{padding:0 10px 90px;max-width:100%;overflow:hidden}.sectionHead{display:flex;align-items:center;justify-content:space-between}.sectionHead h1{font-size:24px}.sectionHead button{border:0;border-radius:50%;width:44px;height:44px;background:var(--accent);color:#fff;font-size:25px}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px;margin-bottom:10px}.cardTop{display:flex;gap:8px;align-items:center}.time{font-weight:800;font-size:16px}.taskTitle{font-weight:700;flex:1}.place,.note{color:var(--muted);font-size:14px;margin-top:6px}.badge{font-size:10px;padding:5px 7px;border-radius:999px;background:#e5e7eb;color:#111}.badge.PILNE{background:#fee2e2;color:#991b1b}.actions{display:flex;justify-content:flex-end;margin-top:8px}.actions button{border:0;background:transparent;color:var(--accent)}
.calHead{display:flex;align-items:center;justify-content:space-between}.calHead h2{font-size:22px;text-align:center;margin:16px 0}.calHead button{border:0;background:transparent;color:var(--text);font-size:34px}
.calendarControls{display:flex;gap:8px;align-items:center;margin:0 2px 10px}.hint{color:var(--muted);font-size:12px;margin:0;flex:1}.calendarControls button{border:1px solid var(--line);background:var(--card);color:var(--text);padding:6px 8px;border-radius:9px;font-size:11px}
.calendarWrap{width:100%;max-width:100%;overflow:hidden;touch-action:pan-y}
.week,#calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;width:100%;max-width:100%}.week{text-align:center;color:var(--muted);font-size:12px;margin-bottom:4px}
.day{min-width:0;min-height:76px;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:4px;font-size:12px;overflow:hidden;user-select:none;-webkit-user-select:none;touch-action:pan-y}.day.muted{opacity:.35}.day strong{display:block}.day .weekdayMini{display:none;color:var(--muted);font-size:9px;margin-left:4px}.event{display:block;width:100%;max-width:100%;min-width:0;margin-top:3px;padding:3px;border-radius:5px;background:#dbeafe;color:#1e3a8a;font-size:9px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.more{margin-top:3px;font-size:9px;color:var(--accent);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* powiększony kalendarz jak galeria */
.calendarWrap.zoom4 .week,.calendarWrap.zoom2 .week{display:none}
.calendarWrap.zoom4 #calendar{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
.calendarWrap.zoom4 .day{min-height:120px;padding:7px;font-size:14px}
.calendarWrap.zoom4 .day .weekdayMini{display:inline}
.calendarWrap.zoom4 .event{font-size:11px;padding:5px}
.calendarWrap.zoom2 #calendar{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.calendarWrap.zoom2 .day{min-height:175px;padding:10px;font-size:17px}
.calendarWrap.zoom2 .day .weekdayMini{display:inline;font-size:11px}
.calendarWrap.zoom2 .event{font-size:13px;padding:7px;white-space:normal}
.calendarWrap.zoom2 .more{font-size:12px}

.drawer{position:fixed;top:0;bottom:0;width:min(82vw,330px);z-index:20;background:var(--card);padding:calc(25px + env(safe-area-inset-top)) 18px 20px;transition:.22s;box-shadow:0 0 30px #0004}.drawer.left{left:0;transform:translateX(-105%)}.drawer.right{right:0;transform:translateX(105%)}.drawer.open{transform:none}.drawer button{width:100%;text-align:left;margin-bottom:8px}.overlay{position:fixed;inset:0;background:#0007;z-index:15}
.equip{display:flex;gap:8px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}
dialog{border:0;border-radius:18px;background:var(--card);color:var(--text);width:min(92vw,520px);max-height:88vh;overflow:auto}dialog::backdrop{background:#0008}input,select,textarea{width:100%;padding:12px;margin:6px 0;border:1px solid var(--line);border-radius:10px;background:var(--bg);color:var(--text);font:inherit}.row{display:flex;gap:8px}.dialogButtons{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}.dialogButtons button,.dayDialogHead button{padding:10px 15px;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--text)}.dialogButtons .primary,#saveTask{background:var(--accent);color:#fff;border-color:var(--accent)}.dayDialogHead{display:flex;align-items:center;justify-content:space-between}.dayItem{border-bottom:1px solid var(--line);padding:12px 0}.dayItem:last-child{border-bottom:0}.dayItem .title2{font-weight:700}.dayItem .meta{color:var(--muted);font-size:13px;margin-top:4px}.configInfo,.fieldLabel,.checkRow,.statusBox{font-size:14px}.fieldLabel{display:block;color:var(--muted);margin-top:8px}.checkRow{display:flex;gap:8px;align-items:center;margin:10px 0}.checkRow input{width:auto;margin:0}.disabledRow{opacity:.55}.statusBox{padding:10px;border-radius:10px;background:var(--bg);border:1px solid var(--line);margin:8px 0}.warning{border-color:#d97706}
@media (max-width:430px){main{padding-left:8px;padding-right:8px}.day{min-height:72px;padding:3px;font-size:11px}.event{font-size:8.5px;padding:2px}.week,#calendar{gap:2px}.switch button{padding:9px 11px}}


/* 0.3.0 — przypomnienia i zadania po terminie */
#overdueCount{float:right;font-weight:700;color:#f59e0b}
.subhead{margin:16px 0 4px}
.secondaryBtn,.wideBtn{border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:10px;padding:10px 12px}
.wideBtn{width:100%;margin-top:8px}
.tinyInfo{font-size:12px;color:var(--muted);line-height:1.35}
.overdueCard{border-color:#d97706}
.overdueLabel{color:#d97706;font-size:12px;font-weight:700;margin-top:6px}

.googleButtons{display:flex;gap:8px;margin:8px 0}
.googleButtons button{flex:1}
.primaryBtn{border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:10px;padding:10px 12px}
.googleConnected{border-color:#16a34a!important}
.googleError{border-color:#dc2626!important}

.googleLoginBtn{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  padding:12px 14px;
  border-radius:12px;
  border:1px solid var(--line);
  background:#fff;
  color:#1f2937;
  font-weight:600;
  margin:10px 0;
}
.gMark{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:24px;
  height:24px;
  border-radius:50%;
  font-weight:800;
  font-size:18px;
  color:#4285F4;
}
.reminderGrid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px;margin:8px 0}.reminderGrid label{display:flex;gap:7px;align-items:center;border:1px solid var(--line);padding:9px;border-radius:10px;background:var(--bg)}.reminderGrid input{width:auto;margin:0}.locationMethodGrid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:8px 0}.itemDone{opacity:.55}.itemDone b{text-decoration:line-through}.doneStamp{font-size:12px;color:var(--muted)}
/* 0.5.1 - poprawka Po terminie + głos */
.taskHeadActions{display:flex;align-items:center;gap:7px}
.voiceTaskBtn{background:var(--accent);color:#fff}
.voiceTaskBtn.listening{animation:voicePulse 1s infinite;box-shadow:0 0 0 0 rgba(239,68,68,.55);background:#ef4444}
.voiceStatus{margin:-4px 0 10px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);font-size:13px;color:var(--muted)}
.voiceStatus.listening{color:var(--text);font-weight:600}
@keyframes voicePulse{0%{transform:scale(1)}50%{transform:scale(1.08)}100%{transform:scale(1)}}

/* 0.5.8 Sklepy / Zakupy */
.configShopRow{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid rgba(127,127,127,.22)}
.configShopRow>div{min-width:0}
.shopCard .shoppingItems{margin-top:10px;display:grid;gap:7px}
.shopCheckRow{display:flex;align-items:center;gap:10px;padding:9px;border-radius:9px;background:rgba(127,127,127,.08)}
.shopCheckRow input{width:20px;height:20px;flex:0 0 auto}
.shopCheckRow.itemDone span{text-decoration:line-through;opacity:.55}
.dangerBtn{background:#a22;color:#fff}

#addShoppingListBtn{white-space:nowrap}
#shoppingListDialog select,#shoppingListDialog input,#shoppingListDialog textarea{width:100%;box-sizing:border-box}

.serviceDone{opacity:.65} #solutionDialog input,#solutionDialog textarea,#serviceDialog input,#serviceDialog textarea,#serviceDialog select{width:100%;box-sizing:border-box}

.moduleActionBar{display:flex!important;width:100%;box-sizing:border-box;padding:10px 0 14px;position:relative;z-index:20}.moduleAddBtn{display:block!important;visibility:visible!important;opacity:1!important;width:100%;min-height:48px;font-size:16px;font-weight:700;cursor:pointer}
