:root{--grape: #7c6cf0;--grape-2: #9b5de5;--pink: #f15bb5;--mint: #00bb92;--amber: #ffb830;--danger: #ff5c7c;--ink: #2b2746;--muted: #8a86a6;--line: #ece9fb;--card: #ffffff;--radius: 18px;--shadow: 0 10px 30px rgba(80, 60, 180, .1);--shadow-sm: 0 4px 14px rgba(80, 60, 180, .08)}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,system-ui,-apple-system,sans-serif;color:var(--ink);background:linear-gradient(160deg,#f3f0ff,#fdf2fb 45%,#eefbf6);background-attachment:fixed;min-height:100vh}.app{max-width:680px;margin:0 auto;padding:0 16px 64px}.header{text-align:center;padding:28px 0 10px}.header h1{margin:0;font-size:1.7rem;font-weight:800;letter-spacing:-.02em;background:linear-gradient(90deg,var(--grape),var(--pink));-webkit-background-clip:text;background-clip:text;color:transparent}.tagline{margin:4px 0 0;color:var(--muted);font-size:.95rem}.nav{display:flex;gap:8px;position:sticky;top:12px;z-index:5;padding:8px;background:#ffffffb3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:999px;box-shadow:var(--shadow-sm);margin-bottom:18px}.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 6px;border:none;border-radius:999px;background:transparent;color:var(--muted);font-size:.82rem;font-weight:600;cursor:pointer;transition:all .18s ease}.tab-icon{font-size:1.15rem}.tab-active{background:linear-gradient(135deg,var(--grape),var(--grape-2));color:#fff;box-shadow:0 6px 16px #7c6cf066}.week-head{display:flex;align-items:center;gap:18px;padding:18px;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:16px}.week-head-text{flex:1}.week-head-text h2{margin:0 0 10px;font-size:1.15rem}.ring-wrap{position:relative;width:88px;height:88px;flex-shrink:0}.ring{display:block}.ring-bg{fill:none;stroke:var(--line);stroke-width:9}.ring-fg{fill:none;stroke:var(--mint);stroke-width:9;stroke-linecap:round;transition:stroke-dashoffset .6s cubic-bezier(.4,0,.2,1)}.ring-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.1}.ring-label strong{font-size:1.25rem;color:var(--ink)}.ring-label span{font-size:.62rem;color:var(--muted);margin-top:2px;text-align:center}.btn{padding:11px 16px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);font-size:.95rem;font-weight:600;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,filter .12s ease}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:linear-gradient(135deg,var(--grape),var(--grape-2));color:#fff;border:none;box-shadow:0 6px 16px #7c6cf059}.btn-primary:hover{filter:brightness(1.05)}.btn-danger{background:#fff;color:var(--danger);border-color:#ffe0e6;padding:8px 12px;border-radius:10px}.btn-danger:hover{background:#fff0f3}.assignments,.list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}.assignment{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow-sm);transition:transform .12s ease,box-shadow .12s ease,opacity .2s ease}.assignment:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.assignment.done{background:linear-gradient(135deg,#f0fdf9,#f5fff0);border-color:#cdf3e6}.assignment.done .task-name{text-decoration:line-through;color:var(--muted)}.assignment.done .task-emoji{filter:grayscale(.3);opacity:.7}.task-emoji{font-size:1.5rem;width:34px;text-align:center;flex-shrink:0}.task-name{flex:1;font-size:1.05rem;font-weight:600}.assignee{display:flex;align-items:center;gap:8px;flex-shrink:0}.assignee select{padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#faf9ff;font-size:.9rem;font-weight:600;color:var(--ink);cursor:pointer}.chk{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:28px;height:28px;flex-shrink:0;border:2px solid #d8d3f5;border-radius:9px;cursor:pointer;position:relative;transition:all .15s ease}.chk:hover{border-color:var(--grape)}.chk:checked{background:linear-gradient(135deg,var(--mint),#2bd9a0);border-color:transparent}.chk:checked:after{content:"✓";position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:1rem;font-weight:900}.avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:#fff;font-weight:800;flex-shrink:0;box-shadow:0 2px 6px #0000001f}.list-row{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;box-shadow:var(--shadow-sm)}.list-row.inactive{opacity:.55}.list-row input{flex:1;padding:10px 12px;border:1px solid transparent;border-radius:10px;background:#faf9ff;font-size:1rem;font-weight:600;color:var(--ink)}.list-row input:focus{outline:none;border-color:var(--grape);background:#fff}.toggle{display:flex;align-items:center;gap:6px;font-size:.82rem;color:var(--muted);font-weight:600;white-space:nowrap}.toggle input{width:20px;height:20px;accent-color:var(--mint);cursor:pointer}.add-row{display:flex;gap:10px;margin:4px 0 18px}.add-row input{flex:1;padding:13px 16px;border:1px solid var(--line);border-radius:14px;background:#fff;font-size:1rem;box-shadow:var(--shadow-sm)}.add-row input:focus{outline:none;border-color:var(--grape)}.note{font-size:.88rem;color:#6b5fb0;background:linear-gradient(135deg,#f1ecff,#fbf0ff);padding:11px 14px;border-radius:14px;border:1px solid #e7defc;margin:0 0 14px}.empty{text-align:center;color:var(--muted);padding:48px 16px;background:#fff9;border:2px dashed var(--line);border-radius:var(--radius)}.empty-emoji{font-size:3rem;display:block;margin-bottom:10px}.empty p{margin:0;font-size:1.02rem;font-weight:600}.toast{padding:11px 14px;border-radius:12px;margin:0 0 12px;font-weight:600}.toast-error{background:#fff0f3;color:var(--danger);border:1px solid #ffd6df}@media (max-width: 460px){.header h1{font-size:1.4rem}.task-name{font-size:.98rem}.assignee select{max-width:96px}}
