@font-face{font-family:Vazirmatn;src:url('./fonts/Vazirmatn-wght.woff2') format('woff2');font-weight:100 900;font-display:swap}
:root{font-family:Vazirmatn,Tahoma,sans-serif;font-synthesis:none;color-scheme:light;--bg:#f7f7fa;--surface:#fff;--raised:#f0edf8;--ink:#282635;--muted:#686b79;--line:#e4e4ec;--accent:#7156bc;--accent-ink:#fff;--hover:#6145aa;--soft:#ede8f8;--green:#287559;--green-bg:#eaf5ef;--orange:#ab4e2b;--orange-bg:#fff0e7;--error:#ad383e;--shadow:0 18px 55px #24203813}
:root[data-theme=dark]{color-scheme:dark;--bg:#13151c;--surface:#1c1f29;--raised:#252535;--ink:#eeeef5;--muted:#adb1c3;--line:#343643;--accent:#bea8ff;--accent-ink:#22183c;--hover:#cbbaff;--soft:#332a49;--green:#91d7b6;--green-bg:#20392f;--orange:#ffbd97;--orange-bg:#3c2a26;--error:#ff9da5;--shadow:0 18px 55px #0004}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;touch-action:manipulation;border:0}button:disabled{cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--accent);outline-offset:3px}a{color:inherit;text-decoration:none}[hidden]{display:none!important}h1,h2,h3,p{margin:0}h1{font-size:27px;font-weight:750;line-height:1.7;letter-spacing:-.5px}h2{font-size:17px;font-weight:650;line-height:1.9}h3{font-size:14px;font-weight:600}p{line-height:1.9}.subtle{color:var(--muted);font-size:12px}.primary,.secondary{min-height:48px;border-radius:12px;padding:11px 20px;display:inline-flex;align-items:center;justify-content:center;gap:14px;font-size:14px;font-weight:600}.primary{background:var(--accent);color:var(--accent-ink)}.primary:hover{background:var(--hover)}.primary:disabled{opacity:.6}.primary>span{font-size:21px;line-height:1}.secondary{background:var(--raised);color:var(--ink)}.full-width{width:100%}.text-button{min-height:44px;padding:10px 8px;background:transparent;color:var(--accent);font-size:12px}.icon-button{min-width:44px;min-height:44px;background:transparent;color:var(--muted);border-radius:11px;font-size:23px;display:inline-grid;place-items:center}.icon-button:hover{background:var(--raised)}.icon-button:disabled{opacity:.3}
.topbar{background:var(--surface);border-bottom:1px solid var(--line);padding:12px 24px}.topbar-inner{width:min(940px,100%);margin:auto;display:flex;align-items:center;justify-content:space-between;gap:16px}.brand{display:flex;align-items:center;gap:10px;font-size:19px;font-weight:750;white-space:nowrap}.brand-icon{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink);font-size:26px;line-height:1}.header-actions,.account{display:flex;align-items:center;gap:6px}.account{border-right:1px solid var(--line);padding-right:12px;margin-right:5px;font-size:13px}
.dashboard{width:min(900px,100%);margin:auto;padding:28px 24px 44px}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}.page-heading h1{margin:3px 0}.tabs{display:flex;gap:24px;border-bottom:1px solid var(--line);margin-bottom:20px}.tabs button{background:none;color:var(--muted);font-size:14px;padding:9px 7px 13px;min-height:48px;border-bottom:3px solid transparent;border-radius:3px}.tabs button[aria-selected=true]{color:var(--accent);border-bottom-color:var(--accent);font-weight:650}.list-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.filters{display:flex;gap:5px;flex-wrap:wrap}.filters button,.date-shortcuts button{min-height:42px;padding:8px 12px;background:transparent;border:1px solid transparent;color:var(--muted);border-radius:10px;font-size:12px;display:flex;align-items:center;gap:7px}.filters button[aria-pressed=true],.date-shortcuts button[aria-pressed=true]{background:var(--soft);color:var(--accent);border-color:var(--soft);font-weight:600}.filters button span{font-size:11px}
.day-group{margin-bottom:25px}.day-heading{display:flex;align-items:center;gap:9px;margin:0 2px 11px;color:var(--muted);font-size:11px}.day-heading h2{font-size:13px;color:var(--ink)}.day-heading:after{content:"";height:1px;flex:1;background:var(--line)}.exercise-row{display:grid;grid-template-columns:minmax(0,1fr) 168px 168px;gap:12px;align-items:center;border:1px solid var(--line);border-radius:15px;background:var(--surface);padding:16px;margin-bottom:10px}.exercise-title{font-size:15px;font-weight:600;overflow-wrap:anywhere;line-height:1.9}.exercise-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:7px;color:var(--muted);font-size:11px;line-height:1.9}.due-tag{padding:2px 7px;border-radius:6px;background:var(--raised)}.due-tag.overdue{background:var(--orange-bg);color:var(--orange)}.person-cell{min-width:0}.person-status{min-height:62px;width:100%;padding:10px;border-radius:11px;border:1px solid var(--line);background:var(--bg);color:var(--muted);display:flex;align-items:center;gap:9px;text-align:right}.person-status.own{background:var(--surface);border-color:var(--accent);color:var(--ink)}.person-status[aria-checked=true],.person-status.done{background:var(--green-bg);color:var(--green);border-color:transparent}.person-status .indicator{flex-shrink:0;width:23px;height:23px;border:1.5px solid var(--line);border-radius:7px;display:grid;place-items:center;font-size:17px;font-weight:700}.person-status.own .indicator{border-color:var(--accent)}.person-status[aria-checked=true] .indicator,.person-status.done .indicator{border-color:var(--green);color:var(--green)}.person-name{display:block;font-size:12px;font-weight:650}.person-state{display:block;font-size:10px;margin-top:2px;font-weight:400;line-height:1.7}.person-status[data-busy=true]{opacity:.6;cursor:wait}.person-fee{font-size:11px;color:var(--orange);margin-top:6px;line-height:1.9;overflow-wrap:anywhere}.person-fee span{display:block;font-size:10px;color:var(--muted)}
.empty-state{text-align:center;padding:55px 12px 40px;background:var(--surface);border:1px dashed var(--line);border-radius:16px}.empty-icon{width:48px;height:48px;border-radius:15px;background:var(--soft);color:var(--accent);display:grid;place-items:center;margin:0 auto 14px;font-size:24px}.empty-state h2{font-size:15px;color:var(--muted);margin-bottom:5px}.rankings{display:grid;grid-template-columns:1fr 1fr;gap:14px}.section-heading{display:flex;justify-content:space-between;gap:12px;align-items:center;margin:24px 0 16px}.rank-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:22px}.rank-card.mine{border-color:var(--accent)}.rank-top{display:flex;gap:10px;align-items:center;margin-bottom:22px}.person-avatar{width:37px;height:37px;display:grid;place-items:center;background:var(--soft);color:var(--accent);border-radius:12px;font-size:18px;font-weight:650}.rank-name{font-size:15px;font-weight:650}.you-badge{font-size:10px;font-weight:400;color:var(--muted);margin-right:6px}.rank-position{margin-right:auto;font-size:11px;color:var(--muted)}.rank-position strong{font-size:19px;color:var(--ink);margin-right:5px}.penalty-amount{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.8;overflow-wrap:anywhere}.penalty-amount.zero{color:var(--green);font-size:23px}.penalty-amount small{font-size:12px;color:var(--muted);font-weight:400;margin-right:6px}.rank-bottom{display:flex;gap:18px;border-top:1px solid var(--line);padding-top:14px;margin-top:15px;color:var(--muted);font-size:11px;flex-wrap:wrap}.rank-bottom b{font-weight:600;color:var(--ink);font-size:13px;margin-left:4px}.rule{font-size:11px;line-height:2;color:var(--muted);margin:15px 1px}.rule strong{font-weight:550;color:var(--ink)}.add-dock{display:none}
.sync-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--orange-bg);color:var(--orange);font-size:12px;padding:8px 13px;border-radius:12px;margin-bottom:15px;line-height:1.8}.sync-banner .text-button{color:var(--orange);flex-shrink:0}.boot{min-height:55dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;color:var(--muted);padding:24px;text-align:center;font-size:13px}.loading-dot{width:9px;height:9px;border-radius:50%;background:var(--accent);animation:pulse 1.3s ease-in-out infinite}.boot.error .loading-dot{display:none}.login-view{min-height:calc(100dvh - 80px);display:grid;place-items:center;padding:30px 20px}.login-card{width:min(375px,100%);background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:30px;box-shadow:var(--shadow)}.login-card h1{font-size:25px;margin-bottom:27px}.login-submit{width:100%;margin-top:22px}label{display:block;font-size:13px;font-weight:550;margin:18px 0 9px}input,select,textarea{width:100%;min-width:0;max-width:100%;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:11px;padding:12px 13px;min-height:50px;font-size:16px}textarea{resize:vertical;min-height:86px;line-height:1.8}input::placeholder,textarea::placeholder{color:var(--muted);font-size:13px}.password-field{position:relative}.password-field input{padding-left:70px}.eye{position:absolute;left:4px;top:3px;bottom:3px;background:transparent;color:var(--muted);font-size:11px;padding:0 12px}.form-error{font-size:12px;color:var(--error);line-height:1.9;margin-top:10px}.form-error:empty{display:none}
dialog{border:1px solid var(--line);border-radius:20px;background:var(--surface);color:var(--ink);padding:24px;width:min(430px,calc(100% - 32px));max-height:calc(100dvh - 36px);overflow:auto;box-shadow:var(--shadow);outline:none}dialog::backdrop{background:#080b1866;backdrop-filter:blur(2px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.dialog-heading h2{font-size:19px}.dialog-heading .icon-button{font-size:25px;margin-left:-8px}.sheet .full-width{margin-top:10px}.date-button{min-height:52px;width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--ink);padding:11px 13px;font-size:14px;text-align:right}.date-button>span:last-child{font-size:23px;color:var(--muted)}.date-shortcuts{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.date-shortcuts button{padding:7px 10px;font-size:11px;flex:1;justify-content:center}.calendar-nav{display:flex;align-items:center;justify-content:space-between;margin:10px -6px 14px;direction:rtl}.calendar-nav .icon-button{font-size:28px}.weekdays,.calendar-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;text-align:center}.weekdays{margin-bottom:8px;font-size:11px;color:var(--muted)}.calendar-days button{height:42px;min-width:0;border-radius:10px;font-size:14px;background:transparent;color:var(--ink);padding:0;border:1px solid transparent}.calendar-days button:hover{background:var(--raised)}.calendar-days button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}.calendar-days button.today{border-color:var(--accent)}.calendar-days button:disabled{color:var(--muted);opacity:.35}.calendar-dialog>.text-button{margin-top:12px}.confirm-dialog h2{font-size:19px;margin-bottom:12px}.confirm-dialog p{font-size:13px;color:var(--muted);line-height:2}.dialog-actions{display:flex;gap:10px;margin-top:24px}.dialog-actions button{flex:1;font-size:13px;padding:11px 10px}.toast{position:fixed;bottom:max(24px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:12px 18px;border-radius:12px;font-size:12px;line-height:1.8;box-shadow:var(--shadow);max-width:calc(100% - 32px);width:max-content;z-index:20;pointer-events:none}.toast.error{background:var(--error);color:var(--bg)}@keyframes pulse{50%{opacity:.3}}
@media(max-width:680px){.topbar{padding:8px 16px;padding-top:max(8px,env(safe-area-inset-top))}.brand{font-size:17px;gap:8px}.brand-icon{width:29px;height:29px;font-size:24px}.account{font-size:12px;padding-right:7px;gap:1px}.header-actions{gap:1px}.topbar .icon-button{min-width:40px}.dashboard{padding:20px 16px calc(106px + env(safe-area-inset-bottom))}.page-heading{margin-bottom:15px}.page-heading h1{font-size:24px}.page-heading .subtle{font-size:11px}.desktop-add{display:none}.tabs{gap:20px;margin-bottom:13px}.tabs button{font-size:13px;min-height:46px;padding-bottom:10px}.list-toolbar{gap:5px;margin-bottom:17px}.filters{gap:2px;flex:1}.filters button{font-size:11px;padding:8px 9px;gap:5px;min-height:42px}.filters button span{font-size:10px}.exercise-row{grid-template-columns:1fr 1fr;gap:12px 10px;padding:15px;border-radius:15px}.exercise-info{grid-column:1/-1}.exercise-title{font-size:14px}.exercise-meta{font-size:10px;margin-top:7px}.person-status{min-height:59px;padding:9px 8px;gap:7px}.person-name{font-size:12px}.person-state{font-size:10px}.person-fee{font-size:11px}.person-fee span{font-size:10px}.person-status .indicator{width:22px;height:22px;flex-shrink:0}.day-heading h2{font-size:12px}.day-heading{font-size:10px}.empty-state{padding:40px 10px}.empty-state h2{font-size:14px}.add-dock{position:fixed;display:block;bottom:0;inset-inline:0;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(transparent,var(--bg) 16px);z-index:5}.add-dock .primary{width:100%;min-height:51px;box-shadow:var(--shadow)}.toast{bottom:calc(88px + env(safe-area-inset-bottom))}.rankings{grid-template-columns:1fr;gap:12px}.rank-card{padding:19px}.rank-top{margin-bottom:12px}.rank-bottom{margin-top:12px;padding-top:12px}.penalty-amount{font-size:27px}.section-heading{margin-top:20px}.section-heading h2{font-size:15px}.section-heading .subtle{font-size:10px}.sync-banner{font-size:11px;gap:5px;padding:7px 10px}.sync-banner .text-button{font-size:11px}.login-view{padding:24px 16px;min-height:calc(100dvh - 66px)}.login-card{padding:25px;box-shadow:none}.login-card h1{font-size:23px}.sheet{margin:0;position:fixed;top:auto;bottom:0;left:0;right:0;width:100%;max-width:100%;max-height:calc(100dvh - 18px);border-radius:21px 21px 0 0;padding:20px 20px calc(20px + env(safe-area-inset-bottom))}.calendar-dialog{padding:19px;width:min(370px,calc(100% - 24px))}.calendar-days button{min-height:40px;height:40px}.confirm-dialog{padding:23px}.sheet textarea{max-height:160px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(max-width:680px){dialog{max-height:calc(var(--usable-height,100dvh) - 24px)}.sheet{bottom:var(--keyboard-inset,0px);max-height:calc(var(--usable-height,100dvh) - 18px)}.topbar .icon-button{min-width:44px}}
.page-tools{display:flex;align-items:center;gap:10px}.person-state{font-size:11px}input::placeholder,textarea::placeholder{opacity:1}
.push-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted);font-size:12px;margin:-8px 0 12px}.push-bar .text-button{font-size:12px}#push-message{margin-top:12px}
.install-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;width:min(852px,calc(100% - 32px));margin:12px auto 0;padding:4px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);font-size:12px;color:var(--muted)}.connection-status{padding:8px 16px;background:var(--orange-bg);color:var(--orange);font-size:12px;text-align:center}#install-instruction{margin-top:14px}
