@font-face{font-family:Pixel;src:url('./PressStart2P-Regular.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
:root{color-scheme:dark;--bg:#101010;--paper:#171717;--ink:#f1f1f1;--muted:#bcbcbc;--line:#666;--soft:#242424;--input:#111;--focus:#fff;--on-ink:#111;--font:ui-monospace,'SFMono-Regular',Consolas,'Liberation Mono',monospace}
:root[data-theme=light]{color-scheme:light;--bg:#efefeb;--paper:#fff;--ink:#151515;--muted:#555;--line:#777;--soft:#e8e8e4;--input:#fff;--focus:#111;--on-ink:#fff}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 var(--font)}button,input,select,textarea{font:inherit;color:inherit}button{border:0;cursor:pointer}button,select{touch-action:manipulation}button:disabled,input:disabled,textarea:disabled,select:disabled{opacity:.45;cursor:default}button,a,input,select,textarea{outline-offset:3px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px dashed var(--focus)}a{color:inherit}textarea{resize:vertical;min-width:0}svg{flex-shrink:0}::selection{background:var(--ink);color:var(--on-ink)}.hidden{display:none}.app-shell{width:min(100%,720px);margin:auto;padding:0 24px max(24px,env(safe-area-inset-bottom))}.topbar{display:grid;grid-template-columns:1fr auto;align-items:center;min-height:82px;border-bottom:2px solid var(--ink);padding-top:10px;gap:0 8px}.wordmark{font:16px/1.4 Pixel,var(--font);text-decoration:none;display:flex;align-items:center;gap:8px;min-height:44px}.brand-icon{border:2px solid var(--ink);width:25px;height:25px;display:grid;place-items:center}.brand-period{display:none}.header-actions{display:flex;align-items:center;gap:8px}.theme-button,.logout-button{min-height:44px;padding:0 10px;background:var(--paper);border:1px solid var(--line);font-size:12px;white-space:nowrap}.theme-button:hover,.logout-button:hover{background:var(--ink);color:var(--on-ink)}.connection{grid-column:1/-1;display:flex;align-items:center;justify-content:flex-end;gap:6px;font-size:11px;color:var(--muted);height:25px;margin-bottom:7px}.connection-dot{height:5px;width:5px;background:var(--ink)}.connection-dot.warning{background:transparent;border:1px solid var(--ink)}.connection .refresh{min-height:24px;height:24px;width:30px;min-width:30px}.icon-button{display:inline-grid;place-items:center;background:transparent;width:44px;min-width:44px;height:44px;color:var(--ink)}.icon-button:hover{background:var(--soft)}.intro{padding:25px 0 22px}.intro h1{font:24px/1.6 Pixel,var(--font);margin:0;letter-spacing:-1px}.intro p{font-size:12px;color:var(--muted);margin:8px 0 0}.calendar{border:2px solid var(--ink);padding:6px 12px 12px;margin-bottom:18px;background:var(--paper)}.calendar-heading{display:flex;align-items:center;justify-content:space-between;gap:7px}.calendar-month{font-size:13px;display:inline-block}.calendar-month::first-letter,.list-heading p::first-letter{text-transform:uppercase}.calendar-actions{display:flex;align-items:center;gap:2px}.today-button{background:transparent;border:1px solid var(--line);min-height:44px;padding:0 10px;font-size:12px}.today-button:hover{background:var(--soft)}.week-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;touch-action:pan-y;margin-top:7px}.day-button{min-width:0;min-height:72px;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:1px solid transparent}.day-weekday{text-transform:uppercase;color:var(--muted);font-size:11px}.day-number{font:16px/1.5 Pixel,var(--font)}.day-dot{width:4px;height:4px;background:transparent}.day-dot.has-open,.day-dot.has-done{background:var(--ink)}.day-button.actual-day{border-color:var(--line)}.day-button:hover{background:var(--soft)}.day-button.selected{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}.day-button.selected .day-weekday{color:var(--on-ink)}.day-button.selected .day-dot.has-open,.day-button.selected .day-dot.has-done{background:var(--on-ink)}.workspace{border:2px solid var(--ink);background:var(--paper)}.tabs{display:flex;gap:3px;padding:0 12px;border-bottom:1px solid var(--line)}.tab{min-height:52px;padding:0 9px;display:flex;align-items:center;justify-content:center;gap:7px;font-size:13px;background:transparent;white-space:nowrap;position:relative;color:var(--muted)}.tab.active{color:var(--ink)}.tab.active:after{content:'';position:absolute;bottom:-1px;height:3px;left:8px;right:8px;background:var(--ink)}.tab:hover{background:var(--soft)}.count{min-width:20px;height:20px;padding:0 4px;display:grid;place-items:center;border:1px solid var(--line);font-size:11px}.active .count{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}.list-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:15px 18px 0}.list-heading p{font-size:12px;color:var(--muted);margin:0}.done-summary{display:flex;align-items:center;gap:4px;font-size:11px;white-space:nowrap}.add-form{padding:15px 18px}.field-label{display:block;font-size:12px;color:var(--muted);margin-bottom:7px}.input-wrap{display:flex;align-items:flex-end;gap:5px;padding:4px;border:1px solid var(--line);background:var(--input)}.input-wrap:focus-within{outline:1px solid var(--ink)}.input-wrap textarea{width:100%;border:0;background:transparent;min-height:44px;max-height:200px;padding:9px;outline:none;font-size:16px;line-height:1.5}.input-wrap textarea::placeholder{color:var(--muted)}.add-button{min-height:44px;padding:0 13px;display:flex;align-items:center;justify-content:center;gap:5px;background:var(--ink);color:var(--on-ink);font-size:12px}.input-hint{font-size:11px;color:var(--muted);margin:8px 0 0}.task-panel{min-height:120px}.task-list{list-style:none;margin:0;padding:0 14px 14px;display:flex;flex-direction:column;gap:8px}.task-row{display:flex;align-items:flex-start;gap:2px;border:1px solid var(--line);border-left:3px solid var(--ink);padding:8px 10px 8px 2px;background:var(--paper)}.check-button{width:44px;min-width:44px;height:44px;display:grid;place-items:center;background:transparent}.check-button:hover{background:var(--soft)}.task-check{width:22px;height:22px;border:2px solid var(--ink);display:grid;place-items:center;color:var(--on-ink)}.task-content{flex:1;min-width:0}.task-title{display:block;min-height:44px;width:100%;padding:6px 0 4px;text-align:left;background:transparent;font-size:16px;line-height:1.5;overflow-wrap:anywhere}.task-title:hover{text-decoration:underline}.edit-arrow{display:inline-block;vertical-align:middle;margin-left:5px;opacity:0;color:var(--muted)}.task-title:hover .edit-arrow,.task-title:focus-visible .edit-arrow{opacity:1}.task-controls{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.status-wrap{position:relative;display:flex;align-items:center;max-width:100%}.status-wrap select{appearance:none;background:var(--soft);border:1px solid var(--line);min-height:44px;padding:0 26px 0 9px;max-width:100%;font-size:12px}.status-wrap>svg{margin-left:-20px;margin-right:8px;pointer-events:none}.note-button{display:flex;align-items:center;gap:5px;min-height:44px;padding:0 7px;background:transparent;font-size:12px;color:var(--muted)}.note-button:hover{background:var(--soft);color:var(--ink)}.note-preview{display:block;min-height:44px;width:100%;padding:10px;margin:7px 0 2px;text-align:left;background:var(--soft);border:1px dashed var(--line);font-size:14px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}.note-preview span{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.status-doing{border-left-style:dashed}.status-doing .task-check{border-style:dashed}.doing-dot{width:8px;height:8px;background:var(--ink)}.status-done{background:var(--soft)}.status-done .task-check{background:var(--ink)}.status-done .task-title{text-decoration:line-through;color:var(--muted)}.status-done .status-wrap select{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}.status-cancelled{border-style:dotted}.status-cancelled .task-title{text-decoration:line-through;color:var(--muted)}.status-cancelled .task-check{border-style:dotted;color:var(--ink)}.history-date{font-size:11px;color:var(--muted);margin:7px 0 2px}.empty{padding:25px 18px 30px;display:flex;flex-direction:column;align-items:center;text-align:center;color:var(--muted)}.empty-icon{width:44px;height:44px;border:1px solid var(--line);display:grid;place-items:center}.empty h2{font-size:16px;font-weight:400;color:var(--ink);margin:13px 0 3px}.empty p{font-size:12px;margin:5px 0;max-width:300px}.progress-section{border-top:1px solid var(--line);padding:16px 18px 18px}.progress-caption{display:flex;justify-content:space-between;gap:8px;margin-bottom:9px;font-size:11px;color:var(--muted)}.progress-track{height:6px;border:1px solid var(--line);background:var(--bg);overflow:hidden}.progress-track>div{height:100%;background:var(--ink);transform-origin:left}footer{display:flex;justify-content:center;align-items:flex-start;gap:8px;padding-top:20px;color:var(--muted)}footer svg{margin-top:3px}footer p{margin:0;font-size:11px;line-height:1.8}.error,.dialog-error{font-size:13px;color:var(--ink);border:1px dashed var(--ink);background:var(--soft);padding:12px}.error{margin:0 15px 14px}.error button{display:block;background:transparent;min-height:44px;padding:5px 0;text-decoration:underline}.edit-dialog,.login-dialog{color:var(--ink);background:var(--paper);border:2px solid var(--ink);border-radius:0;width:min(480px,calc(100% - 28px));padding:20px;max-height:calc(100dvh - 28px);overflow:auto;box-shadow:5px 5px 0 var(--line)}.edit-dialog::backdrop,.login-dialog::backdrop{background:rgb(0 0 0/.72)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;margin:-6px -8px 17px 0;gap:7px}.dialog-heading h2{font-size:18px;font-weight:400;margin:0}.edit-dialog label,.login-dialog label{display:block;color:var(--muted);font-size:13px;margin-bottom:7px}.edit-dialog textarea,.login-dialog input{width:100%;border:1px solid var(--line);padding:10px;background:var(--input);font-size:16px;line-height:1.55;border-radius:0}.edit-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:17px}.edit-fields select,.date-field input{min-width:0;width:100%;min-height:48px;border:1px solid var(--line);background:var(--input);font-size:14px;padding:7px;border-radius:0}.date-field{margin-top:17px}.date-field input{font-size:16px}.notes-field{margin-top:20px}.notes-field label{display:flex;align-items:center;gap:5px}.notes-field p{font-size:11px;color:var(--muted);margin:7px 0 17px;line-height:1.7}.save-button{width:100%;min-height:48px;background:var(--ink);color:var(--on-ink);font-size:15px}.save-button:hover{outline:1px solid var(--ink);outline-offset:3px}.login-dialog h1{font:20px/1.6 Pixel,var(--font);margin:26px 0 16px}.login-dialog p{font-size:14px;color:var(--muted)}.login-dialog input{min-height:50px;margin-bottom:17px}.login-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.pixel-label{font:12px/1.6 Pixel,var(--font)}.login-footnote{font-size:11px!important;margin-top:20px}.boot-screen{min-height:100vh;display:grid;place-content:center;text-align:center;font:16px/1.7 Pixel,var(--font);padding:20px}.boot-screen p{font:13px/1.5 var(--font);color:var(--muted)}.app-auth-error:not(.hidden){border:2px solid var(--ink);padding:12px;margin:20px auto;max-width:600px}.app-auth-error button{min-height:44px;display:block;background:var(--soft);padding:8px}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:480px){.app-shell{padding-left:14px;padding-right:14px}.wordmark{font-size:13px;gap:6px}.theme-button,.logout-button{font-size:11px;padding:0 7px}.header-actions{gap:5px}.intro{padding:20px 0 18px}.intro h1{font-size:20px;letter-spacing:-.6px}.intro p{font-size:11px}.calendar{padding:5px 8px 9px;margin-bottom:14px}.calendar-month{font-size:11px}.calendar-actions{gap:0}.today-button{font-size:11px;padding:0 7px}.week-strip{gap:2px;margin-top:5px}.day-button{min-height:68px}.day-weekday{font-size:10px}.day-number{font-size:16px}.tabs{padding:0 6px;gap:0}.tab{flex:1;font-size:12px;padding:0 6px;gap:5px}.count{min-width:18px;height:18px;font-size:10px}.list-heading{padding:13px 15px 0}.list-heading p{font-size:11px}.done-summary{font-size:10px}.add-form{padding:13px 14px}.field-label{font-size:11px}.add-button>span{display:none}.add-button{padding:0 11px}.input-hint{font-size:10px}.task-list{padding:0 9px 10px}.task-row{padding:7px 7px 7px 0;gap:1px}.task-title{font-size:15px}.task-controls{gap:3px}.status-wrap select{font-size:11px;padding-left:7px;padding-right:24px}.note-button{font-size:11px;padding:0 5px;gap:4px}.note-preview{font-size:13px;padding:9px}.progress-section{padding:15px}.progress-caption{font-size:10px}.edit-dialog,.login-dialog{padding:18px}.edit-fields{gap:8px}.edit-fields select{font-size:12px}.dialog-heading h2{font-size:17px}}
@media(max-width:350px){.app-shell{padding-left:10px;padding-right:10px}.wordmark{font-size:12px}.brand-icon{width:22px;height:22px}.week-strip{grid-template-columns:repeat(7,minmax(44px,1fr));overflow-x:auto;scrollbar-width:none;touch-action:auto}.week-strip::-webkit-scrollbar{display:none}.tab{font-size:11px;padding:0 4px}.note-button{font-size:10px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
