
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;background:linear-gradient(160deg,#2a1450 0%,#162a5c 55%,#0f4a52 100%) fixed;color:#fff;font:16px -apple-system,system-ui,Segoe UI,Roboto,sans-serif;padding:env(safe-area-inset-top) 12px 40px;min-height:100vh}
.wrap{max-width:720px;margin:0 auto}
h1{font-size:26px;margin:14px 0 8px;text-align:center;background:linear-gradient(90deg,#ffd43b,#ff8787,#74c0fc);-webkit-background-clip:text;background-clip:text;color:transparent}
.tabs{display:flex;gap:6px;margin:8px 0 14px}
.tabs button{flex:1}
button,select,input{font:inherit;color:inherit}
button{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);border-radius:14px;padding:11px 12px;cursor:pointer;transition:transform .12s}
button:active{transform:scale(.95)}
button.on{background:linear-gradient(135deg,#ff6b6b,#ff922b);border-color:transparent;font-weight:600}
button.ok{background:linear-gradient(135deg,#20c997,#51cf66);border-color:transparent;font-weight:600;color:#06331f}
button.warn{background:linear-gradient(135deg,#845ef7,#5c7cfa);border-color:transparent;font-weight:600}
button:disabled{opacity:.4}
input,select{background:rgba(0,0,0,.25);border:1px solid rgba(255,255,255,.25);border-radius:10px;padding:8px;width:100%}
.card{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.18);border-radius:20px;padding:14px;margin-bottom:12px}
.cats{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.cat{text-align:left;padding:10px}
.cat small{display:block;opacity:.85;margin-top:2px}
.bar{height:8px;background:rgba(255,255,255,.2);border-radius:4px;margin-top:6px;overflow:hidden}
.bar i{display:block;height:100%;background:linear-gradient(90deg,#ffd43b,#ff6b6b);border-radius:4px}
.row{display:flex;gap:8px;align-items:center;margin:8px 0}
.row>*{flex:1}
canvas{width:100%;max-width:380px;display:block;margin:0 auto;touch-action:manipulation;filter:drop-shadow(0 6px 14px rgba(0,0,0,.4))}
#spin{font-size:20px;padding:14px}
.res{text-align:center;animation:pop .5s}
@keyframes pop{0%{transform:scale(.7);opacity:0}70%{transform:scale(1.05)}100%{transform:scale(1);opacity:1}}
.res h2{margin:6px 0;font-size:24px}
.muted{opacity:.8;font-size:14px}
.task{display:grid;grid-template-columns:1fr 64px 64px auto;gap:6px;align-items:center;margin:6px 0;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.15)}
.task .nm{grid-column:1/-1;font-weight:500}
.task .st{grid-column:1/-1;font-size:13px;opacity:.8}
.hot{color:#ffd43b}
.hide{display:none}
h3{margin:14px 0 6px}
.fx{position:fixed;top:-30px;font-size:28px;pointer-events:none;z-index:99;animation:fall 2.2s ease-in forwards}
@keyframes fall{to{transform:translateY(110vh) rotate(540deg)}}
.toast{position:fixed;left:50%;top:40%;transform:translateX(-50%);z-index:100;font-size:20px;font-weight:700;background:#2a1450;white-space:nowrap}
.userbar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:8px 0;font-size:14px}.userbar button{padding:6px 10px;font-size:13px}
#connection{font-size:12px;text-align:center;opacity:.8;margin:6px 0}
.notice{background:rgba(255,120,80,.2);overflow-wrap:anywhere}.notice p{margin:0 0 8px}
.lock-actions{grid-column:1/-1;flex-wrap:wrap}.lock-actions button{font-size:13px}
dialog{max-width:420px;width:calc(100% - 28px);color:#fff;background:#2a1450;border:1px solid rgba(255,255,255,.3);border-radius:20px;padding:22px}dialog::backdrop{background:rgba(10,8,30,.8)}dialog h2{margin:0 0 12px}dialog button{width:100%;margin-top:14px}dialog input{margin:12px 0}#nameError{color:#ffd43b;min-height:20px}
#addCategory input[type=checkbox]{width:24px;flex:none;accent-color:#ff922b}#addCategory label{justify-content:space-between}
.task input{min-width:0}.task .nm{overflow-wrap:anywhere}select option{color:#fff;background:#2a1450}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ffd43b;outline-offset:3px}
@media(prefers-reduced-motion:reduce){.fx,.res{animation:none}button{transition:none}}
.task{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto auto;align-items:end}
.task-field{display:flex;flex-direction:column;gap:4px;min-width:0}
.task-field>span{font-size:12px;opacity:.8}
.task-field.hide{display:none}

.version{font-size:12px;vertical-align:middle;white-space:nowrap}
.my-tasks h3{margin:0 0 10px}.my-tasks .lock-actions{align-items:stretch}.my-tasks .lock-actions button{flex:1 1 140px}.task-action{grid-column:1/-1;font-size:13px}
