:root{--bg:#0b1120;--paper:#131a2b;--paper-hover:#1b2438;--ink:#f8fafc;--ink-soft:#94a3b8;--ink-faint:#475569;--line:#1e293b;--line-strong:#334155;--hover-neutral:#1b2438;--hover-accent:#f973161f;--accent:#f97316;--accent-soft:#f9731626;--good:#4ade80;--good-soft:#4ade8026;--warn:#f87171;--warn-soft:#f8717126;--sans:"Mononoki", ui-monospace, Consolas, monospace;--display:var(--sans);--mono:"JetBrains Mono", ui-monospace, Consolas, monospace;--w-title:700;--w-row:400;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--r-chip:6px;--r:10px;--r-card:12px;--r-focus:3px;--fs-micro:9px;--fs-mini:10px;--fs-label:11px;--fs-chrome:12px;--fs-body:13px;--fs-row:14px;--fs-section:15px;--fs-title:16px;--fs-figure:20px;--grip-size:16px;--check-size:18px;--icon-size:13px;--shadow-float:0 6px 20px #00000073;--shadow-card:0 4px 6px -1px #0000001a, 0 2px 4px -1px #0000000f;--scrim:#0009}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);min-height:100%;color:var(--ink-soft);font:16px/1.5 var(--sans);font-weight:var(--w-row);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit;outline:none}input[type=text],input[type=email],input[type=password],select,textarea{background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r);color:var(--ink);caret-color:var(--accent);padding:6px 10px;transition:border-color .15s}input[type=text]:focus,select:focus{border-color:var(--accent)}button{cursor:pointer;transition:all .15s}#app{flex-direction:column;min-height:100vh;display:flex}.header{border-bottom:1px solid var(--line);background:var(--bg);z-index:100;align-items:center;padding:12px 24px;display:flex;position:sticky;top:0}.brand{font-family:var(--display);color:var(--ink);margin-right:24px;font-size:1.1rem;font-weight:700}.brand span{color:var(--accent)}.nav-tabs{gap:8px;display:flex}.nav-tab{color:var(--ink-faint);letter-spacing:.05em;text-transform:uppercase;border-radius:var(--r-chip);background:0 0;border:none;padding:6px 12px;font-size:.8rem;font-weight:600;text-decoration:none}.nav-tab:hover{color:var(--ink);background:var(--paper)}.nav-tab.active{color:var(--accent);background:var(--accent-soft)}.header-spacer{flex:1}.user-menu{align-items:center;gap:12px;font-size:.8rem;display:flex}.guest-badge{color:var(--ink-faint);border:1px solid var(--line);text-transform:uppercase;letter-spacing:.05em;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:.7rem;display:flex}.guest-badge:before{content:"";background:var(--ink-faint);border-radius:50%;width:6px;height:6px}.sign-in-btn,.logout-btn{border:1px solid var(--line-strong);color:var(--ink);background:0 0;border-radius:999px;padding:6px 16px;font-weight:500;text-decoration:none}.sign-in-btn:hover,.logout-btn:hover{background:var(--paper);border-color:var(--ink-soft)}.main-content{flex-direction:column;flex:1;padding:24px;display:flex}.toolbar{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.toolbar-left{align-items:center;gap:12px;display:flex}.week-date-box{background:var(--paper);border-radius:var(--r-chip);border:1px solid var(--line);align-items:center;gap:var(--sp-3);justify-content:space-between;min-width:260px;padding:6px 16px;display:flex}.proj-hover-action{opacity:0;transition:opacity .15s}.project-card:hover .proj-hover-action{opacity:1}.icon-btn{color:var(--ink-faint);background:0 0;border:none;place-items:center;width:32px;height:32px;transition:color .15s;display:grid}.icon-btn:hover{color:var(--ink);background:0 0}.week-title{color:var(--good);font-size:.85rem;font-weight:600}.week-dates{color:var(--ink-soft);font-size:.85rem;font-family:var(--mono)}.today-link{color:var(--ink-faint);cursor:pointer;margin-left:8px;font-size:.85rem}.today-link:hover{color:var(--ink)}.toolbar-right{gap:12px;display:flex}.toolbar-right button{background:var(--paper);border:1px solid var(--line-strong);color:var(--ink-soft);border-radius:var(--r-chip);font-size:var(--fs-body);padding:6px 12px;font-weight:500;transition:all .15s}.toolbar-right button:hover{background:var(--hover-neutral);color:var(--ink)}.progress-section{margin-bottom:32px}.progress-track{background:var(--line-strong);width:100%;height:6px;margin-bottom:var(--sp-2);border-radius:999px;overflow:hidden}.progress-fill{background:var(--good);border-radius:999px;height:100%;transition:width .4s cubic-bezier(.2,.8,.2,1)}.progress-stats{color:var(--ink-faint);font-size:.75rem;font-family:var(--mono);justify-content:space-between;display:flex}.planning-board{flex:1;align-items:flex-start;gap:32px;display:flex}.eyebrow{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);font-size:.7rem;font-weight:600}.sidebar{gap:var(--sp-3);flex-direction:column;flex-shrink:0;width:400px;display:flex}.sidebar-header{justify-content:space-between;align-items:center;padding:0 4px;display:flex}.header-links{font-size:.75rem}.header-links a{color:var(--accent);text-decoration:none}.header-links a:hover{text-decoration:underline}.header-links .sep{color:var(--ink-faint);margin:0 4px}.project-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-card);padding:var(--sp-3) var(--sp-4);gap:var(--sp-3);flex-direction:column;display:flex}.project-card-head{align-items:center;gap:12px;display:flex}.proj-progress-track{background:var(--line-strong);border-radius:999px;flex-shrink:0;width:32px;height:4px;overflow:hidden}.proj-progress-fill{background:var(--good);border-radius:999px;height:100%;transition:width .4s cubic-bezier(.2,.8,.2,1),background-color .35s}.proj-progress-fill.complete{background:var(--accent)}.proj-title{color:var(--ink);margin:0;font-size:1rem}input[type=text].proj-title-input{color:var(--ink);font-size:var(--fs-title);line-height:1.5;font-weight:var(--w-title);text-overflow:ellipsis;background:0 0;border:none;outline:none;width:100%;margin:0;padding:0}.proj-title-input::placeholder{color:var(--ink-faint);font-weight:500}input[type=text].task-name-input{color:var(--ink-soft);font-size:var(--fs-row);line-height:1.5;font-weight:var(--w-row);background:0 0;border:none;outline:none;flex:1;min-width:0;padding:0}.task-name-input::placeholder{color:var(--ink-faint)}.task-name-input.done{color:var(--ink-faint);text-decoration:line-through}.task-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.assign-date{cursor:pointer;color:var(--accent);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;align-items:center;gap:5px;font-size:.68rem;font-weight:600;display:flex;position:relative}.assign-date,.task-del{opacity:0;transition:opacity .15s}.task-item:hover .assign-date,.task-item:hover .task-del,.task-item.has-day .assign-date,.task-actions:focus-within .assign-date,.task-actions:focus-within .task-del{opacity:1}.task-item:not(.has-day) .assign-date{opacity:1;color:var(--ink-faint)}.task-item:not(.has-day):hover .assign-date,.task-item:not(.has-day) .assign-date:focus-within{color:var(--accent)}.task-item:not(.has-day) .assign-date .arrow,.task-item:not(.has-day) .assign-date .cal-box{opacity:0;transition:opacity .15s}.task-item:not(.has-day):hover .assign-date .arrow,.task-item:not(.has-day):hover .assign-date .cal-box,.task-item:not(.has-day) .assign-date:focus-within .arrow,.task-item:not(.has-day) .assign-date:focus-within .cal-box{opacity:1}.assign-date .cal-box{border:1px solid var(--accent);border-radius:var(--r-chip);place-items:center;width:22px;height:22px;display:grid}.assign-date .hidden-date{opacity:0;cursor:pointer;border:none;width:100%;height:100%;padding:0;position:absolute;inset:0}.task-del{color:var(--ink-faint);background:0 0;border:none;place-items:center;padding:2px;display:grid}.task-del:hover{color:var(--ink);background:0 0}.proj-meta{color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em;margin-top:4px;font-size:.65rem}.add-task-btn{align-items:center;gap:var(--sp-2);width:100%;color:var(--ink-faint);text-align:left;font-size:var(--fs-body);padding:var(--sp-1) var(--sp-2);border-radius:var(--r);background:0 0;border:none;line-height:1.5;transition:background-color .12s,color .12s;display:flex}.add-task-plus{width:var(--check-size);flex-shrink:0;place-items:center;display:grid}.add-task-btn:hover{color:var(--ink-soft);background:var(--hover-neutral)}.add-project-dashed{border:1px dashed var(--line-strong);color:var(--ink-faint);padding:var(--sp-3);border-radius:var(--r);font-family:var(--mono);font-size:var(--fs-chrome);letter-spacing:.6px;text-transform:uppercase;background:0 0;transition:border-color .15s,color .15s}.add-project-dashed:hover{border-color:var(--ink-faint);color:var(--ink-soft)}.week-grid-container{flex-direction:column;flex:1;gap:16px;display:flex}.grid-header{justify-content:space-between;align-items:center;padding:0 4px;display:flex}.days-grid{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.day-box{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-card);flex-direction:column;gap:8px;min-height:220px;padding:12px;display:flex}.day-box:hover{border-color:var(--line-strong);background:var(--paper)}.day-box-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.day-name{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);font-size:.7rem;font-weight:600}.day-count{background:var(--good-soft);color:var(--good);font-family:var(--mono);border-radius:999px;padding:2px 6px;font-size:.65rem}.proj-tasks{padding-left:12px}.task-item{align-items:center;gap:var(--sp-2);padding:var(--sp-1) var(--sp-2);border-radius:var(--r);transition:background-color .12s;display:flex}.task-item:hover{background:var(--hover-neutral)}.task-check{appearance:none;width:var(--check-size);height:var(--check-size);border:1px solid var(--line-strong);border-radius:var(--r-chip);background:var(--paper);cursor:pointer;flex-shrink:0;place-items:center;transition:all .15s;display:grid}.task-check:hover{border-color:var(--ink-faint)}.task-check:checked{background:var(--accent);border-color:var(--accent)}.task-check:checked:after{content:"";border-left:2px solid var(--paper);border-bottom:2px solid var(--paper);width:9px;height:5px;transform:rotate(-45deg)translate(1px,-1px)}.task-name{color:var(--ink-soft);flex:1;font-size:.85rem}.task-name.done{color:var(--ink-faint);text-decoration:line-through}.task-meta-right{gap:6px;display:flex}.day-task-item{background:var(--paper-hover);border:1px solid var(--line);border-radius:var(--r);margin-bottom:8px;padding:10px}.day-task-top{align-items:center;gap:8px;margin-bottom:6px;display:flex}.proj-badge{letter-spacing:.05em;text-transform:uppercase;color:var(--ink-faint);flex:1;font-size:.65rem}.overdue-badge{color:var(--warn);text-transform:uppercase;letter-spacing:.05em;font-size:.6rem}.auth-page{justify-content:center;align-items:center;min-height:80vh;display:flex}.auth-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-card);width:340px;padding:32px}.auth-field{margin-bottom:16px}.auth-field label{color:var(--ink-soft);margin-bottom:6px;font-size:.75rem;display:block}.auth-field input{background:var(--bg);border:1px solid var(--line-strong);width:100%;color:var(--ink);border-radius:var(--r);padding:8px 12px}.auth-submit{background:var(--ink);width:100%;color:var(--bg);border-radius:var(--r);border:none;margin-top:8px;padding:10px;font-weight:600}.dialog{background:0 0;border:none;width:100%;max-width:400px;padding:0}.dialog::backdrop{background:#0009}.dialog-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-card);color:var(--ink-soft);padding:24px}.dialog-title{color:var(--ink);margin-bottom:16px;font-size:1.1rem}.dialog-field{margin-bottom:16px}.dialog-field label{color:var(--ink-soft);margin-bottom:6px;font-size:.75rem;display:block}.dialog-field input,.dialog-field textarea,.dialog-field select{background:var(--bg);border:1px solid var(--line-strong);width:100%;color:var(--ink);border-radius:var(--r);padding:8px 12px}.dialog-actions{justify-content:flex-end;gap:8px;margin-top:24px;display:flex}.ghost-btn{border:1px solid var(--line-strong);color:var(--ink);border-radius:var(--r);background:0 0;padding:8px 16px}.accent-btn{background:var(--ink);color:var(--bg);border-radius:var(--r);border:none;padding:8px 16px}.toast-container{z-index:1000;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:24px;right:24px}.toast{background:var(--paper-hover);border:1px solid var(--line-strong);color:var(--ink);border-radius:var(--r);box-shadow:var(--shadow-card);padding:12px 16px;font-size:.85rem}.toast.error{border-color:var(--warn);color:var(--warn)}@media (width<=1024px){.days-grid{grid-template-columns:repeat(3,1fr)}}@media (width<=800px){.planning-board{flex-direction:column}.sidebar{width:100%}.days-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=500px){.days-grid{grid-template-columns:1fr}}
