:root{--color-bg: #fafaf9;--color-bg-elevated: #ffffff;--color-border: #e7e5e4;--color-border-focus: #d6d3d1;--color-text: #1c1917;--color-text-muted: #78716c;--color-accent: #ea580c;--color-accent-hover: #c2410c;--color-accent-muted: #fff7ed;--color-error: #dc2626;--color-error-bg: #fef2f2;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-full: 9999px;--font-sans: "Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--leading-tight: 1.25;--leading-normal: 1.5;--leading-relaxed: 1.625;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .07), 0 2px 4px -2px rgba(0, 0, 0, .05);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .08), 0 4px 6px -4px rgba(0, 0, 0, .04);--transition-fast: .15s ease;--transition-base: .2s ease}*{box-sizing:border-box}body{margin:0;font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}#root{min-height:100vh}.app{max-width:560px;margin:0 auto;padding:var(--space-8) var(--space-4)}.app-title{margin:0 0 var(--space-8);font-size:var(--text-3xl);font-weight:700;letter-spacing:-.02em;color:var(--color-text)}.auth-loading{margin:var(--space-8) 0;font-size:var(--text-sm);color:var(--color-text-muted)}.auth-prompt{margin:0 0 var(--space-4);font-size:var(--text-base);color:var(--color-text-muted)}.auth-link{display:inline-flex;align-items:center;padding:var(--space-2) var(--space-5);font-size:var(--text-sm);font-weight:600;color:#fff;background:var(--color-accent);border-radius:var(--radius-md);text-decoration:none;transition:background var(--transition-fast)}.auth-link:hover{background:var(--color-accent-hover)}.nav-btn-logout{flex:0;margin-left:auto;color:var(--color-text-muted)}.nav-btn-logout:hover{color:var(--color-text)}.nav{display:flex;gap:var(--space-1);padding:var(--space-1);margin-bottom:var(--space-8);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.nav-btn{flex:1;padding:var(--space-2) var(--space-4);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:500;color:var(--color-text-muted);background:transparent;border:none;border-radius:var(--radius-md);cursor:pointer;transition:color var(--transition-fast),background var(--transition-fast)}.nav-btn:hover{color:var(--color-text)}.nav-btn[aria-selected=true]{color:var(--color-text);background:var(--color-accent-muted);color:var(--color-accent)}.nav-btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.card{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-6)}.section-title{margin:0 0 var(--space-5);font-size:var(--text-lg);font-weight:600;letter-spacing:-.01em}.form-group{position:relative;margin-bottom:var(--space-5)}.form-label{display:block;margin-bottom:var(--space-2);font-size:var(--text-sm);font-weight:500;color:var(--color-text)}.form-label-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2)}.form-label-row .form-label{margin-bottom:0}.form-input{width:100%;padding:var(--space-2) var(--space-3);font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.form-input::placeholder{color:var(--color-text-muted)}.form-input:hover{border-color:var(--color-border-focus)}.form-input:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-muted)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.form-input-row{display:flex;align-items:center;gap:var(--space-2)}.form-input-row .form-input{flex:1;min-width:0}.suggest-list{list-style:none;margin:0;margin-top:var(--space-1);padding:var(--space-1);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);max-height:240px;overflow-y:auto;position:absolute;left:0;right:0;z-index:10}.suggest-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-sm);transition:background var(--transition-fast)}.suggest-item:hover{background:var(--color-bg)}.suggest-item-muted{color:var(--color-text-muted);cursor:default}.suggest-name{font-weight:500;color:var(--color-text)}.suggest-cal{font-weight:600;color:var(--color-text-muted);font-size:var(--text-xs)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:var(--space-2) var(--space-5);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:600;border:none;border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast),transform var(--transition-fast)}.btn:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{color:#fff;background:var(--color-accent)}.btn-primary:hover:not(:disabled){background:var(--color-accent-hover)}.btn-primary:active:not(:disabled){transform:scale(.98)}.btn-secondary{color:var(--color-accent);background:var(--color-accent-muted);border:1px solid rgba(234,88,12,.2)}.btn-secondary:hover:not(:disabled){background:#ea580c1f}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--text-xs);font-weight:500}.alert{padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);font-size:var(--text-sm);border-radius:var(--radius-md)}.alert-error{color:var(--color-error);background:var(--color-error-bg);border:1px solid rgba(220,38,38,.2)}.entry-list{list-style:none;margin:0;padding:0}.entry-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);margin-bottom:var(--space-1);background:var(--color-bg);border-radius:var(--radius-md);border:1px solid transparent;transition:border-color var(--transition-fast),background var(--transition-fast)}.entry-item:hover{background:var(--color-bg-elevated);border-color:var(--color-border)}.entry-item-with-action{gap:var(--space-3)}.entry-item-with-action .entry-cal{margin-left:auto}.btn-delete{color:var(--color-text-muted);background:transparent;border:1px solid var(--color-border)}.btn-delete:hover:not(:disabled){color:var(--color-error);border-color:var(--color-error);background:var(--color-error-bg)}.entry-name{font-weight:500;color:var(--color-text)}.entry-cal{font-size:var(--text-sm);font-weight:600;color:var(--color-text-muted)}.total-row{display:flex;align-items:center;justify-content:space-between;margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--color-border)}.total-label{font-size:var(--text-sm);font-weight:600;color:var(--color-text-muted)}.total-value{font-size:var(--text-xl);font-weight:700;letter-spacing:-.02em;color:var(--color-accent)}.picker-block{margin-bottom:var(--space-5)}.loading{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-6);font-size:var(--text-sm);color:var(--color-text-muted)}.loading-dot{width:6px;height:6px;background:var(--color-accent);border-radius:var(--radius-full);animation:pulse 1.2s ease-in-out infinite}.loading-dot:nth-child(2){animation-delay:.2s}.loading-dot:nth-child(3){animation-delay:.4s}@keyframes pulse{0%,to{opacity:.4;transform:scale(.9)}50%{opacity:1;transform:scale(1)}}.week-days{display:flex;flex-direction:column;gap:var(--space-4)}.week-day{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4)}.week-day-title{margin:0 0 var(--space-3);font-size:var(--text-sm);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em}.week-day-total{margin-top:var(--space-2);font-size:var(--text-sm);font-weight:500;color:var(--color-text-muted)}.week-total-row{margin-top:var(--space-6);padding-top:var(--space-4);border-top:2px solid var(--color-border)}.week-total-row .total-value{font-size:var(--text-2xl)}
