:root{--k-bg: #f1eee8;--k-surface: #ffffff;--k-fill: #f8f5f0;--k-tint: linear-gradient(120deg, #fffdfa 0%, #fdeedd 100%);--k-border: #e3ded4;--k-border-strong: #cdc7ba;--k-ink: #1c1b19;--k-muted: #8b8579;--k-accent: #f25c1a;--k-accent-strong: #dd4c0e;--k-accent-soft: #fdeadd;--k-good: #2fae8f;--k-good-soft: #e4f5ef;--k-danger: #d64545;--k-danger-soft: #fdf3f2;--k-radius-sm: 8px;--k-radius: 14px;--k-radius-lg: 20px;--k-pill: 999px;--k-shadow: 0 1px 2px rgba(30, 25, 15, .05);--k-shadow-lift: 0 6px 18px rgba(30, 25, 15, .08);--k-font: "Plus Jakarta Sans", system-ui, sans-serif}.k-card{background:var(--k-surface);border:1px solid var(--k-border);border-radius:var(--k-radius-lg);box-shadow:var(--k-shadow);padding:20px}.k-card--tint{background:var(--k-tint)}.k-card--ink{background:var(--k-ink);color:#fff;border-color:var(--k-ink)}.k-btn{font:inherit;font-size:.85rem;font-weight:600;padding:9px 18px;border:1px solid var(--k-border);border-radius:var(--k-pill);background:var(--k-surface);color:var(--k-ink);cursor:pointer;box-shadow:var(--k-shadow)}.k-btn:hover{border-color:var(--k-border-strong)}.k-btn--primary{background:var(--k-accent);border-color:var(--k-accent);color:#fff}.k-btn--primary:hover{background:var(--k-accent-strong);border-color:var(--k-accent-strong)}.k-btn--ink{background:var(--k-ink);border-color:var(--k-ink);color:#fff}.k-btn--quiet{background:transparent;border-color:transparent;box-shadow:none;color:var(--k-muted)}.k-btn--quiet:hover{color:var(--k-ink)}.k-title{font-weight:800;letter-spacing:-.02em;font-size:1.4rem;margin:0}.k-label{font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--k-muted)}.k-big{font-weight:800;font-size:1.8rem;letter-spacing:-.02em}.k-muted{color:var(--k-muted)}.k-link{color:var(--k-muted);font-weight:600;text-decoration:none}.k-link:hover{color:var(--k-ink)}.k-chip{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--k-border);border-radius:12px;background:var(--k-surface)}.k-divider{border:0;border-top:1px solid var(--k-border);margin:12px 0}.k-input{font:inherit;padding:9px 14px;border:1px solid var(--k-border);border-radius:var(--k-radius);background:var(--k-surface);color:var(--k-ink)}.k-input:focus{outline:2px solid var(--k-accent);outline-offset:1px}*{box-sizing:border-box}body{font-family:var(--k-font);background:var(--k-bg);color:var(--k-ink);margin:0;padding:24px 16px;display:flex;justify-content:center}main{display:flex;flex-direction:column;align-items:center;gap:14px;width:min(95vmin,900px)}.login{min-height:80vh;display:flex;align-items:center;justify-content:center;width:100%}.login-card{display:flex;flex-direction:column;gap:10px;width:min(92vw,360px);text-align:center;padding:28px}.login-card .k-input{width:100%;text-align:center}.login-note{font-size:.88rem;color:var(--k-muted);margin:0}.login .warn{color:var(--k-danger);font-weight:600;font-size:.85rem;margin:0}.authbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:center;font-size:.82rem;width:100%}.authbar .k-input{padding:6px 12px;font-size:.82rem}.authbar button{font:inherit;font-size:.82rem;font-weight:600;padding:7px 16px;border:1px solid var(--k-border);border-radius:var(--k-pill);background:var(--k-surface);color:var(--k-ink);cursor:pointer;box-shadow:var(--k-shadow)}.authbar button:hover{border-color:var(--k-border-strong)}.authbar .warn{color:var(--k-danger);font-weight:600}.identity{width:100%;text-align:center;font:inherit;font-weight:800;font-size:1.15rem;letter-spacing:-.01em;color:var(--k-ink);background:var(--k-tint);border:1px solid var(--k-border);border-radius:var(--k-radius-lg);padding:18px 20px;box-shadow:var(--k-shadow)}.identity::placeholder{color:var(--k-muted);font-weight:600}.identity:focus{outline:2px solid var(--k-accent);outline-offset:2px}.streakbar{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;font-size:.88rem}.streakbar span{background:var(--k-surface);border:1px solid var(--k-border);border-radius:var(--k-radius);padding:8px 16px;font-weight:600;box-shadow:var(--k-shadow)}.streakbar .warn{color:var(--k-danger);background:var(--k-danger-soft);border-color:#f3d2d2}.focus-card{background:var(--k-surface);border:1px solid var(--k-border);border-left:3px solid var(--k-accent);border-radius:var(--k-radius);padding:10px 16px;font-size:.88rem;box-shadow:var(--k-shadow)}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.toolbar button,.toolbar .import{font:inherit;font-size:.82rem;font-weight:600;padding:7px 16px;border:1px solid var(--k-border);border-radius:var(--k-pill);background:var(--k-surface);color:var(--k-ink);cursor:pointer;box-shadow:var(--k-shadow)}.toolbar button:hover,.toolbar .import:hover{border-color:var(--k-border-strong)}.toolbar .active{background:var(--k-ink);color:#fff;border-color:var(--k-ink)}.toolbar a{font-size:.82rem;font-weight:600;color:var(--k-muted)}.toolbar a:hover{color:var(--k-ink)}.hint{font-size:.82rem;color:var(--k-muted);margin:0}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:100%}.block{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;background:var(--k-surface);border:1px solid var(--k-border);border-radius:var(--k-radius);padding:6px;box-shadow:var(--k-shadow)}.cell{position:relative;aspect-ratio:1;width:100%;border:1px solid var(--k-border);border-radius:var(--k-radius-sm);background:var(--k-fill);padding:4px;font:inherit;font-size:clamp(8px,1.35vmin,12.5px);text-align:center;color:var(--k-ink);resize:none;overflow:hidden}textarea.cell{background:var(--k-surface)}textarea.cell:focus{outline:2px solid var(--k-accent);outline-offset:-1px}button.cell{cursor:pointer}button.cell:disabled{cursor:default}button.cell:not(:disabled):hover{border-color:var(--k-border-strong)}.cell.sub{background:var(--k-accent-soft);font-weight:700}.cell.goal{background:var(--k-accent);color:#fff;font-weight:800}.cell.goal::placeholder{color:#ffd9c2}.cell.focus{border:2px solid var(--k-accent)}.cell.done{background:var(--k-good-soft);border-color:var(--k-good)}button.cell.done:after{content:"✓";position:absolute;top:2px;right:5px;color:var(--k-good);font-weight:800}.review{width:100%;background:var(--k-surface);border:1px solid var(--k-border);border-radius:var(--k-radius-lg);padding:14px 18px;font-size:.88rem;box-shadow:var(--k-shadow)}.review summary{cursor:pointer;font-weight:700}.review label{display:block;margin:12px 0 4px;font-weight:600}.review textarea{width:100%;min-height:48px;font:inherit;font-size:.85rem;border:1px solid var(--k-border);border-radius:var(--k-radius-sm);padding:8px;resize:vertical;background:var(--k-fill)}.review textarea:focus{outline:2px solid var(--k-accent);outline-offset:-1px}.review button{margin-top:10px;font:inherit;font-size:.82rem;font-weight:600;padding:7px 18px;border:1px solid var(--k-ink);background:var(--k-ink);color:#fff;border-radius:var(--k-pill);cursor:pointer}
