*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{background:#09090b;color:#fafafa;font-family:system-ui,-apple-system,sans-serif;min-height:100vh}a{color:inherit;text-decoration:none}.header{border-bottom:1px solid #27272a;background:#18181b80;position:sticky;top:0;z-index:10}.header-inner{max-width:1280px;margin:0 auto;padding:0 24px;height:60px;display:flex;align-items:center;justify-content:space-between}.header-title{font-size:18px;font-weight:700}.header-sub{font-size:12px;color:#71717a;margin-top:2px}.header-nav{display:flex;gap:4px;flex-wrap:wrap}.nav-link{padding:6px 12px;border-radius:6px;font-size:13px;color:#71717a;transition:color .15s}.nav-link:hover{color:#fafafa}.nav-link.active{color:#fafafa;background:#27272a}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;border:1px solid #3f3f46;background:transparent;color:#d4d4d8;transition:all .15s}.btn:hover{border-color:#71717a}.btn:focus-visible,input:focus-visible{outline:2px solid #60a5fa;outline-offset:2px}.btn-primary{background:#2563eb;border-color:#2563eb;color:#fff}.btn-primary:hover{background:#3b82f6;border-color:#3b82f6}.btn-sm{padding:4px 10px;font-size:12px;border-radius:6px}.main{max-width:1280px;margin:0 auto;padding:32px 24px 80px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px;flex-wrap:wrap}.topbar h1{font-size:24px;font-weight:700}.topbar p{font-size:14px;color:#71717a;margin-top:6px}.weeknav{display:flex;align-items:center;gap:8px}.weeklabel{font-size:14px;font-weight:600;min-width:150px;text-align:center;font-variant-numeric:tabular-nums}.score-card{background:#18181b;border:1px solid #27272a;border-radius:12px;padding:22px 24px;margin-bottom:24px;display:flex;gap:28px;align-items:center;flex-wrap:wrap}.score-pct{font-size:56px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.score-meta{font-size:13px;color:#a1a1aa;margin-top:6px}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.badge-win{background:#052e1f;color:#34d399;border:1px solid #14532d}.badge-pending{background:#1c1917;color:#a8a29e;border:1px solid #3f3f46}.bar-wrap{flex:1;min-width:240px}.bar{height:10px;background:#27272a;border-radius:5px;position:relative;overflow:visible}.bar-fill{height:100%;border-radius:5px;transition:width .3s,background .3s}.bar-mark{position:absolute;left:75%;top:-4px;bottom:-4px;width:2px;background:#71717a}.bar-mark-label{position:absolute;left:75%;top:16px;transform:translate(-50%);font-size:10px;color:#71717a}.history{display:flex;gap:5px;align-items:flex-end;margin-top:26px}.hbar{width:22px;height:40px;background:#27272a;border-radius:3px;position:relative;overflow:hidden;cursor:pointer}.hbar>div{position:absolute;bottom:0;left:0;right:0}.hbar.cur{outline:1px solid #71717a}.addrole{display:flex;gap:8px;margin-bottom:16px}input[type=text]{background:#09090b;border:1px solid #3f3f46;border-radius:8px;padding:8px 12px;font-size:14px;color:#fafafa;flex:1;min-width:0}.roles{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;align-items:start}.role{background:#18181b;border:1px solid #27272a;border-radius:12px;padding:16px 18px}.role-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}.role-name{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;flex:1}.role-pct{font-size:12px;color:#71717a;font-variant-numeric:tabular-nums}.icon-btn{background:none;border:none;color:#52525b;cursor:pointer;font-size:14px;padding:4px 6px;border-radius:6px}.icon-btn:hover{color:#fafafa;background:#27272a}.goal{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-top:1px solid #27272a}.goal input[type=checkbox]{width:18px;height:18px;margin-top:1px;accent-color:#34d399;cursor:pointer;flex-shrink:0}.goal-title{flex:1;font-size:14px;line-height:1.4;word-break:break-word}.goal.done .goal-title{color:#52525b;text-decoration:line-through}.goal .icon-btn{opacity:0}.goal:hover .icon-btn,.goal .icon-btn:focus-visible{opacity:1}.addgoal{display:flex;gap:6px;margin-top:10px}.addgoal input{font-size:13px;padding:6px 10px}.empty{text-align:center;color:#71717a;padding:48px 16px;font-size:14px;border:1px dashed #3f3f46;border-radius:12px}.toast{position:fixed;bottom:24px;right:24px;background:#27272a;color:#fafafa;padding:10px 16px;border-radius:8px;font-size:13px;opacity:0;pointer-events:none;transition:opacity .2s}.toast.show{opacity:1}.toast.error{background:#7f1d1d}
