@font-face{font-family:"Jersey 10";src:url(/assets/Jersey10-Regular-TweM8XCq.ttf) format("truetype");font-weight:400}@font-face{font-family:Fragment Mono;src:url(/assets/FragmentMono-Regular-CQGFFnOf.ttf) format("truetype");font-weight:400}:root{--background: #f7f7ff;--surface: #eeeeee;--text: #000000;--text-muted: #8e8da0;--border: #cccccc;--success: #22c55e;--warning: #fbe74e;--danger: #ff4a36;--radius: 14px;--radius-sm: 6px;--radius-tag: 1px;--shadow-raised: 0 1px 1px #0000001a, 0 2px 4px #0000000d, inset 0 .5px #ffffff73}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;background:var(--background);color:var(--text);font-family:Fragment Mono,monospace;min-height:100vh}button,input,textarea{font-family:inherit}.wrap{max-width:1040px;margin:0 auto;padding:30px 20px 60px}.heading{font-family:"Jersey 10",sans-serif;font-weight:400}.topbar{display:flex;align-items:center;gap:10px;margin-bottom:20px;flex-wrap:wrap}.topbar-btn{background:var(--surface);box-shadow:var(--shadow-raised);border:none;color:var(--text);font-size:12px;padding:10px 15px;border-radius:var(--radius);cursor:pointer;transition:color .15s ease-out}.topbar-btn:hover{color:var(--text-muted)}.topbar-spacer{flex:1}.switcher{position:relative}.switcher-trigger{display:flex;align-items:center;gap:10px;background:var(--surface);box-shadow:var(--shadow-raised);border:none;border-radius:var(--radius);padding:10px 15px;cursor:pointer;color:var(--text);font-size:12px;min-width:200px}.switcher-trigger .name{flex:1;text-align:left}.switcher-trigger .pct{color:var(--text-muted);font-size:11px}.switcher-menu{position:absolute;top:calc(100% + 5px);left:0;min-width:260px;max-height:320px;overflow-y:auto;background:var(--surface);box-shadow:var(--shadow-raised);border-radius:var(--radius-sm);z-index:10;padding:5px}.switcher-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;text-align:left;padding:10px;border-radius:var(--radius-tag);cursor:pointer;color:var(--text);font-size:12px}.switcher-item:hover{background:var(--background)}.switcher-item.active{background:var(--background);box-shadow:inset 3px 0 0 var(--text)}.switcher-item .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.switcher-item .pct{color:var(--text-muted);font-size:10px;flex-shrink:0}.hero{background:var(--surface);box-shadow:var(--shadow-raised);border-radius:var(--radius);padding:25px 30px 20px;margin-bottom:20px}.hero-top{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;flex-wrap:wrap}.hero-title{font-family:"Jersey 10",sans-serif;font-weight:400;font-size:30px;letter-spacing:.01em;margin:0 0 5px}.hero-sub{color:var(--text-muted);font-size:13px;margin:0;max-width:46ch;line-height:1.5}.readout{text-align:right;flex-shrink:0}.readout-pct{font-family:"Jersey 10",sans-serif;font-size:45px;font-weight:400;color:var(--success);line-height:1;letter-spacing:.01em}.readout-frac{font-size:12px;color:var(--text-muted);margin-top:5px}.gauge{margin-top:20px;height:10px;background:var(--background);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.gauge-fill{height:100%;background:var(--success);transition:width .3s ease-out;border-radius:var(--radius-sm)}.gauge-ticks{display:flex;justify-content:space-between;margin-top:5px}.gauge-ticks span{font-size:10px;letter-spacing:.05em;color:var(--text-muted)}.schedule-row{display:flex;align-items:center;gap:15px;margin-top:15px;flex-wrap:wrap}.target-date-field{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--text-muted)}.target-date-field input{background:var(--background);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:12px;padding:5px 10px}.schedule-badge{font-size:11px;padding:5px 10px;border-radius:999px;background:var(--background);border:1px solid var(--border);color:var(--text-muted)}.schedule-badge.ok{border-color:var(--success);color:var(--success)}.schedule-badge.behind{border-color:var(--danger);color:var(--danger)}.board{display:grid;grid-template-columns:240px 1fr;gap:20px}@media(max-width:760px){.board{grid-template-columns:1fr}}.rail{background:var(--surface);box-shadow:var(--shadow-raised);border-radius:var(--radius);overflow:hidden;height:fit-content;position:sticky;top:15px}@media(max-width:760px){.rail{position:static;display:flex;overflow-x:auto}}.phase-item{display:flex;align-items:center;gap:10px;padding:10px 15px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .15s ease-out;white-space:nowrap}.rail .phase-item:last-child{border-bottom:none}.phase-item:hover{background:var(--background)}.phase-item.active{background:var(--background);box-shadow:inset 3px 0 0 var(--text)}.phase-code{font-size:10px;color:var(--text-muted);width:20px;flex-shrink:0}.phase-item.active .phase-code{color:var(--text)}.phase-name{font-size:13px;flex:1;color:var(--text)}.phase-count{font-size:10px;color:var(--text-muted)}.phase-done-dot{width:6px;height:6px;border-radius:var(--radius-tag);background:var(--border);flex-shrink:0}.phase-done-dot.complete{background:var(--success)}.panel{background:var(--surface);box-shadow:var(--shadow-raised);border-radius:var(--radius);padding:5px;position:relative}.panel-head{padding:15px 15px 10px;display:flex;justify-content:space-between;align-items:baseline}.panel-title{font-family:"Jersey 10",sans-serif;font-size:22px;font-weight:400}.panel-title span{color:var(--text-muted);font-family:Fragment Mono,monospace;font-size:12px;margin-right:10px}.panel-meta{font-size:11px;color:var(--text-muted)}.task{display:grid;grid-template-columns:30px 1fr;gap:10px;padding:10px 15px;border-top:1px solid var(--border)}.task:first-of-type{border-top:none}.status-btn{width:22px;height:22px;border-radius:var(--radius-sm);border:1.5px solid var(--border);background:var(--background);cursor:pointer;margin-top:1px;display:flex;align-items:center;justify-content:center;padding:0;transition:all .15s ease-out;flex-shrink:0}.status-btn svg{width:13px;height:13px;display:none}.status-btn.progress{border-color:var(--warning);background:var(--warning)}.status-btn.progress:after{content:"";width:7px;height:7px;border-radius:var(--radius-tag);background:var(--text)}.status-btn.done{border-color:var(--success);background:var(--success)}.status-btn.done svg{display:block}.status-btn.na{border-color:var(--border);background:var(--border)}.status-btn.na:after{content:"—";color:var(--background);font-size:11px;line-height:1}.task-body{min-width:0}.task-title-row{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.task-title{font-size:13.5px;color:var(--text);margin:0 0 3px}.task.done .task-title{color:var(--text-muted);text-decoration:line-through;text-decoration-color:var(--text-muted)}.task.na .task-title{color:var(--text-muted)}.task-completed-at{font-size:10.5px;color:var(--text-muted)}.task-detail{font-size:12px;color:var(--text-muted);line-height:1.5;margin:0}.task-note-row{margin-top:6px}.note-toggle{background:none;border:none;padding:0;color:var(--text-muted);font-family:Fragment Mono,monospace;font-size:11px;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.note-toggle:hover{color:var(--text)}.task-note{display:block;width:100%;margin-top:5px;padding:10px;background:var(--background);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:Fragment Mono,monospace;font-size:12px;line-height:1.5;resize:vertical;min-height:45px}.task-note:focus{outline:none;border-color:var(--text-muted)}.footer-row{display:flex;justify-content:space-between;align-items:center;margin-top:20px;padding:0 5px}.hint{font-size:11px;color:var(--text-muted)}.reset-btn{background:transparent;border:1px solid var(--border);color:var(--text);font-family:Fragment Mono,monospace;font-size:12px;padding:10px 15px;border-radius:var(--radius);cursor:pointer;transition:border-color .15s ease-out,color .15s ease-out}.reset-btn:hover{border-color:var(--danger);color:var(--danger)}.loading{padding:60px 0;text-align:center;color:var(--text-muted);font-size:12px}.celebrate{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:50}.celebrate-card{background:var(--surface);box-shadow:var(--shadow-raised);border-radius:var(--radius);padding:20px 30px;font-family:"Jersey 10",sans-serif;font-size:22px;color:var(--success);animation:celebrate-pop 1.6s ease-out forwards}@keyframes celebrate-pop{0%{transform:scale(.8);opacity:0}15%{transform:scale(1.05);opacity:1}25%{transform:scale(1);opacity:1}80%{transform:scale(1);opacity:1}to{transform:scale(1);opacity:0}}.dash-header{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:20px;flex-wrap:wrap}.dash-title{font-size:30px;margin:0 0 5px}.dash-sub{color:var(--text-muted);font-size:13px;margin:0}.dash-actions{display:flex;gap:10px;flex-shrink:0}.primary-btn{background:var(--text);color:var(--background);border:none;font-size:12px;padding:10px 15px;border-radius:var(--radius);cursor:pointer;transition:opacity .15s ease-out}.primary-btn:hover{opacity:.85}.ghost-btn{background:transparent;border:1px solid var(--border);color:var(--text);font-size:12px;padding:10px 15px;border-radius:var(--radius);cursor:pointer}.ghost-btn:hover{border-color:var(--text)}.create-form{background:var(--surface);box-shadow:var(--shadow-raised);border-radius:var(--radius);padding:20px;margin-bottom:20px;display:grid;gap:15px}.create-form .field-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:15px}.field label{display:block;font-size:11px;color:var(--text-muted);margin-bottom:5px}.field input,.field select{width:100%;background:var(--background);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px;color:var(--text);font-size:13px}.create-form-actions{display:flex;gap:10px;justify-content:flex-end}.focus-panel{background:var(--surface);box-shadow:var(--shadow-raised);border-radius:var(--radius);padding:20px;margin-bottom:20px}.focus-title{font-size:18px;margin:0 0 15px}.focus-empty{color:var(--text-muted);font-size:12px}.focus-item{display:grid;grid-template-columns:30px 1fr auto;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--border)}.focus-item:first-of-type{border-top:none}.focus-item .task-title{font-size:13px;margin:0}.focus-item .focus-app{font-size:11px;color:var(--text-muted)}.focus-item .focus-go{background:transparent;border:1px solid var(--border);color:var(--text);font-size:11px;padding:7px 10px;border-radius:var(--radius-sm);cursor:pointer}.focus-item .focus-go:hover{border-color:var(--text)}.app-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:15px}.app-card{background:var(--surface);box-shadow:var(--shadow-raised);border-radius:var(--radius);padding:15px;cursor:pointer;text-align:left;border:none;color:var(--text);display:flex;flex-direction:column;gap:10px}.app-card-top{display:flex;align-items:center;gap:10px}.app-thumb{width:40px;height:40px;border-radius:var(--radius-sm);background:var(--background);border:1px solid var(--border);object-fit:cover;flex-shrink:0}.app-thumb.placeholder{display:flex;align-items:center;justify-content:center;font-family:"Jersey 10",sans-serif;color:var(--text-muted);font-size:16px}.app-name{font-size:14px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-link{font-size:10.5px;color:var(--text-muted);text-decoration:underline;text-underline-offset:2px}.app-card-progress{display:flex;align-items:center;gap:10px}.app-card-progress .bar{flex:1;height:6px;background:var(--background);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.app-card-progress .bar-fill{height:100%;background:var(--success)}.app-card-progress .pct{font-size:11px;color:var(--text-muted);flex-shrink:0}.app-card-footer{display:flex;justify-content:space-between;align-items:center;gap:10px}.app-card .phase-count-tag{font-size:10px;color:var(--text-muted)}.app-card .delete-btn{background:none;border:none;color:var(--text-muted);font-size:11px;cursor:pointer;padding:0}.app-card .delete-btn:hover{color:var(--danger)}.empty-state{text-align:center;color:var(--text-muted);font-size:12px;padding:60px 0}.editor-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;flex-wrap:wrap;gap:10px}.editor-header h1{font-size:22px;margin:0}.editor-actions{display:flex;gap:10px}.template-picker{display:flex;gap:10px;margin-bottom:20px;flex-wrap:wrap}.template-chip{background:var(--surface);box-shadow:var(--shadow-raised);border:none;border-radius:999px;padding:7px 15px;font-size:11.5px;color:var(--text-muted);cursor:pointer}.template-chip.active{color:var(--text);box-shadow:var(--shadow-raised),inset 0 0 0 1.5px var(--text)}.editor-phase{background:var(--surface);box-shadow:var(--shadow-raised);border-radius:var(--radius);padding:15px;margin-bottom:15px}.editor-phase-head{display:flex;align-items:center;gap:10px;margin-bottom:10px}.editor-phase-head input.code-input{width:55px;text-align:center}.editor-phase-head input.name-input{flex:1;font-size:14px}.editor-input{background:var(--background);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;color:var(--text);font-size:12.5px}.icon-btn{background:transparent;border:1px solid var(--border);color:var(--text-muted);border-radius:var(--radius-sm);width:26px;height:26px;cursor:pointer;flex-shrink:0}.icon-btn:hover{color:var(--text);border-color:var(--text)}.icon-btn.danger:hover{color:var(--danger);border-color:var(--danger)}.editor-task{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:start;padding:10px 0;border-top:1px solid var(--border)}.editor-task:first-of-type{border-top:none}.editor-task-fields{display:grid;gap:6px}.editor-task-fields input{font-size:13px}.editor-task-fields textarea{background:var(--background);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;color:var(--text-muted);font-size:12px;line-height:1.5;resize:vertical;min-height:40px}.editor-task-fields select{background:var(--background);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;color:var(--text-muted);font-size:12px;align-self:flex-start}.recurring-badge{font-size:10px;color:var(--text-muted);border:1px solid var(--border);border-radius:999px;padding:2px 8px}.editor-task-actions{display:flex;gap:5px}.add-task-btn{margin-top:10px;background:none;border:1px dashed var(--border);color:var(--text-muted);border-radius:var(--radius-sm);padding:8px 12px;font-size:12px;cursor:pointer;width:100%}.add-task-btn:hover{color:var(--text);border-color:var(--text)}.add-phase-btn{background:none;border:1px dashed var(--border);color:var(--text-muted);border-radius:var(--radius);padding:15px;font-size:13px;cursor:pointer;width:100%}.add-phase-btn:hover{color:var(--text);border-color:var(--text)}
