.header{padding:var(--spacing-md);padding-top:var(--spacing-sm)}.header-content{text-align:center}.header-title{font-size:var(--font-size-xl);font-weight:700;margin:0}.header-subtitle{font-size:var(--font-size-sm);color:var(--tg-theme-hint-color);margin:var(--spacing-xs) 0 0}.achievement-banner{position:fixed;top:calc(var(--spacing-md) + var(--safe-area-top));left:var(--spacing-md);right:var(--spacing-md);display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:var(--spacing-md);background-color:var(--color-success);color:#fff;border-radius:var(--radius-md);box-shadow:0 4px 12px #0003;animation:achievement-enter .3s ease-out;z-index:1000}.achievement-banner--exit{animation:fadeOut .3s ease-out forwards}.achievement-banner-icon{font-size:var(--font-size-xl)}.achievement-banner-text{font-size:var(--font-size-md);font-weight:600}.dev-panel-toggle{position:fixed;bottom:80px;right:16px;width:40px;height:40px;border-radius:50%;background:#333;color:#fff;border:none;font-size:18px;cursor:pointer;z-index:9999;box-shadow:0 2px 8px #0000004d}.dev-panel{position:fixed;bottom:130px;right:16px;width:280px;max-height:400px;background:#1c1c1e;color:#fff;border-radius:12px;box-shadow:0 4px 20px #0006;z-index:9998;overflow:hidden}.dev-panel-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#2c2c2e;border-bottom:1px solid #3c3c3e}.dev-panel-header h3{margin:0;font-size:14px}.dev-panel-header button{background:none;border:none;color:#fff;font-size:20px;cursor:pointer;padding:0;line-height:1}.dev-panel-content{padding:12px 16px;overflow-y:auto;max-height:340px}.dev-panel-section{margin-bottom:16px}.dev-panel-section:last-child{margin-bottom:0}.dev-panel-section h4{margin:0 0 8px;font-size:12px;color:#8e8e93;text-transform:uppercase}.dev-panel-section p{margin:4px 0;font-size:12px;font-family:monospace}.dev-panel-section button{display:block;width:100%;padding:8px 12px;margin-top:8px;background:#3c3c3e;color:#fff;border:none;border-radius:6px;font-size:13px;cursor:pointer}.dev-panel-section button:hover{background:#4c4c4e}.dev-panel-section button:active{background:#5c5c5e}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);border:none;border-radius:var(--radius-md);font-weight:600;cursor:pointer;transition:all var(--transition-fast);touch-action:manipulation;-webkit-tap-highlight-color:transparent}.btn:active{transform:scale(.98)}.btn--primary{background-color:var(--tg-theme-button-color);color:var(--tg-theme-button-text-color)}.btn--primary:active{opacity:.9}.btn--secondary{background-color:var(--tg-theme-secondary-bg-color);color:var(--tg-theme-text-color)}.btn--ghost{background-color:transparent;color:var(--tg-theme-link-color)}.btn--sm{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm);min-height:32px}.btn--md{padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-md);min-height:44px}.btn--lg{padding:var(--spacing-md) var(--spacing-lg);font-size:var(--font-size-lg);min-height:52px}.btn--full{width:100%}.btn--disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.chip{display:inline-flex;align-items:center;padding:var(--spacing-sm) var(--spacing-md);background-color:var(--tg-theme-secondary-bg-color);color:var(--tg-theme-text-color);border:2px solid transparent;border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:all var(--transition-fast);touch-action:manipulation;-webkit-tap-highlight-color:transparent}.chip:active{transform:scale(.97)}.chip--selected{background-color:var(--tg-theme-button-color);color:var(--tg-theme-button-text-color)}.onboarding-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--spacing-lg);background:#00000073;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:1000}.onboarding-modal{width:100%;max-width:420px;display:flex;flex-direction:column;padding:var(--spacing-xl) var(--spacing-lg);background:var(--tg-theme-secondary-bg-color);color:var(--tg-theme-text-color);border-radius:var(--radius-lg);box-shadow:0 24px 60px #00000059}.onboarding-header{text-align:center;margin-bottom:var(--spacing-lg)}.onboarding-title{font-size:var(--font-size-xxl);font-weight:700;margin-bottom:var(--spacing-sm)}.onboarding-subtitle{font-size:var(--font-size-md);color:var(--tg-theme-hint-color);line-height:1.5}.onboarding-form{display:flex;flex-direction:column;gap:var(--spacing-md)}.onboarding-field{display:flex;flex-direction:column;gap:var(--spacing-sm)}.onboarding-label{font-size:var(--font-size-sm);font-weight:500;color:var(--tg-theme-hint-color)}.onboarding-chips{display:flex;flex-wrap:wrap;gap:var(--spacing-sm)}.onboarding-footer{margin-top:var(--spacing-lg)}.card{position:relative;width:100%;aspect-ratio:3 / 4;max-height:var(--card-max-height);background-color:var(--card-bg);border-radius:var(--radius-lg);border:1px solid var(--card-border);box-shadow:0 12px 32px var(--card-shadow);overflow:hidden;-webkit-user-select:none;user-select:none;touch-action:none}.card-content{display:flex;align-items:center;justify-content:center;height:100%;padding:var(--spacing-lg);text-align:center}.card-text{font-size:var(--font-size-xl);font-weight:600;line-height:1.3;word-break:break-word;overflow-wrap:break-word}.card-hint{position:absolute;top:50%;transform:translateY(-50%);padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:var(--font-size-lg);font-weight:700;text-transform:uppercase;opacity:0;transition:opacity var(--transition-fast);pointer-events:none}.card-hint--left{left:var(--spacing-md);background-color:var(--card-not-done);color:var(--color-error);border:3px solid var(--color-error);transform:translateY(-50%) rotate(-15deg)}.card-hint--right{right:var(--spacing-md);background-color:var(--card-done);color:var(--color-success);border:3px solid var(--color-success);transform:translateY(-50%) rotate(15deg)}.card-hint--active{opacity:1}.card--stack{position:absolute;top:0;left:0;pointer-events:none}.card--empty{background-color:var(--tg-theme-bg-color);border:2px dashed var(--tg-theme-hint-color);box-shadow:none}.card--empty .card-text{color:var(--tg-theme-hint-color);font-weight:400}.card-carousel{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md);width:100%;padding:var(--spacing-sm) 0}.card-carousel-track{position:relative;width:100%;height:calc(var(--card-max-height) + var(--spacing-md) + var(--spacing-md));overflow:hidden;padding:var(--spacing-md) 0;touch-action:pan-y;cursor:grab}.card-carousel-track:active{cursor:grabbing}.card-carousel-item{position:absolute;left:50%;top:var(--spacing-md);width:min(92%,var(--card-max-width));height:calc(100% - var(--spacing-md) - var(--spacing-md));will-change:transform,opacity}.card-carousel-item .card{height:100%;max-height:100%}.progress-bar-wrapper{display:flex;flex-direction:column;gap:var(--spacing-xs)}.progress-bar-header{display:flex;justify-content:space-between;align-items:center}.progress-bar-label{font-size:var(--font-size-xs);color:var(--tg-theme-hint-color)}.progress-bar-percent{font-size:var(--font-size-xs);color:var(--tg-theme-hint-color);font-weight:500}.progress-bar{height:4px;background-color:var(--tg-theme-secondary-bg-color);border-radius:2px;overflow:hidden}.progress-bar-fill{height:100%;background-color:var(--tg-theme-button-color);border-radius:2px;transition:width var(--transition-normal)}.year-progress{display:flex;flex-direction:column;gap:var(--spacing-md);padding:0 var(--spacing-md)}.year-progress-stats{display:flex;justify-content:space-around;gap:var(--spacing-sm)}.year-progress-stat{display:flex;flex-direction:column;align-items:center;gap:2px}.year-progress-stat-value{font-size:var(--font-size-lg);font-weight:700;color:var(--tg-theme-text-color)}.year-progress-stat-label{font-size:var(--font-size-xs);color:var(--tg-theme-hint-color)}.day-view-screen{display:flex;flex-direction:column;gap:var(--spacing-lg)}.day-view-cards{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--spacing-sm)}.day-view-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-md)}.day-view-empty-text{font-size:var(--font-size-lg);color:var(--tg-theme-hint-color)}.day-view-status{text-align:center}.day-view-status-text{font-size:var(--font-size-sm);color:var(--tg-theme-hint-color)}.day-view-actions{padding:0 var(--spacing-md) var(--spacing-md)}.swipeable-card{position:absolute;top:0;left:0;width:100%;z-index:10}.card-stack{position:relative;width:min(92vw,var(--card-max-width));max-width:var(--card-max-width);aspect-ratio:3 / 4;max-height:var(--card-max-height);margin:0 auto}.card-stack-item{position:absolute;top:0;left:0;width:100%;transition:transform var(--transition-normal),opacity var(--transition-normal);pointer-events:none}.bottom-sheet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#0006;z-index:100;animation:fadeIn .2s ease-out}.bottom-sheet{position:absolute;bottom:0;left:0;right:0;background-color:var(--tg-theme-bg-color);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:var(--spacing-sm) var(--spacing-md);padding-bottom:calc(var(--spacing-lg) + var(--safe-area-bottom));animation:slideUp .3s ease-out;max-height:80vh;overflow-y:auto}.bottom-sheet-handle{width:36px;height:4px;background-color:var(--tg-theme-hint-color);border-radius:2px;margin:0 auto var(--spacing-md);opacity:.4}.bottom-sheet-title{font-size:var(--font-size-lg);font-weight:600;text-align:center;margin-bottom:var(--spacing-md)}.bottom-sheet-content{display:flex;flex-direction:column;gap:var(--spacing-md)}.input-wrapper{display:flex;flex-direction:column;gap:var(--spacing-xs)}.input-label{font-size:var(--font-size-sm);color:var(--tg-theme-hint-color)}.input{width:100%;padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-md);line-height:1.5;color:var(--tg-theme-text-color);background-color:var(--tg-theme-secondary-bg-color);border:2px solid transparent;border-radius:var(--radius-md);outline:none;transition:border-color var(--transition-fast)}.input::placeholder{color:var(--tg-theme-hint-color)}.input:focus{border-color:var(--tg-theme-button-color)}.input--error{border-color:var(--color-error)}.input-footer{display:flex;justify-content:space-between;align-items:center;min-height:18px}.input-error{font-size:var(--font-size-xs);color:var(--color-error)}.input-counter{font-size:var(--font-size-xs);color:var(--tg-theme-hint-color);margin-left:auto}.reason-picker{display:flex;flex-direction:column;gap:var(--spacing-md)}.reason-picker-chips{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);justify-content:center}.reason-picker-custom{display:flex;flex-direction:column;gap:var(--spacing-md);margin-top:var(--spacing-sm)}.toast{position:fixed;bottom:calc(var(--spacing-lg) + var(--safe-area-bottom));left:50%;transform:translate(-50%);display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);background-color:var(--tg-theme-text-color);color:var(--tg-theme-bg-color);border-radius:var(--radius-full);box-shadow:0 4px 12px #00000026;animation:toast-enter .2s ease-out;z-index:1000}.toast--exit{animation:toast-exit .2s ease-out forwards}.toast-message{font-size:var(--font-size-sm);font-weight:500}.toast-action{background:none;border:none;color:var(--tg-theme-button-color);font-size:var(--font-size-sm);font-weight:600;cursor:pointer;padding:var(--spacing-xs) var(--spacing-sm);margin:calc(-1 * var(--spacing-xs)) calc(-1 * var(--spacing-sm));border-radius:var(--radius-sm)}.toast-action:active{opacity:.8}.review-screen{display:flex;flex-direction:column;gap:var(--spacing-lg)}.review-cards{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-md);gap:var(--spacing-lg)}.review-hint{display:flex;justify-content:space-between;width:100%;max-width:var(--card-max-width);padding:0 var(--spacing-sm)}.review-hint-left,.review-hint-right{font-size:var(--font-size-sm);color:var(--tg-theme-hint-color)}.review-hint-left{color:var(--color-error)}.review-hint-right{color:var(--color-success)}.review-complete{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-lg);padding:var(--spacing-lg);text-align:center}.review-complete-text{font-size:var(--font-size-lg);font-weight:600;color:var(--color-success)}.review-progress{text-align:center;padding-bottom:var(--spacing-md)}.review-progress-text{font-size:var(--font-size-sm);color:var(--tg-theme-hint-color);font-weight:500}.card-input{display:flex;flex-direction:column;gap:var(--spacing-xs)}.card-input-field{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md);background-color:var(--tg-theme-secondary-bg-color);border-radius:var(--radius-md);border:2px solid transparent;transition:border-color var(--transition-fast)}.card-input-field:focus-within{border-color:var(--tg-theme-button-color)}.card-input--error .card-input-field{border-color:var(--color-error)}.card-input-text{flex:1;background:none;border:none;outline:none;font-size:var(--font-size-md);color:var(--tg-theme-text-color);font-weight:500}.card-input-text::placeholder{color:var(--tg-theme-hint-color);font-weight:400}.card-input-remove{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:none;border:none;color:var(--tg-theme-hint-color);font-size:20px;cursor:pointer;padding:0;line-height:1;border-radius:var(--radius-full);transition:background-color var(--transition-fast)}.card-input-remove:active{background-color:var(--tg-theme-secondary-bg-color)}.card-input-footer{display:flex;justify-content:space-between;align-items:center;padding:0 var(--spacing-xs);min-height:16px}.card-input-error{font-size:var(--font-size-xs);color:var(--color-error)}.card-input-counter{font-size:var(--font-size-xs);color:var(--tg-theme-hint-color);margin-left:auto}.plan-screen{display:flex;flex-direction:column;gap:var(--spacing-lg)}.plan-cards{flex:1;display:flex;flex-direction:column;gap:var(--spacing-md);padding:0 var(--spacing-md);overflow-y:auto}.plan-add-btn{display:flex;align-items:center;justify-content:center;padding:var(--spacing-md);background-color:var(--tg-theme-secondary-bg-color);border:2px dashed var(--tg-theme-hint-color);border-radius:var(--radius-md);color:var(--tg-theme-hint-color);font-size:var(--font-size-md);font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.plan-add-btn:active{opacity:.8}.plan-footer{display:flex;flex-direction:column;gap:var(--spacing-sm);padding:0 var(--spacing-md) var(--spacing-md)}.plan-hint{text-align:center;font-size:var(--font-size-sm);color:var(--tg-theme-hint-color)}.missed-screen{display:flex;flex-direction:column;gap:var(--spacing-md)}.missed-header{text-align:center;padding:var(--spacing-md)}.missed-subtitle{font-size:var(--font-size-sm);color:var(--tg-theme-hint-color);margin-bottom:var(--spacing-xs)}.missed-date{font-size:var(--font-size-md);font-weight:600;color:var(--color-warning)}.missed-cards{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--spacing-md);gap:var(--spacing-lg)}.missed-hint{display:flex;justify-content:space-between;width:100%;max-width:var(--card-max-width);padding:0 var(--spacing-sm)}.missed-hint-left,.missed-hint-right{font-size:var(--font-size-sm);color:var(--tg-theme-hint-color)}.missed-hint-left{color:var(--color-error)}.missed-hint-right{color:var(--color-success)}.missed-complete{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-lg);padding:var(--spacing-lg);text-align:center}.missed-complete-text{font-size:var(--font-size-lg);font-weight:600;color:var(--color-success)}.missed-progress{text-align:center;padding-bottom:var(--spacing-md)}.missed-progress-text{font-size:var(--font-size-sm);color:var(--tg-theme-hint-color);font-weight:500}:root{--tg-theme-bg-color: #ffffff;--tg-theme-text-color: #000000;--tg-theme-hint-color: #999999;--tg-theme-link-color: #2481cc;--tg-theme-button-color: #2481cc;--tg-theme-button-text-color: #ffffff;--tg-theme-secondary-bg-color: #f0f0f0;--color-success: #34c759;--color-error: #ff3b30;--color-warning: #ff9500;--card-bg: var(--tg-theme-secondary-bg-color);--card-border: rgba(0, 0, 0, .08);--card-shadow: rgba(0, 0, 0, .18);--card-done: #e8f5e9;--card-not-done: #ffebee;--card-max-width: 360px;--card-max-height: clamp(300px, 48vh, 420px);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-full: 9999px;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 24px;--font-size-xxl: 32px;--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .35s ease;--safe-area-top: env(safe-area-inset-top, 0px);--safe-area-bottom: env(safe-area-inset-bottom, 0px)}[data-theme=dark]{--card-bg: var(--tg-theme-secondary-bg-color);--card-border: rgba(255, 255, 255, .08);--card-shadow: rgba(0, 0, 0, .45);--card-done: #1b5e20;--card-not-done: #b71c1c}@keyframes swipeRight{0%{transform:translate(0) rotate(0);opacity:1}to{transform:translate(150%) rotate(20deg);opacity:0}}@keyframes swipeLeft{0%{transform:translate(0) rotate(0);opacity:1}to{transform:translate(-150%) rotate(-20deg);opacity:0}}@keyframes cardEnter{0%{transform:scale(.95) translateY(10px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes slideDown{0%{transform:translateY(0)}to{transform:translateY(100%)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes toast-enter{0%{transform:translateY(100%) scale(.9);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}@keyframes toast-exit{0%{transform:translateY(0) scale(1);opacity:1}to{transform:translateY(100%) scale(.9);opacity:0}}@keyframes achievement-enter{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}.animate-swipe-right{animation:swipeRight .3s ease-out forwards}.animate-swipe-left{animation:swipeLeft .3s ease-out forwards}.animate-card-enter{animation:cardEnter .3s ease-out}.animate-slide-up{animation:slideUp .3s ease-out}.animate-slide-down{animation:slideDown .3s ease-out}.animate-fade-in{animation:fadeIn .2s ease-out}.animate-fade-out{animation:fadeOut .2s ease-out}.animate-pulse{animation:pulse 1s ease-in-out infinite}.animate-toast-enter{animation:toast-enter .2s ease-out}.animate-toast-exit{animation:toast-exit .2s ease-out}.animate-achievement-enter{animation:achievement-enter .3s ease-out}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:var(--font-size-md);line-height:1.5;background-color:var(--tg-theme-bg-color);color:var(--tg-theme-text-color);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden;touch-action:manipulation;-webkit-tap-highlight-color:transparent}#root{height:100%;display:flex;flex-direction:column}.app{height:100%;display:flex;flex-direction:column;padding-top:var(--safe-area-top);padding-bottom:var(--safe-area-bottom)}.app-content{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative}.screen{flex:1;display:flex;flex-direction:column;padding:var(--spacing-md);overflow:hidden}h1{font-size:var(--font-size-xxl);font-weight:700;margin-bottom:var(--spacing-md)}h2{font-size:var(--font-size-xl);font-weight:600;margin-bottom:var(--spacing-sm)}h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-sm)}p{margin-bottom:var(--spacing-sm)}.text-hint{color:var(--tg-theme-hint-color);font-size:var(--font-size-sm)}.text-center{text-align:center}.text-success{color:var(--color-success)}.text-error{color:var(--color-error)}.flex{display:flex}.flex-col{flex-direction:column}.flex-center{display:flex;align-items:center;justify-content:center}.flex-1{flex:1}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.hide-scrollbar::-webkit-scrollbar{display:none}.loading-screen{display:flex;align-items:center;justify-content:center;height:100%}.loading-spinner{width:40px;height:40px;border:3px solid var(--tg-theme-secondary-bg-color);border-top-color:var(--tg-theme-button-color);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
