@import url("https://fonts.googleapis.com/css2?family=Nanum+Gothic:wght@400;700;800&display=swap");*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f7f4ef;--surface:#fff;--border:#e8e0d5;--text:#2d2926;--muted:#8b7d74;--accent:#ff6b6b;--accent2:#4ecdc4;--accent3:#ffe66d;--green:#6bcb77;--red:#f44;--shadow:0 2px 8px rgba(0,0,0,.08);--radius:12px;--radius-sm:8px}html{font-size:16px}body{font-family:Nanum Gothic,-apple-system,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit;border:none;outline:none}.app-layout{display:grid;grid-template-columns:1fr 340px;grid-template-rows:56px 1fr;min-height:100vh;max-width:1200px;margin:0 auto;padding:0 16px;grid-gap:0 20px;gap:0 20px}.app-header{grid-column:1/-1;display:flex;align-items:center;gap:16px;padding:0 4px;border-bottom:1px solid var(--border)}.app-header h1{font-size:1.1rem;font-weight:800;letter-spacing:-.5px}.app-header nav{margin-left:auto;display:flex;gap:8px}.nav-link{padding:6px 14px;border-radius:20px;font-size:.85rem;font-weight:700;color:var(--muted);transition:all .15s}.nav-link.active,.nav-link:hover{background:var(--text);color:#fff}.main-col{grid-column:1;padding:20px 0;overflow-y:auto}.right-col{grid-column:2;padding:20px 0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border-radius:8px;font-size:.85rem;font-weight:700;transition:all .15s}.btn-primary{background:var(--text);color:#fff}.btn-primary:hover{opacity:.85}.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--text)}.btn-ghost:hover{background:var(--bg)}.btn-danger{background:var(--red);color:#fff}.btn-sm{padding:5px 10px;font-size:.78rem}.btn-xs{padding:3px 8px;font-size:.72rem}.btn:disabled{opacity:.4;cursor:not-allowed}.date-nav{display:flex;align-items:center;gap:12px;margin-bottom:16px}.date-nav h2{font-size:1.1rem;font-weight:800}.date-btn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--surface);border:1px solid var(--border);font-size:1.1rem;color:var(--text)}.date-btn:hover{background:var(--text);color:#fff}.today-btn{font-size:.75rem;font-weight:700;padding:3px 10px;border-radius:10px;background:var(--bg);border:1px solid var(--border);color:var(--muted);margin-left:auto}.today-btn:hover{background:var(--text);color:#fff;border-color:var(--text)}.tabs{display:flex;gap:4px;background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:4px;margin-bottom:16px}.tab{flex:1 1;padding:7px;border-radius:7px;font-size:.85rem;font-weight:700;color:var(--muted);background:transparent;transition:all .15s}.tab.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.task-list{display:flex;flex-direction:column;gap:8px}.task-item{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);transition:all .15s}.task-item:hover{border-color:var(--muted)}.task-item.completed .task-title{text-decoration:line-through;color:var(--muted)}.task-item.rolled{border-left:3px solid var(--red)}.task-item.rolled .task-title{color:var(--red);font-weight:700}.task-check{width:20px;height:20px;min-width:20px;border-radius:50%;border:2px solid var(--border);background:transparent;display:flex;align-items:center;justify-content:center;transition:all .15s;font-size:.75rem}.task-check:hover{border-color:var(--green)}.task-item.completed .task-check{background:var(--green);border-color:var(--green);color:#fff}.task-title{flex:1 1;font-size:.88rem;line-height:1.4}.cat-badge{padding:2px 8px;border-radius:10px;font-size:.7rem;font-weight:700;color:#fff}.rolled-badge{font-size:.68rem;color:var(--red);font-weight:700}.task-delete-btn{width:20px;height:20px;border-radius:50%;background:transparent;color:var(--muted);font-size:.9rem;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s}.task-item:hover .task-delete-btn{opacity:1}.task-delete-btn:hover{background:var(--red);color:#fff}.add-task-form{display:flex;gap:8px;margin-top:12px}.add-task-input{flex:1 1;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-family:inherit;font-size:.88rem;background:var(--surface);color:var(--text);outline:none;transition:border-color .15s}.add-task-input:focus{border-color:var(--text)}.add-task-input::placeholder{color:var(--muted)}.empty-state{text-align:center;padding:32px 16px;color:var(--muted);font-size:.9rem}.empty-state .empty-icon{font-size:2.5rem;margin-bottom:8px}.char-widget{position:-webkit-sticky;position:sticky;top:20px;display:flex;flex-direction:column;gap:12px}.char-stage-badge{font-size:.72rem;font-weight:700;padding:2px 8px;border-radius:10px;background:var(--accent3);color:var(--text)}.char-name-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.char-name{font-size:1rem;font-weight:800}.char-canvas-wrap{width:140px;height:140px;margin:0 auto;position:relative}.char-canvas-wrap svg{width:100%;height:100%}.gauge-section{gap:8px}.gauge-row,.gauge-section{display:flex;flex-direction:column}.gauge-row{gap:4px}.gauge-label{display:flex;justify-content:space-between;font-size:.75rem;font-weight:700}.gauge-bar{height:7px;background:var(--border);border-radius:4px;overflow:hidden}.gauge-fill{height:100%;border-radius:4px;transition:width .4s}.gauge-fill.hunger{background:linear-gradient(90deg,#ff9a56,#ff6b35)}.gauge-fill.clean{background:linear-gradient(90deg,#56ccf2,#2f80ed)}.gauge-fill.happy{background:linear-gradient(90deg,#f7971e,#ffd200)}.gauge-fill.danger{background:var(--red);animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.credits-row{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:var(--radius-sm);color:#fff}.credits-amount{font-size:1.2rem;font-weight:800}.credits-label{font-size:.75rem;opacity:.85}.action-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.action-btn{display:flex;flex-direction:column;align-items:center;gap:3px;padding:10px;border-radius:var(--radius-sm);border:2px solid var(--border);background:var(--surface);font-family:inherit;font-size:.72rem;font-weight:700;color:var(--text);transition:all .15s}.action-btn:hover{border-color:var(--text);transform:translateY(-1px)}.action-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.action-btn .icon{font-size:1.3rem}.action-btn .limit{font-size:.62rem;color:var(--muted)}.poop-alert{background:#fff3cd;border:1px solid #ffcf40;border-radius:var(--radius-sm);padding:8px 12px;gap:8px;font-size:.82rem;font-weight:700}.modal-overlay,.poop-alert{display:flex;align-items:center}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);justify-content:center;z-index:100;padding:16px}.modal{background:var(--surface);border-radius:var(--radius);padding:20px;width:100%;max-width:340px;box-shadow:0 8px 32px rgba(0,0,0,.2)}.modal h3{font-size:1rem;font-weight:800;margin-bottom:12px}.modal-actions{display:flex;gap:8px;margin-top:16px;justify-content:flex-end}.size-options{display:flex;flex-direction:column;gap:8px;margin-bottom:4px}.size-opt{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border:2px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;background:var(--surface);font-family:inherit;font-size:.88rem;font-weight:700;transition:all .15s;width:100%}.size-opt:hover{border-color:var(--accent2)}.size-opt .cost{color:#764ba2;font-weight:800}.size-opt:disabled{opacity:.4;cursor:not-allowed}.shop-section{margin-top:4px}.shop-title{font-size:.78rem;font-weight:700;color:var(--muted);margin-bottom:8px}.skin-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:6px;gap:6px}.skin-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;border:2px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;background:var(--surface);font-family:inherit;text-align:center;transition:all .15s}.skin-item:hover{border-color:var(--accent2)}.skin-item.owned{border-color:var(--green);background:#f0fff4}.skin-item.equipped{border-color:var(--accent3);background:#fffef0}.skin-item .skin-emoji{font-size:1.3rem}.skin-item .skin-name{font-size:.62rem;font-weight:700}.skin-item .skin-cost{font-size:.62rem;color:#764ba2;font-weight:800}.report-page{max-width:900px;margin:0 auto;padding:20px 16px}.report-header{display:flex;align-items:center;gap:12px;margin-bottom:20px}.report-header h1{font-size:1.3rem;font-weight:800}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px;margin-bottom:20px}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;text-align:center}.stat-value{font-size:1.6rem;font-weight:800}.stat-label{font-size:.72rem;color:var(--muted);font-weight:700;margin-top:4px}.cat-progress-list{display:flex;flex-direction:column;gap:12px}.cat-progress-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px;font-size:.85rem;font-weight:700}.cat-progress-bar{height:10px;background:var(--border);border-radius:5px;overflow:hidden}.cat-progress-fill{height:100%;border-radius:5px;transition:width .5s}.cat-stats{font-size:.72rem;color:var(--muted);margin-top:3px}.heatmap{display:flex;flex-wrap:wrap;gap:4px}.heatmap-cell{width:30px;height:30px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:.62rem;font-weight:700;border:1px solid var(--border);cursor:default;position:relative}.heatmap-cell.none{background:var(--bg);color:var(--muted)}.heatmap-cell.partial{background:#c3e6cb;color:#155724}.heatmap-cell.good{background:var(--green);color:#fff}.heatmap-cell.perfect{background:var(--accent3);color:var(--text)}.setup-page{max-width:580px;margin:40px auto;padding:0 16px}.setup-page h1{font-size:1.5rem;font-weight:800;margin-bottom:8px}.setup-subtitle{color:var(--muted);margin-bottom:28px;font-size:.9rem}.char-select-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px;margin-bottom:24px}.char-select-item{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 8px;border:3px solid var(--border);border-radius:var(--radius);cursor:pointer;background:var(--surface);font-family:inherit;text-align:center;transition:all .15s}.char-select-item:hover{border-color:var(--accent2);transform:translateY(-2px)}.char-select-item.selected{border-color:var(--accent);background:#fff5f5}.char-select-desc{font-size:.67rem;color:var(--muted)}.name-input{width:100%;padding:12px 16px;border:2px solid var(--border);border-radius:var(--radius-sm);font-family:inherit;font-size:1rem;font-weight:700;color:var(--text);background:var(--surface);outline:none;transition:border-color .15s;margin-bottom:20px}.name-input:focus{border-color:var(--accent)}.cat-manager .cat-list{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.cat-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.cat-swatch{width:14px;height:14px;min-width:14px;border-radius:3px}.cat-item-name{flex:1 1;font-size:.85rem;font-weight:700}.section-title{font-size:.78rem;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px}.divider{height:1px;background:var(--border);margin:16px 0}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.mb-8{margin-bottom:8px}.mb-16{margin-bottom:16px}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes wiggle{0%,to{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}.anim-float{animation:float 3s ease-in-out infinite}.anim-wiggle{animation:wiggle .4s ease-in-out 3}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.char-dead-card{text-align:center;padding:20px}.char-dead-card .death-emoji{font-size:3rem;margin-bottom:12px}.char-dead-card .death-title{font-size:1.1rem;font-weight:800;color:var(--red)}.char-dead-card .death-reason{font-size:.85rem;color:var(--muted);margin-top:4px;margin-bottom:16px}@media (max-width:768px){.app-layout{grid-template-columns:1fr;grid-template-rows:56px auto auto;padding:0 12px}.right-col{grid-column:1}.char-select-grid,.stat-grid{grid-template-columns:repeat(2,1fr)}}