*,*:before,*:after{box-sizing:border-box}:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5;font-weight:400;color:#333;background-color:#f5f5f5;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}button{font-family:inherit}#root{min-height:100vh}.today-view{display:flex;flex-direction:column;align-items:center;padding-top:40px;gap:32px}.today-date{font-size:18px;font-weight:500;color:#666}.today-card{display:flex;flex-direction:column;align-items:center;gap:20px}.check-btn{width:140px;height:140px;border-radius:50%;border:4px solid #ddd;background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s ease;box-shadow:0 4px 20px #00000014}.check-btn:hover{transform:scale(1.05);box-shadow:0 6px 24px #0000001f}.check-btn:active{transform:scale(.95)}.check-btn.checked{border-color:#4caf50;background:#4caf50;box-shadow:0 4px 20px #4caf5059}.check-icon{font-size:52px;line-height:1}.check-btn.checked .check-icon{color:#fff;font-size:56px}.check-label{font-size:20px;font-weight:600;color:#333}.check-hint{font-size:13px;color:#aaa}.calendar-view{display:flex;flex-direction:column;gap:16px}.calendar-header{display:flex;align-items:center;justify-content:space-between;padding:8px 0}.month-title{font-size:18px;font-weight:600;color:#333}.nav-btn{background:#f5f5f5;border:none;width:36px;height:36px;border-radius:50%;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#666;transition:background .2s}.nav-btn:hover{background:#eee}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.calendar-weekday{text-align:center;font-size:13px;color:#999;padding:8px 0;font-weight:500}.calendar-day{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:10px;position:relative;gap:2px}.calendar-day.empty{cursor:default}.day-number{font-size:14px;font-weight:500;color:#333}.calendar-day.is-today{outline:2px solid #4CAF50}.calendar-day.is-today .day-number{color:#4caf50;font-weight:700}.calendar-day.day-taken{background:#e8f5e9}.day-check{font-size:10px;color:#4caf50;font-weight:700}.calendar-legend{display:flex;justify-content:center;gap:24px;padding:8px 0}.legend-item{display:flex;align-items:center;gap:6px;font-size:13px;color:#888}.legend-dot{width:12px;height:12px;border-radius:50%}.legend-dot.taken{background:#4caf50}.legend-dot.missed{background:#eee;border:1px solid #ddd}.stats-view{display:flex;flex-direction:column;gap:20px}.stats-summary{display:grid;grid-template-columns:1fr 1fr;gap:12px}.stat-card{background:#fff;border-radius:12px;padding:16px;text-align:center;box-shadow:0 1px 4px #0000000f}.stat-value{font-size:28px;font-weight:700;color:#4caf50}.stat-label{font-size:13px;color:#999;margin-top:4px}.stats-section{background:#fff;border-radius:12px;padding:16px;box-shadow:0 1px 4px #0000000f}.stats-section h3{margin:0 0 16px;font-size:16px;color:#333}.week-chart{display:flex;justify-content:space-between;gap:8px}.week-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px}.week-dot{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700}.dot-taken{background:#4caf50;color:#fff}.dot-missed{background:#f0f0f0;color:transparent}.week-label{font-size:12px;color:#999}.app{max-width:480px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column;background:#f5f5f5}.app-header{display:flex;align-items:center;justify-content:center;padding:16px 20px;background:#fff;border-bottom:1px solid #eee;position:sticky;top:0;z-index:10}.app-header h1{margin:0;font-size:20px;color:#333}.app-main{flex:1;padding:16px 16px 80px;overflow-y:auto}.app-nav{position:fixed;bottom:0;left:0;right:0;display:flex;background:#fff;border-top:1px solid #eee;padding:8px 0;padding-bottom:max(8px,env(safe-area-inset-bottom));z-index:10;max-width:480px;margin:0 auto}.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;background:none;border:none;padding:6px;cursor:pointer;color:#999;transition:color .2s}.nav-item.active{color:#4caf50}.nav-icon{font-size:20px}.nav-label{font-size:11px;font-weight:500}
