:root{--bg:#eae0cf;--paper:#faf6ef;--paper-hover:#f0e8da;--ink:#000;--ink-soft:#333;--ink-faint:#575757;--ink-typed:#000;--line:#ddd3c1;--line-strong:#bfb3a0;--hover-neutral:#f0e8da;--hover-accent:#5477921f;--brand-deep:#213448;--accent:#3f5f78;--accent-soft:#d5e0e7;--good:#1f8a4c;--good-soft:#1f8a4c24;--warn:#c0392b;--warn-soft:#c0392b1f;--scrim:#21344873;--shadow-float:0 6px 20px #2134482e;--shadow-card:0 1px 2px #2134480f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#16232f;--paper:#213448;--paper-hover:#2b4159;--ink:#fff;--ink-soft:#c3c7cd;--ink-faint:#969aa2;--ink-typed:#fff;--line:#2a3f54;--line-strong:#547792;--hover-neutral:#2b4159;--hover-accent:#94b4c124;--brand-deep:#94b4c1;--accent:#94b4c1;--accent-soft:#94b4c12e;--good:#4ade80;--good-soft:#4ade8026;--warn:#f87171;--warn-soft:#f8717126;--scrim:#0a121ab8;--shadow-float:0 6px 20px #00000080;--shadow-card:0 1px 2px #0000004d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{--sans:"IBM Plex Sans JP", system-ui, -apple-system, sans-serif;--display:var(--sans);--mono:"Space Mono", ui-monospace, Consolas, monospace;--w-title:600;--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}*{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(--ink-typed);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;height:100vh;display:flex}.header{border-bottom:1px solid var(--line);background:var(--bg);z-index:100;align-items:center;padding:9px 24px;display:flex;position:sticky;top:0}.brand{font-family:var(--display);font-size:var(--fs-section);color:var(--ink);margin-right:20px;font-weight:700}.brand span{color:var(--accent)}.nav-tabs{gap:8px;display:flex}.nav-tab{color:var(--ink-soft);font-size:var(--fs-chrome);letter-spacing:.05em;text-transform:uppercase;border-radius:var(--r-chip);background:0 0;border:none;padding:5px 10px;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}.cog-btn{color:var(--ink-faint);background:0 0;border:1px solid #0000;border-radius:999px;place-items:center;width:30px;height:30px;transition:color .18s,background .25s,border-color .18s;display:grid}.cog-btn:hover{color:var(--accent);border-color:var(--line);background:radial-gradient(circle at 50% 45%, var(--accent-soft), transparent 72%), var(--hover-neutral)}.cog-btn svg{transition:transform .35s cubic-bezier(.2,.8,.2,1)}.cog-btn:hover svg{transform:rotate(60deg)}.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;min-height:0;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-6);padding:4px 14px;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(--accent);font-weight:600;font-size:var(--fs-body);white-space:nowrap}.week-dates{color:var(--ink-soft);font-size:var(--fs-body);font-family:var(--mono);letter-spacing:.04em;white-space:nowrap}.today-link{color:var(--ink-faint);font-size:var(--fs-body);cursor:pointer;margin-left:8px}.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:stretch;gap:32px;min-height:0;display:flex}.eyebrow{letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);font-size:.7rem;font-weight:600}.sidebar{gap:var(--sp-3);overscroll-behavior:contain;width:400px;min-height:0;padding-right:var(--sp-1);scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;flex-direction:column;flex-shrink:0;display:flex;overflow-y:auto}.sidebar::-webkit-scrollbar{width:8px}.sidebar::-webkit-scrollbar-track{background:0 0}.sidebar::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:999px}.sidebar::-webkit-scrollbar-thumb:hover{background:var(--ink-faint)}.sidebar-header{justify-content:space-between;align-items:center;padding:0 4px;display:flex}.sidebar-header .eyebrow{font-family:var(--mono)}.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;transition:transform .18s cubic-bezier(.2,.8,.2,1),opacity .15s,border-color .15s;display:flex}.project-card.dragging{opacity:.4;border-style:dashed;border-color:var(--accent)}.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}.proj-title-wrap{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.proj-deadline{font-family:var(--mono);font-size:var(--fs-body);color:var(--ink-faint);letter-spacing:.04em;white-space:nowrap}input[type=text].proj-title-input{color:var(--ink-typed);font-size:var(--fs-title);line-height:normal;font-weight:var(--w-title);text-overflow:ellipsis;background:0 0;border:none;border-radius:0;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-typed);font-size:var(--fs-row);line-height:normal;font-weight:var(--w-row);background:0 0;border:none;border-radius:0;outline:none;flex:1;min-width:0;padding:0}.task-name-input::placeholder{color:var(--ink-faint)}input[type=text].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);font-family:var(--mono);font-size:var(--fs-mini);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;align-items:center;gap:5px;font-weight:700;display:flex;position:relative}.assign-date,.task-del{opacity:0;transition:opacity .15s,color .15s,transform .18s cubic-bezier(.2,.8,.2,1)}.task-item:hover .assign-date,.task-item:hover .task-del,.task-actions:focus-within .assign-date,.task-actions:focus-within .task-del{opacity:1}.assign-date{transform-origin:100%}.assign-date:hover{transform:scale(1.14)}.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);height:var(--check-size);flex-shrink:0}.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{overscroll-behavior:contain;flex-direction:column;flex:1;gap:16px;min-height:0;display:flex;overflow-y:auto}.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{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);font-weight:700}.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:2px 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(--good);border-color:var(--good)}.task-check:checked:after{content:"";background:var(--paper);width:12px;height:12px;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 13l4 4L19 7'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 13l4 4L19 7'/%3E%3C/svg%3E") 50%/contain no-repeat}.task-name{color:var(--ink-typed);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}.modal-overlay{background:var(--scrim);z-index:1200;padding:var(--sp-4);place-items:center;display:grid;position:fixed;inset:0}.modal-card{background:var(--paper);border:1px solid var(--line-strong);border-radius:var(--r-card);width:100%;max-width:380px;padding:var(--sp-5);box-shadow:var(--shadow-float)}.modal-card.wide{max-width:540px}.modal-eyebrow{font-family:var(--mono);font-size:var(--fs-label);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:var(--sp-1)}.modal-title{color:var(--ink);font-size:var(--fs-title);font-weight:var(--w-title);margin:0 0 var(--sp-4);overflow-wrap:anywhere}.deadline-row{align-items:stretch;gap:var(--sp-2);display:flex}.deadline-input{min-width:0;font-family:var(--mono);font-size:var(--fs-row);letter-spacing:.04em;background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-chip);color:var(--ink);padding:var(--sp-2) var(--sp-3);flex:1}.deadline-input:focus{border-color:var(--accent)}.deadline-input.invalid{border-color:var(--warn)}.deadline-cal{background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r-chip);width:40px;color:var(--ink-soft);flex-shrink:0;place-items:center;transition:all .15s;display:grid;position:relative}.deadline-cal:hover{border-color:var(--accent);color:var(--accent)}.deadline-native{opacity:0;cursor:pointer;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:0 0;border:none;width:100%;height:100%;padding:0;position:absolute;inset:0}.deadline-hint{font-size:var(--fs-label);color:var(--ink-faint);margin-top:var(--sp-2);min-height:14px}.modal-actions{align-items:center;gap:var(--sp-2);margin-top:var(--sp-5);display:flex}.modal-title-dates{font-family:var(--mono);font-size:var(--fs-body);color:var(--ink-soft);letter-spacing:.04em;margin-left:var(--sp-3);font-weight:400}.modal-divider{background:var(--line);height:1px;margin:var(--sp-4) 0}.transfer-list-head{margin-bottom:var(--sp-2);justify-content:space-between;align-items:center;display:flex}.select-all-btn{color:var(--accent);font-weight:700;font-size:var(--fs-body);background:0 0;border:none;padding:0}.select-all-btn:hover{text-decoration:underline}.transfer-list{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;max-height:240px;margin:0;padding:0;list-style:none;overflow-y:auto}.transfer-list::-webkit-scrollbar{width:8px}.transfer-list::-webkit-scrollbar-track{background:0 0}.transfer-list::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:999px}.transfer-row{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-2);border-radius:var(--r);cursor:pointer;transition:background-color .12s;display:flex}.transfer-row:hover{background:var(--hover-neutral)}.transfer-name{min-width:0;color:var(--ink-typed);font-size:var(--fs-row);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.transfer-count{font-family:var(--mono);font-size:var(--fs-label);color:var(--ink-faint);flex-shrink:0}.transfer-summary{font-size:var(--fs-body);margin-top:var(--sp-3);font-weight:700}.transfer-summary.ok{color:var(--good)}.transfer-summary.bad{color:var(--warn)}.transfer-summary.muted{color:var(--ink-faint);font-weight:400}.transfer-empty{color:var(--ink-faint);font-size:var(--fs-body)}.transfer-code{width:100%;font-family:var(--mono);font-size:var(--fs-label);background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r);color:var(--ink);padding:var(--sp-3);resize:vertical;white-space:pre;tab-size:2;line-height:1.5;overflow:auto}.transfer-code:focus{border-color:var(--accent)}.transfer-code.invalid{border-color:var(--warn)}.transfer-fallback{margin-top:var(--sp-3)}.transfer-hint{font-size:var(--fs-label);color:var(--ink-faint);margin-bottom:var(--sp-1)}.link-btn{color:var(--accent);font:inherit;font-size:inherit;background:0 0;border:none;padding:0}.link-btn:hover,.link-btn.always-on{text-decoration:underline}.link-btn:disabled{color:var(--ink-faint);cursor:default;text-decoration:none}.link-btn:disabled:hover{text-decoration:none}.theme-options{gap:var(--sp-2);grid-template-columns:repeat(3,1fr);display:grid}.theme-option{align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-2);background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r);color:var(--ink-soft);font-size:var(--fs-label);flex-direction:column;font-weight:500;transition:all .18s;display:flex}.theme-option:hover{border-color:var(--accent);color:var(--ink)}.theme-option.selected{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.theme-option svg{width:18px;height:18px}.settings-note{font-size:var(--fs-label);color:var(--ink-faint);margin-top:var(--sp-3)}.btn-primary{background:var(--accent);border:1px solid var(--accent);color:var(--paper);padding:var(--sp-2) var(--sp-4);border-radius:var(--r-chip);font-weight:500;transition:filter .15s}.btn-primary:hover{filter:brightness(1.08)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{border:1px solid var(--line-strong);color:var(--ink-soft);padding:var(--sp-2) var(--sp-4);border-radius:var(--r-chip);background:0 0;transition:all .15s}.btn-ghost:hover{background:var(--hover-neutral);color:var(--ink)}.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}}
