*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0d0d0d;--surface: #141414;--surface2: #1a1a1a;--border: #222;--border2: #2a2a2a;--text: #e8e6e0;--muted: #888;--muted2: #777;--accent: #c8ff00;--accent-dim: rgba(200,255,0,.08);--accent-dim2: rgba(200,255,0,.04);--red: #ff4444;--red-dim: rgba(255,68,68,.08);--orange: #ff8c00;--font-display: "Bebas Neue", sans-serif;--font-mono: "DM Mono", monospace;--font-body: "DM Sans", sans-serif}html,body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-weight:400;min-height:100vh;font-size:14px;line-height:1.5}body{transition:background-color .3s,color .3s,border-color .3s}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");opacity:.4;pointer-events:none;z-index:0}.loading-screen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg);z-index:100}.loading-logo{font-family:var(--font-display);font-size:48px;letter-spacing:2px;color:var(--text)}.loading-logo span{color:var(--accent)}.loading-dots{font-family:var(--font-mono);font-size:24px;color:var(--muted);margin-top:8px}.loading-dots span{animation:blink 1.4s infinite both}.loading-dots span:nth-child(2){animation-delay:.2s}.loading-dots span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,80%,to{opacity:.2}40%{opacity:1}}#auth-screen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--bg);z-index:50}.auth-container{width:100%;max-width:360px;padding:32px 24px}.auth-logo{font-family:var(--font-display);font-size:56px;letter-spacing:2px;color:var(--text);text-align:center;line-height:1}.auth-logo span{color:var(--accent)}.auth-subtitle{font-family:var(--font-mono);font-size:11px;color:var(--muted);text-align:center;margin-top:6px;margin-bottom:40px;letter-spacing:.04em}.auth-form{display:flex;flex-direction:column;gap:10px}.auth-input{background:var(--surface);border:1px solid var(--border);border-radius:2px;padding:14px;color:var(--text);font-family:var(--font-mono);font-size:13px;outline:none;transition:border-color .15s}.auth-input::placeholder{color:var(--muted)}.auth-input:focus{border-color:var(--accent)}.auth-submit{background:var(--accent);border:none;border-radius:2px;padding:14px;color:#0d0d0d;font-family:var(--font-mono);font-size:13px;font-weight:500;cursor:pointer;letter-spacing:.06em;margin-top:4px;transition:opacity .15s}.auth-submit:hover{opacity:.88}.auth-submit:disabled{opacity:.5;cursor:not-allowed}.auth-toggle{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:20px;font-family:var(--font-mono);font-size:11px;color:var(--muted)}.auth-toggle-btn{background:none;border:none;color:var(--accent);font-family:var(--font-mono);font-size:11px;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.auth-google{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;background:var(--surface);border:1px solid var(--border2);border-radius:2px;padding:14px;color:var(--text);font-family:var(--font-mono);font-size:13px;cursor:pointer;transition:border-color .15s,background .15s;margin-bottom:0}.auth-google:hover{border-color:var(--muted);background:var(--surface2)}.auth-google svg{flex-shrink:0}.auth-divider{display:flex;align-items:center;gap:16px;margin:20px 0}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}.auth-divider span{font-family:var(--font-mono);font-size:10px;color:var(--muted2);letter-spacing:.1em}.auth-error{font-family:var(--font-mono);font-size:11px;color:var(--red);background:var(--red-dim);border:1px solid rgba(255,68,68,.2);border-radius:2px;padding:10px 14px;margin-bottom:12px}.auth-message{font-family:var(--font-mono);font-size:11px;color:var(--accent);background:var(--accent-dim);border:1px solid rgba(200,255,0,.2);border-radius:2px;padding:10px 14px;margin-bottom:12px}.app{position:relative;z-index:1;max-width:1120px;margin:0 auto;padding:24px 24px 0;height:100vh;display:flex;flex-direction:column;overflow:hidden}.main-grid{display:grid;grid-template-columns:1fr 340px;gap:36px;align-items:start;flex:1;min-height:0}.main-left{overflow-y:auto;height:100%;padding-right:8px;padding-bottom:24px}.main-left::-webkit-scrollbar{width:4px}.main-left::-webkit-scrollbar-track{background:transparent}.main-left::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}.main-right{height:100%;overflow-y:auto;padding-bottom:24px}.main-right::-webkit-scrollbar{width:4px}.main-right::-webkit-scrollbar-track{background:transparent}.main-right::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}.header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border)}.header-right{display:flex;align-items:center;gap:10px}.logo{font-family:var(--font-display);font-size:42px;letter-spacing:2px;color:var(--text);line-height:1}.logo span{color:var(--accent)}.date-label{font-family:var(--font-mono);font-size:11px;font-weight:500;color:var(--muted);letter-spacing:.08em;margin-top:4px}.streak-pill{font-family:var(--font-mono);font-size:11px;padding:6px 14px;border:1px solid var(--border2);border-radius:2px;color:var(--muted);letter-spacing:.05em;transition:all .2s}.streak-pill.alive{border-color:var(--accent);color:var(--accent);background:var(--accent-dim2)}.install-btn{background:none;border:1px solid var(--accent);border-radius:2px;padding:6px 10px;color:var(--accent);font-family:var(--font-mono);font-size:10px;cursor:pointer;letter-spacing:.08em;transition:all .15s}.install-btn:hover{background:var(--accent-dim)}.install-toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--surface);border:1px solid var(--accent);border-radius:4px;padding:12px 20px;font-family:var(--font-mono);font-size:12px;color:var(--text);z-index:100;animation:popoverIn .15s ease;white-space:nowrap}.logout-btn{background:none;border:1px solid var(--border);border-radius:2px;padding:6px 10px;color:var(--muted);font-family:var(--font-mono);font-size:10px;cursor:pointer;letter-spacing:.08em;transition:all .15s}.logout-btn:hover{border-color:var(--red);color:var(--red)}.nudge{font-family:var(--font-mono);font-size:11px;color:var(--muted);font-style:italic;letter-spacing:.04em;margin-bottom:20px;padding-left:12px;border-left:2px solid var(--border2)}.section-title{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.12em;color:var(--muted);text-transform:uppercase;margin-bottom:12px}.input-section{margin-bottom:24px}.input-row{display:flex;gap:8px}.input-field{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:2px;padding:12px 14px;color:var(--text);font-family:var(--font-mono);font-size:13px;outline:none;transition:border-color .15s}.input-field::placeholder{color:var(--muted)}.input-field:focus{border-color:var(--accent)}.tag-select{background:var(--surface);border:1px solid var(--border);border-radius:2px;padding:12px 10px;color:var(--muted);font-family:var(--font-mono);font-size:11px;outline:none;cursor:pointer;transition:border-color .15s;-moz-appearance:none;appearance:none;-webkit-appearance:none;min-width:110px}.tag-select:focus{border-color:var(--accent);color:var(--text)}.add-btn{background:var(--accent);border:none;border-radius:2px;padding:12px 20px;color:#0d0d0d;font-family:var(--font-mono);font-size:12px;font-weight:500;cursor:pointer;letter-spacing:.06em;transition:opacity .15s,transform .1s;white-space:nowrap}.add-btn:hover{opacity:.88}.add-btn:active{transform:scale(.98)}.output-list{display:flex;flex-direction:column;gap:6px;margin-bottom:24px;min-height:40px}.output-item{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:2px;padding:10px 14px;animation:slideIn .2s ease;transition:border-color .15s}.output-item:hover{border-color:var(--border2)}@keyframes slideIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.item-tag{font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;padding:2px 6px;border-radius:1px;text-transform:uppercase;flex-shrink:0}.tag-shipped{background:#c8ff001f;color:var(--accent);border:1px solid rgba(200,255,0,.25)}.tag-written{background:#64b4ff1a;color:#64b4ff;border:1px solid rgba(100,180,255,.2)}.tag-fixed{background:#ff8c001a;color:var(--orange);border:1px solid rgba(255,140,0,.2)}.tag-learned{background:#b464ff1a;color:#b464ff;border:1px solid rgba(180,100,255,.2)}.tag-other{background:var(--surface2);color:var(--muted);border:1px solid var(--border)}.item-text{flex:1;font-family:var(--font-mono);font-size:14px;font-weight:400;color:var(--text)}.item-time{font-family:var(--font-mono);font-size:10px;color:var(--muted);flex-shrink:0}.item-edit{background:none;border:none;color:var(--muted2);cursor:pointer;font-size:12px;padding:0 2px;transition:color .15s;flex-shrink:0;line-height:1}.item-edit:hover{color:var(--accent)}.item-delete{background:none;border:none;color:var(--muted2);cursor:pointer;font-size:14px;padding:0 2px;transition:color .15s;flex-shrink:0;line-height:1}.item-delete:hover{color:var(--red)}.item-edit-input{width:100%;background:transparent;border:none;border-bottom:1px solid var(--accent);color:var(--text);font-family:var(--font-mono);font-size:14px;font-weight:400;padding:0 0 2px;outline:none}.empty-state{font-family:var(--font-mono);font-size:12px;color:var(--muted);font-style:italic;padding:20px 0}.stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:24px}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:2px;padding:12px;text-align:center}.stat-number{font-family:var(--font-display);font-size:36px;line-height:1;color:var(--text);margin-bottom:4px;transition:color .3s}.stat-number.has-output{color:var(--accent)}.stat-number.zero{color:var(--muted2)}.stat-label{font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.12em;color:var(--muted);text-transform:uppercase}.ratio-section{margin-bottom:24px}.ratio-bar-wrap{height:6px;background:var(--surface2);border-radius:1px;overflow:hidden;margin:10px 0 6px}.ratio-bar-fill{height:100%;background:var(--accent);border-radius:1px;transition:width .6s cubic-bezier(.4,0,.2,1)}.ratio-bar-fill.low{background:var(--red)}.ratio-bar-fill.mid{background:var(--orange)}.ratio-labels{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:10px;color:var(--muted)}.history-section{margin-bottom:0}.calendar-header{display:flex;align-items:center;gap:12px;margin-bottom:4px}.calendar-header .section-title{margin-bottom:0}.calendar-nav{background:none;border:1px solid var(--border);border-radius:2px;padding:4px 10px;color:var(--muted);font-family:var(--font-mono);font-size:12px;cursor:pointer;transition:all .15s;line-height:1}.calendar-nav:hover{border-color:var(--accent);color:var(--accent)}.calendar-nav:disabled{opacity:.3;cursor:not-allowed}.calendar-nav:disabled:hover{border-color:var(--border);color:var(--muted)}.calendar-container{display:flex;flex-direction:column;gap:24px;margin-top:12px}.calendar-month-label{font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.12em;color:var(--muted);text-transform:uppercase;margin-bottom:8px}.calendar-month--current .calendar-month-label{font-size:12px;color:var(--text)}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px}.calendar-weekday{text-align:center;font-family:var(--font-mono);font-size:9px;color:var(--muted2);letter-spacing:.08em;text-transform:uppercase;padding:2px 0}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.calendar-cell{aspect-ratio:1;border-radius:2px;background:var(--surface);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:10px;color:var(--muted);cursor:pointer;position:relative;transition:border-color .15s}.calendar-cell:hover{border-color:var(--border2)}.calendar-cell--empty{background:transparent;border-color:transparent;cursor:default}.calendar-cell--has-output{background:var(--accent-dim);border-color:#c8ff0033;color:var(--accent)}.calendar-cell--in-range{background:var(--accent-dim2);border-color:#c8ff001f;color:var(--accent)}.calendar-cell--today{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.calendar-cell--future{opacity:.35;cursor:default}.cell-day{font-weight:500;line-height:1}.cell-dots{position:absolute;bottom:3px;left:50%;transform:translate(-50%);display:flex;gap:2px}.tag-dot{width:4px;height:4px;border-radius:50%;flex-shrink:0}.tag-dot--shipped{background:#c8ff00}.tag-dot--written{background:#64b4ff}.tag-dot--fixed{background:#ff8c00}.tag-dot--learned{background:#b464ff}.tag-dot--other{background:#888}.calendar-grid{gap:4px}.calendar-cell{font-size:10px}.calendar-popover{position:fixed;z-index:20;background:var(--surface);border:1px solid var(--border2);border-radius:4px;padding:12px 16px;min-width:240px;max-width:360px;max-height:300px;overflow-y:auto;box-shadow:0 8px 24px #0006;animation:popoverIn .15s ease}@keyframes popoverIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.calendar-popover-header{font-family:var(--font-mono);font-size:11px;font-weight:500;color:var(--text);margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid var(--border)}.calendar-popover-item{display:flex;align-items:center;gap:8px;padding:6px 0;font-family:var(--font-mono);font-size:12px}.calendar-popover-item+.calendar-popover-item{border-top:1px solid var(--border)}.calendar-popover-count{font-weight:400;color:var(--muted);margin-left:8px}.calendar-popover-empty{font-family:var(--font-mono);font-size:11px;color:var(--muted);font-style:italic}.calendar-popover-range{font-size:9px;color:var(--muted);flex-shrink:0}.calendar-popover-reflection{font-family:var(--font-mono);font-size:11px;font-style:italic;color:var(--muted);margin-top:10px;padding-top:8px;border-top:1px solid var(--border);line-height:1.5}.item-range{font-family:var(--font-mono);font-size:9px;color:var(--muted);flex-shrink:0}.range-toggle-btn{background:none;border:1px solid var(--border);border-radius:2px;padding:10px 12px;color:var(--muted);font-size:14px;cursor:pointer;transition:all .15s;line-height:1}.range-toggle-btn:hover,.range-toggle-btn.active{border-color:var(--accent);color:var(--accent)}.date-range-row{display:flex;align-items:center;gap:8px;margin-top:8px}.date-range-label{font-family:var(--font-mono);font-size:10px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}.date-range-input{background:var(--surface);border:1px solid var(--border);border-radius:2px;padding:8px 10px;color:var(--text);font-family:var(--font-mono);font-size:12px;outline:none;transition:border-color .15s;color-scheme:dark}.date-range-input:focus{border-color:var(--accent)}.range-clear-btn{background:none;border:1px solid var(--border);border-radius:2px;padding:8px 12px;color:var(--muted);font-family:var(--font-mono);font-size:10px;cursor:pointer;letter-spacing:.06em;transition:all .15s}.range-clear-btn:hover{border-color:var(--red);color:var(--red)}.reflection-section{margin-bottom:16px}.reflection-textarea{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:2px;padding:14px;color:var(--text);font-family:var(--font-mono);font-size:12px;line-height:1.7;outline:none;resize:vertical;min-height:80px;transition:border-color .15s;margin-top:10px}.reflection-textarea::placeholder{color:var(--muted);font-style:italic}.reflection-textarea:focus{border-color:var(--border2)}.save-reflection-btn{margin-top:8px;background:none;border:1px solid var(--border);border-radius:2px;padding:7px 16px;color:var(--muted);font-family:var(--font-mono);font-size:11px;cursor:pointer;letter-spacing:.06em;transition:all .15s}.save-reflection-btn:hover{border-color:var(--border2);color:var(--text)}.save-reflection-btn.saved{border-color:var(--accent);color:var(--accent)}.footer-nudge{font-family:var(--font-mono);font-size:11px;color:var(--muted2);text-align:center;font-style:italic;padding-top:24px;border-top:1px solid var(--border)}.theme-toggle-btn{background:none;border:1px solid var(--border);border-radius:2px;padding:6px 10px;color:var(--muted);font-size:14px;cursor:pointer;transition:all .15s}.theme-toggle-btn:hover{border-color:var(--accent);color:var(--accent)}[data-theme=light]{--bg: #f5f4f0;--surface: #ffffff;--surface2: #f0efe8;--border: #e0ddd5;--border2: #d5d0c8;--text: #1a1a1a;--muted: #666;--muted2: #666;--accent: #5a7a00;--accent-dim: rgba(90,122,0,.08);--accent-dim2: rgba(90,122,0,.04);--red: #cc3333;--red-dim: rgba(204,51,51,.08);--orange: #cc7000}[data-theme=light] body:before{opacity:.15}[data-theme=light] .tag-shipped{background:#5a7a001f;color:#5a7a00;border:1px solid rgba(90,122,0,.25)}[data-theme=light] .tag-written{background:#1e64b41a;color:#1e64b4;border:1px solid rgba(30,100,180,.2)}[data-theme=light] .tag-fixed{background:#cc70001a;color:#cc7000;border:1px solid rgba(204,112,0,.2)}[data-theme=light] .tag-learned{background:#7832c81a;color:#7832c8;border:1px solid rgba(120,50,200,.2)}[data-theme=light] .tag-other{background:var(--surface2);color:var(--muted);border:1px solid var(--border)}[data-theme=light] .auth-google{border:1px solid var(--border)}[data-theme=light] .auth-google:hover{border-color:var(--muted);background:var(--surface2)}[data-theme=light] .calendar-cell--has-output{background:var(--accent-dim);border-color:#5a7a0033;color:var(--accent)}[data-theme=light] .calendar-cell--in-range{background:var(--accent-dim2);border-color:#5a7a001f;color:var(--accent)}[data-theme=light] .calendar-cell--today{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}[data-theme=light] .calendar-popover{box-shadow:0 8px 24px #0000001f}[data-theme=light] .date-range-input{color-scheme:light}[data-theme=light] .tag-dot--shipped{background:#5a7a00}[data-theme=light] .tag-dot--written{background:#1e64b4}[data-theme=light] .tag-dot--fixed{background:#cc7000}[data-theme=light] .tag-dot--learned{background:#7832c8}[data-theme=light] .tag-dot--other{background:#999}[data-theme=light] .auth-error{border:1px solid rgba(204,51,51,.2)}[data-theme=light] .auth-message{border:1px solid rgba(90,122,0,.2)}[data-theme=light] .auth-submit,[data-theme=light] .add-btn{color:#fff}@media(max-width:600px){.app{padding:24px 16px 60px}.header{flex-direction:column;align-items:flex-start;gap:12px}.header-right{width:100%;justify-content:space-between}.logo{font-size:36px}.input-row{flex-direction:column}.tag-select{min-width:unset}.stats-row{gap:8px}.stat-number{font-size:36px}.app{height:auto;overflow:visible;padding-bottom:60px}.main-grid{grid-template-columns:1fr;gap:24px}.main-left{overflow:visible;height:auto;padding-right:0}.main-right{height:auto;overflow:visible}.calendar-popover{left:8px!important;right:8px!important;min-width:unset;max-width:unset;transform:none!important}.date-range-row{flex-wrap:wrap}.auth-logo{font-size:48px}}
