@tailwind base;@tailwind components;@tailwind utilities;:root{--viewport-height: 100vh;--keyboard-height: 0px;--viewport-offset-top: 0px;--viewport-offset-left: 0px}*{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;box-sizing:border-box}@media (max-width: 768px){input,select,textarea{font-size:16px!important;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0}input[type=checkbox]{-webkit-appearance:checkbox;-moz-appearance:checkbox;appearance:checkbox;border-radius:4px}input[type=text],input[type=email],input[type=password],input[type=number],input[type=tel],input[type=url],input[type=search],textarea{-webkit-user-select:text;-moz-user-select:text;user-select:text}.bottom-nav-btn{transition-duration:.1s!important}}html{width:100%;height:100%;overflow:hidden}body{width:100%;height:100%;padding:0;overflow:hidden}#root{max-width:480px;margin:0 auto;width:100%;height:100%;height:100vh;height:100dvh;position:relative}input,textarea,select{font-size:16px!important;-webkit-appearance:none;border-radius:0}input[type=checkbox]{-webkit-appearance:checkbox;-moz-appearance:checkbox;appearance:checkbox;border-radius:4px}button,a,[role=button]{min-height:44px;min-width:44px;-webkit-tap-highlight-color:transparent;tap-highlight-color:transparent;touch-action:manipulation;-ms-touch-action:manipulation;cursor:pointer}.app-main,.coach-viewport,.mypage,.feed{touch-action:auto!important}input:focus,textarea:focus{scroll-margin-bottom:100px;scroll-padding-bottom:100px}@supports (-webkit-touch-callout: none){input:focus,textarea:focus{scroll-margin-top:20px;scroll-margin-bottom:150px}}@supports (-webkit-touch-callout: none){input:focus,textarea:focus,select:focus{font-size:16px!important}}html[data-keyboard-visible=true]{overflow:hidden}html[data-keyboard-visible=true] body{position:fixed;width:100%;overflow:hidden}html[data-keyboard-visible=true] .app-main{max-height:var(--viewport-height)}html[data-keyboard-visible=true] .bottom-nav{opacity:.3;pointer-events:none}html[data-keyboard-visible=true] .checkin-bar{opacity:.5}.bottom-nav,.checkin-bar{transition:opacity .2s ease-out}@supports (-webkit-appearance: none){input,button,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none}input[type=checkbox]{-webkit-appearance:checkbox;-moz-appearance:checkbox;appearance:checkbox}}@media (hover: none) and (pointer: coarse){.nav-btn,.cta,.bottom-nav-btn,.google-login-btn,.kakao-login-btn{-webkit-tap-highlight-color:rgba(239,68,68,.1);tap-highlight-color:rgba(239,68,68,.1)}}@supports (-webkit-text-size-adjust: none){body{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}}input[type=search]{-webkit-appearance:none}@layer base{:root{--background: 0 0% 100%;--foreground: 0 0% 3.9%;--card: 0 0% 100%;--card-foreground: 0 0% 3.9%;--popover: 0 0% 100%;--popover-foreground: 0 0% 3.9%;--primary: 0 84% 60%;--primary-foreground: 0 0% 98%;--secondary: 0 0% 96%;--secondary-foreground: 0 0% 9%;--muted: 0 0% 96%;--muted-foreground: 0 0% 45%;--accent: 0 0% 96%;--accent-foreground: 0 0% 9%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 0 0% 98%;--success: 142 71% 45%;--success-foreground: 0 0% 98%;--warning: 45 93% 47%;--warning-foreground: 0 0% 0%;--border: 0 0% 90%;--input: 0 0% 90%;--ring: 0 84% 60%;--radius: .75rem;--glass-bg: rgba(255, 255, 255, .7);--glass-border: rgba(255, 255, 255, .4);--glass-shadow: 0 8px 32px rgba(0, 0, 0, .08);--glass-blur: 12px;--gradient-bg: #ffffff;--gradient-accent: linear-gradient(135deg, hsl(var(--primary)) 0%, hsl(0 84% 50%) 100%);--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .3s cubic-bezier(.4, 0, .2, 1);--transition-slow: .5s cubic-bezier(.4, 0, .2, 1);--bg: hsl(var(--background));--text: hsl(var(--foreground));--brand: hsl(var(--primary));--weekend: hsl(var(--muted-foreground));--space-1: 8px;--space-2: 12px;--space-3: 16px;--font-sm: 12px;--font-md: 14px;--font-lg: 20px}.dark{--background: 0 0% 6%;--foreground: 0 0% 98%;--card: 0 0% 10%;--card-foreground: 0 0% 98%;--popover: 0 0% 6%;--popover-foreground: 0 0% 98%;--primary: 0 84% 60%;--primary-foreground: 0 0% 98%;--secondary: 0 0% 15%;--secondary-foreground: 0 0% 98%;--muted: 0 0% 15%;--muted-foreground: 0 0% 65%;--accent: 0 0% 15%;--accent-foreground: 0 0% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 0 0% 98%;--success: 142 71% 45%;--success-foreground: 0 0% 98%;--warning: 45 93% 47%;--warning-foreground: 0 0% 0%;--border: 0 0% 18%;--input: 0 0% 18%;--ring: 0 84% 60%;--glass-bg: rgba(20, 20, 20, .75);--glass-border: rgba(255, 255, 255, .1);--glass-shadow: 0 8px 32px rgba(0, 0, 0, .3);--gradient-bg: hsl(var(--background));--bg: hsl(var(--background));--text: hsl(var(--foreground));--brand: hsl(var(--primary));--muted: hsl(0, 0%, 65%)}}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Helvetica Neue,Arial,Apple SD Gothic Neo,Noto Sans KR,sans-serif;background:var(--gradient-bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glass{background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);box-shadow:var(--glass-shadow)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}button,a,input,textarea{-webkit-tap-highlight-color:transparent}button{border-radius:9999px}.app-container{width:100%;height:100%;display:flex;flex-direction:column;position:relative;overflow:hidden}.app-header{flex-shrink:0;padding:var(--space-3) var(--space-3) 0;margin-bottom:0}.app-main{flex:1;min-height:0;padding:calc(var(--space-2) + env(safe-area-inset-top,0px)) var(--space-3) 70px;margin:0;overflow:auto;overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:auto;will-change:scroll-position}.app-main::-webkit-scrollbar{display:none}.app-main{-ms-overflow-style:none;scrollbar-width:none}.header-logo{font-size:24px;font-weight:800;color:var(--brand);text-align:center}.title-with-logo{display:flex;align-items:center;position:relative;margin-bottom:var(--space-2);margin-top:8px}.title-logo{flex-shrink:0;position:absolute;left:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.title-logo.is-clickable{cursor:pointer}.app-title{font-size:22px;margin:0;font-weight:700;text-align:center;width:100%}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-1);font-size:var(--font-sm);color:var(--muted);margin:var(--space-2) 0 0}.calendar-weekdays span{text-align:center}.calendar-nav{display:grid;grid-template-columns:32px 1fr 32px;align-items:center;gap:var(--space-1)}.calendar-label{text-align:center;font-weight:600}.nav-btn{height:34px;border:1px solid var(--glass-border);border-radius:17px;background:var(--glass-bg);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:hsl(var(--foreground));cursor:pointer;position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent;transition:all .2s ease}.nav-btn:hover{background:#0000000d}.dark .nav-btn:hover{background:#ffffff1a}.nav-btn:active{transform:scale(.95)}.nav-btn:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.nav-btn.is-active{background:linear-gradient(135deg,var(--brand) 0%,hsl(0 84% 50%) 100%);color:hsl(var(--primary-foreground));border-color:transparent;box-shadow:0 2px 8px #ef44444d}.nav-btn.has-brand-color{color:var(--brand)}.nav-btn:disabled{color:hsl(var(--muted-foreground));opacity:.6;cursor:default}.calendar{margin-bottom:12px}.calendar-wrapper{padding:14px;border-radius:16px;background:#fff;box-shadow:none;border:none}.dark .calendar-wrapper{background:hsl(var(--card))}.stats{margin:0 0 8px}.stats-unified{margin-bottom:12px}.stats-unified-card{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px;background:#fff;border-radius:16px;box-shadow:none;border:none;position:relative;overflow:hidden}.stats-unified-card:before{display:none}.dark .stats-unified-card{background:hsl(var(--card))}.dark .stats-unified-main-label{color:hsl(var(--muted-foreground))}.dark .stats-unified-main-value{color:hsl(var(--foreground))}.dark .stats-unified-main-value span{color:hsl(var(--muted-foreground))}.stats-unified-main{position:relative;z-index:1}.stats-unified-main-label{font-size:11px;font-weight:600;color:#666;letter-spacing:.02em;margin-bottom:2px}.stats-unified-main-value{font-family:SF Pro Display,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;font-size:32px;font-weight:800;letter-spacing:-.03em;line-height:1;color:#1a1a1a}.stats-unified-main-value span{font-size:14px;font-weight:500;color:#666;margin-left:2px}.stats-unified-bar{position:relative;z-index:1;flex:1;height:6px;background:#0000001a;border-radius:3px;overflow:hidden}.stats-unified-bar-fill{height:100%;background:linear-gradient(90deg,#ff6b6b,#feca57,#48dbfb);border-radius:3px;transition:width .8s cubic-bezier(.4,0,.2,1)}.attendance-heatmap-section{margin-bottom:12px;padding:14px;border-radius:16px;background:#fff;box-shadow:none;border:none}.dark .attendance-heatmap-section{background:hsl(var(--card))}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--space-1)}.day{aspect-ratio:1 / 1;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:var(--font-md);color:var(--text);background:var(--glass-bg);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border:1px solid transparent;position:relative;transition:all .15s ease}.day .date{transform:translateY(-5px);display:inline-block}.day.is-weekend{color:var(--weekend)}.day.is-outside{color:var(--muted);opacity:.6;pointer-events:none}.day:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.day[aria-disabled=true]{cursor:default}.day .marker{position:absolute;left:50%;bottom:6px;transform:translate(-50%);width:8px;height:8px;border-radius:50%;background:var(--brand)}.day.is-attended .marker{background:var(--brand)}.day.is-clickable{cursor:pointer}.day.is-clickable:hover{background:#ef444414;border-color:var(--glass-border);transform:scale(1.02)}.day.is-clickable:active{transform:scale(.98)}.dark .day{background:transparent;border-color:transparent}.dark .day.is-clickable:hover{background:#ef444426}@media (min-width: 420px){.app{padding:20px 20px 90px}.app-title{font-size:24px}}.app-footer{margin-top:var(--space-3)}.cta{width:300px;height:48px;border:none;border-radius:24px;background:linear-gradient(135deg,var(--brand) 0%,hsl(0 84% 50%) 100%);color:hsl(var(--primary-foreground));font-weight:700;font-size:15px;cursor:pointer;box-shadow:0 4px 15px #ef44444d;transition:all .2s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent;margin:0 auto}.cta:disabled{opacity:.6;cursor:default;box-shadow:none}.cta:hover{box-shadow:0 6px 20px #ef444466;transform:translateY(-2px)}.cta:active{transform:translateY(0) scale(.98)}.cta:after,.bottom-nav-btn:after,.nav-btn:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#00000014;opacity:0;transition:opacity .12s ease;border-radius:inherit;pointer-events:none}.cta:active:after,.bottom-nav-btn:active:after,.nav-btn:active:after{opacity:1}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182766;display:flex;align-items:flex-start;justify-content:center;padding-top:18vh;z-index:50;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:fadeIn .2s ease-out}.modal-card{width:min(360px,calc(100% - 32px));background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--glass-border);border-radius:20px;padding:28px 24px;box-shadow:0 20px 50px #00000026;animation:modal-in .3s cubic-bezier(.34,1.56,.64,1)}.dark .modal-card{box-shadow:0 20px 50px #0006}.modal-title{margin:6px 0 10px;font-size:20px;font-weight:700}.modal-desc{margin:0 0 16px;color:hsl(var(--muted-foreground));font-size:14px;line-height:1.5}@keyframes modal-in{0%{transform:translateY(20px) scale(.95);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.leaderboard{margin:12px 0 0;display:flex;flex-direction:column;height:100%}.year-progress{width:100%}.year-progress-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.year-progress-count{display:flex;align-items:baseline;gap:2px;font-size:18px;font-weight:700}.year-progress-current{color:var(--brand);font-size:24px}.year-progress-separator{color:var(--muted);margin:0 2px}.year-progress-goal{color:var(--muted);cursor:pointer;border-bottom:1px dashed var(--muted);transition:color .2s}.year-progress-goal:hover{color:var(--brand)}.year-progress-goal-input{width:60px;font-size:18px;font-weight:700;border:1px solid var(--brand);border-radius:4px;padding:2px 6px;text-align:center;background:hsl(var(--card));color:hsl(var(--foreground))}.year-progress-goal-input:focus{outline:none;box-shadow:0 0 0 2px #ef444433}.year-progress-unit{color:var(--muted);font-size:14px;margin-left:2px}.year-progress-percentage{font-size:14px;font-weight:600;color:var(--muted)}.year-progress-blocks{display:grid;grid-template-columns:repeat(20,1fr);gap:3px}.year-progress-block{aspect-ratio:1;background:hsl(var(--muted) / .3);border-radius:2px;transition:background .2s ease}.year-progress-block.is-filled{background:var(--brand)}.leaderboard-v2{display:flex;flex-direction:column;height:100%;margin-top:12px}.leaderboard-v2-hero{position:relative;padding:8px 16px;border-radius:20px;margin-bottom:12px}.leaderboard-v2-hero-bg{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:0;border-radius:20px;overflow:hidden;box-shadow:none;border:none}.leaderboard-v2-hero-bg:before{display:none}.leaderboard-v2-nav{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between}.leaderboard-v2-nav-btn{width:36px;height:36px;border-radius:10px;background:transparent;border:none;color:#1a1a1a;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.leaderboard-v2-nav-btn:hover:not(:disabled){background:#0000000d;transform:scale(1.05)}.leaderboard-v2-nav-btn:disabled{opacity:.3;cursor:not-allowed}.leaderboard-v2-title{display:flex;align-items:center;justify-content:center;background:transparent;border:none;cursor:pointer;padding:4px 12px;border-radius:8px;transition:background .2s ease}.leaderboard-v2-title:hover{background:#0000000d}.leaderboard-v2-label{font-size:18px;font-weight:700;color:#1a1a1a;font-family:SF Pro Display,-apple-system,BlinkMacSystemFont,sans-serif}.leaderboard-v2-content{flex:1;padding-bottom:80px}.leaderboard-v2-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.leaderboard-v2-list.transitioning{opacity:.5}.leaderboard-v2-item{background:#fff;border-radius:14px;overflow:hidden;animation:leaderboard-slide-in .4s ease forwards;opacity:0;transform:translateY(10px);box-shadow:none}.dark .leaderboard-v2-item{background:hsl(var(--card));box-shadow:none}.dark .leaderboard-v2-hero-bg{background:hsl(var(--card))}.dark .leaderboard-v2-nav-btn{color:hsl(var(--foreground))}.dark .leaderboard-v2-nav-btn:hover:not(:disabled){background:#ffffff1a;color:#fff}.dark .leaderboard-v2-label{color:hsl(var(--foreground))}.dark .leaderboard-v2-title:hover{background:#ffffff1a}@keyframes leaderboard-slide-in{to{opacity:1;transform:translateY(0)}}.leaderboard-v2-item.is-me{background:linear-gradient(135deg,hsl(var(--brand) / .08),#fff);box-shadow:0 0 0 2px var(--brand)}.dark .leaderboard-v2-item.is-me{background:linear-gradient(135deg,hsl(var(--brand) / .08),hsl(var(--card)));box-shadow:0 0 0 2px var(--brand)}.leaderboard-v2-item.is-paused{background:hsl(var(--warning) / .08);box-shadow:none}.leaderboard-v2-item.is-expanded{box-shadow:0 0 0 2px var(--brand)}.leaderboard-v2-item-main{display:grid;grid-template-columns:40px 40px 1fr auto 24px;align-items:center;gap:10px;padding:12px;cursor:pointer;transition:background .2s ease}.leaderboard-v2-item-main:hover{background:hsl(var(--muted) / .3)}.leaderboard-v2-item.is-paused .leaderboard-v2-item-main{grid-template-columns:40px 1fr 24px}.leaderboard-v2-rank{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;color:hsl(var(--muted-foreground));background:hsl(var(--muted) / .5)}.leaderboard-v2-avatar{width:40px;height:40px;border-radius:12px;overflow:hidden;background:hsl(var(--muted));flex-shrink:0}.leaderboard-v2-avatar img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.leaderboard-v2-info{display:flex;flex-direction:column;gap:2px;min-width:0}.leaderboard-v2-nick{font-size:15px;font-weight:700;color:hsl(var(--foreground));display:flex;align-items:center;gap:6px}.leaderboard-v2-paused-badge{font-size:10px;font-weight:600;padding:2px 6px;border-radius:4px;background:hsl(var(--warning) / .2);color:hsl(var(--warning))}.leaderboard-v2-breakdown{font-size:12px;color:hsl(var(--muted-foreground))}.leaderboard-v2-score{display:flex;align-items:baseline;gap:2px}.leaderboard-v2-score-value{font-size:20px;font-weight:800;color:var(--brand);font-family:SF Pro Display,-apple-system,BlinkMacSystemFont,sans-serif}.leaderboard-v2-score-unit{font-size:12px;font-weight:600;color:hsl(var(--muted-foreground))}.leaderboard-v2-expand-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center;color:hsl(var(--muted-foreground));transition:transform .2s ease}.leaderboard-v2-expand-icon.is-open{transform:rotate(180deg)}.leaderboard-v2-calendar{max-height:0;overflow:hidden;transition:max-height .3s ease,padding .3s ease;padding:0 12px}.leaderboard-v2-calendar.is-open{max-height:520px;padding:0 12px 12px}.leaderboard-v2-calendar .glass{box-shadow:none;border:none}.leaderboard-v2-divider{display:flex;align-items:center;justify-content:center;gap:12px;padding:16px 0;list-style:none}.leaderboard-v2-divider:before,.leaderboard-v2-divider:after{content:"";flex:1;height:1px;background:hsl(var(--border))}.leaderboard-v2-divider span{font-size:12px;font-weight:600;color:hsl(var(--muted-foreground));white-space:nowrap}@media (max-width: 380px){.leaderboard-v2-item-main{grid-template-columns:32px 36px 1fr auto 20px;gap:8px;padding:10px}.leaderboard-v2-rank{width:32px;height:32px;font-size:12px}.leaderboard-v2-avatar{width:36px;height:36px}.leaderboard-v2-nick{font-size:14px}.leaderboard-v2-score-value{font-size:18px}}.mypage{margin:12px 0 0;display:flex;flex-direction:column}@keyframes spin{to{transform:rotate(360deg)}}.all-menu{margin:12px 0 0}.all-list{display:flex;flex-direction:column;gap:4px;margin:0;padding:0;list-style:none}.all-list-item{border:1px solid var(--border);border-radius:12px;background:hsl(var(--card));transition:all .2s ease}.all-list-item:hover{border-color:var(--brand);box-shadow:0 2px 8px #0000001a}.all-item-button{width:100%;padding:var(--space-2);border:none;background:transparent;text-align:left;cursor:pointer;display:flex;align-items:center;gap:var(--space-2);transition:all .2s ease}.all-item-button:focus-visible{outline:2px solid var(--brand);outline-offset:-2px;border-radius:12px}.all-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:12px;background:var(--brand);color:hsl(var(--primary-foreground));flex-shrink:0}.all-content{flex:1;min-width:0}.all-arrow{display:flex;align-items:center;justify-content:center;color:hsl(var(--muted-foreground));flex-shrink:0;opacity:.6;transition:opacity .2s}.all-item-button:hover .all-arrow{opacity:1;color:hsl(var(--muted-foreground))}.all-title{font-size:var(--font-md);font-weight:700;color:var(--text);margin:0 0 4px;line-height:1.25}.all-description{font-size:var(--font-sm);color:hsl(var(--muted-foreground));margin:0;line-height:1.3}.login-content{text-align:center;padding:var(--space-3) 0;min-height:calc(100vh - 200px);display:flex;flex-direction:column;justify-content:center;align-items:center}.login-logo{margin-bottom:var(--space-2);transform:translateY(-5vh)}.VEAR-logo{display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}.VEAR-logo img{border-radius:0;box-shadow:none}.VEAR-text{font-size:18px;font-weight:800;color:var(--brand);letter-spacing:1px}.login-welcome-title{font-size:3.5rem;font-weight:900;color:var(--brand);margin:0 0 var(--space-3);line-height:1}.login-button-container{position:fixed;bottom:20px;left:0;right:0;display:flex;justify-content:center;width:100%;padding:0 20px;z-index:10;min-height:80px}@media (max-width: 360px){.login-button-container{padding:0 16px;bottom:30px}}@media (max-width: 320px){.login-button-container{padding:0 12px;bottom:25px}}.login-loading{display:flex;align-items:center;justify-content:center;height:44px;font-size:var(--font-md);color:var(--brand);font-weight:500}.google-login-btn{width:100%;height:56px;background:#ffffffe6;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.5);border-radius:16px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);font-family:inherit;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;box-shadow:0 4px 20px #00000014}.google-login-btn:hover{background:#fffffff2;transform:translateY(-2px);box-shadow:0 8px 30px #0000001f}.google-login-btn:active{transform:translateY(0) scale(.98)}.google-login-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.google-login-content{display:flex;align-items:center;justify-content:center;gap:12px;color:#3c4043;font-weight:600;font-size:15px}.google-logo{flex-shrink:0}.login-buttons-wrapper{display:flex;flex-direction:column;gap:14px;width:100%;max-width:300px;margin:0 auto}.kakao-login-btn{width:100%;height:56px;background:linear-gradient(135deg,#fee500,#ffeb00);border:none;border-radius:16px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);font-family:inherit;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;box-shadow:0 4px 20px #fee5004d}.kakao-login-btn:hover{transform:translateY(-2px);box-shadow:0 8px 30px #fee50066}.kakao-login-btn:active{transform:translateY(0) scale(.98)}.kakao-login-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.kakao-login-content{display:flex;align-items:center;justify-content:center;gap:10px;color:#191919;font-weight:600;font-size:15px}.kakao-logo{width:24px;height:24px;-o-object-fit:contain;object-fit:contain;display:block}.invite-form{width:100%}.invite-code-inputs{display:flex;gap:6px;justify-content:center;margin:24px 0 20px;width:100%}.invite-code-digit{width:44px;height:54px;border:2px solid var(--brand);border-radius:10px;font-size:40px;font-weight:600;text-align:center;text-transform:uppercase;transition:all .16s ease;background:hsl(var(--card));color:var(--text);flex:1;max-width:44px}.invite-code-digit:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px #ef44441a;transform:scale(1.05)}.invite-code-digit.error{border-color:#ef4444;background:#ef44440d}.invite-code-digit:disabled{opacity:.6;cursor:not-allowed}.invite-error{background:#ef44441a;color:#ef4444;padding:8px 12px;border-radius:8px;font-size:14px;text-align:center;margin-bottom:16px}.invite-buttons{display:grid;grid-template-columns:1fr 1fr;gap:10px}.invite-btn-cancel{height:36px;border:1px solid var(--border);border-radius:8px;background:transparent;color:var(--text);font-weight:600;cursor:pointer;transition:all .16s ease;font-size:13px}.invite-btn-cancel:hover{background:hsl(var(--muted))}.invite-btn-submit{height:36px;border:none;border-radius:8px;background:var(--brand);color:hsl(var(--primary-foreground));font-weight:600;cursor:pointer;transition:all .16s ease;font-size:13px}.invite-btn-submit:disabled{opacity:.5;cursor:not-allowed}.invite-btn-submit:hover:not(:disabled){background:#dc2626}@media (max-width: 360px){.modal-card{width:calc(100% - 24px);padding:24px 20px}.invite-code-inputs{gap:3px;margin:20px 0 16px}.invite-code-digit{width:38px;height:48px;font-size:36px;border-radius:8px;border-width:1.5px;max-width:38px}.invite-buttons{gap:6px}.invite-btn-cancel,.invite-btn-submit{height:32px;font-size:12px;border-radius:6px}}.bottom-nav{position:fixed;left:0;right:0;bottom:0;background:var(--glass-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-top:1px solid var(--glass-border);box-shadow:0 -4px 30px #0000000d;z-index:40;pointer-events:none}.dark .bottom-nav{box-shadow:0 -4px 30px #0003}.bottom-nav-inner{max-width:480px;margin:0 auto;padding:8px 16px;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;pointer-events:auto}.bottom-nav-btn{height:52px;border-radius:14px;background:transparent;border:none;font-weight:600;cursor:pointer;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:hsl(var(--muted-foreground));position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent}.bottom-nav-btn:hover{background:#00000008}.dark .bottom-nav-btn:hover{background:#ffffff0d}.bottom-nav-btn:active{transform:scale(.95)}.bottom-nav-btn.is-active{background:#ef44441a;color:#ef4444;border:none}.bottom-nav-icon{width:22px;height:22px;display:inline-flex;transition:transform .2s ease}.bottom-nav-btn.is-active .bottom-nav-icon{transform:scale(1.1)}.bottom-nav-icon svg{width:22px;height:22px;display:block}.bottom-nav-label{font-size:11px;line-height:1;font-weight:500}.coach-viewport{flex:1;border:1px solid transparent;border-radius:12px;background:transparent;padding:10px 10px 80px;overflow-y:auto;-webkit-overflow-scrolling:touch}html[data-keyboard-visible=true] .coach-viewport{padding-bottom:calc(80px + var(--keyboard-height));transition:padding-bottom .3s ease-out}.coach-viewport::-webkit-scrollbar{display:none}.coach-viewport{-ms-overflow-style:none;scrollbar-width:none;transition:padding-bottom .3s ease-out}.checkin-bar{position:fixed;left:0;right:0;bottom:72px;background:transparent;z-index:45;padding:6px 16px;display:grid;gap:10px;max-width:480px;margin:0 auto;pointer-events:none}.checkin-bar>*{pointer-events:auto}.feed{margin:12px 0 0}.feed-empty{color:var(--muted);text-align:center;padding:12px 0}.ig-feed-list{list-style:none;padding:0 0 20px;margin:0;display:grid;gap:20px}.ig-post{border:1px solid var(--glass-border);border-radius:18px;background:var(--glass-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);overflow:hidden;box-shadow:var(--glass-shadow);transition:all .3s ease}.ig-post:hover{transform:translateY(-2px);box-shadow:0 12px 40px #0000001f}.dark .ig-post:hover{box-shadow:0 12px 40px #0000004d}.ig-post-header{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:12px;padding:12px 16px}.ig-avatar{width:36px;height:36px;border-radius:18px;display:inline-flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;color:hsl(var(--foreground));box-shadow:0 0 0 1px #0000000d;overflow:hidden;flex-shrink:0}.ig-avatar img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.ig-username{font-weight:700;font-size:15px;color:hsl(var(--foreground))}.ig-options{border:none;background:transparent;color:hsl(var(--muted-foreground));font-size:20px;padding:4px 8px;cursor:pointer;border-radius:8px;transition:background .2s}.ig-options:hover{background:hsl(var(--muted) / .1)}.ig-post-menu{position:absolute;top:100%;right:0;margin-top:4px;background:hsl(var(--background));border:1px solid hsl(var(--border));border-radius:12px;box-shadow:0 4px 12px #0000001a;min-width:120px;overflow:hidden;z-index:10}.ig-post-menu-item{width:100%;padding:12px 16px;border:none;background:none;text-align:left;font-size:14px;color:hsl(var(--foreground));cursor:pointer;transition:background .2s}.ig-post-menu-item:hover{background:hsl(var(--muted) / .1)}.ig-post-menu-item.is-danger{color:hsl(var(--destructive));font-weight:600}.ig-post-menu-item.is-danger:hover{background:hsl(var(--destructive) / .1)}.ig-post-image-container{position:relative;background:hsl(var(--muted) / .05)}.ig-post-image img{display:block;width:100%;height:auto;max-height:600px;-o-object-fit:contain;object-fit:contain}.ig-slider-btn{position:absolute;top:50%;transform:translateY(-50%);width:36px;height:36px;border-radius:18px;background:#fffffff2;color:hsl(var(--foreground));border:none;box-shadow:0 2px 8px #00000026;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;z-index:2;-webkit-tap-highlight-color:transparent}.ig-slider-btn:hover{background:#fff;transform:translateY(-50%) scale(1.1);box-shadow:0 4px 12px #0003}.ig-slider-prev{left:12px}.ig-slider-next{right:12px}.ig-slider-indicators{position:absolute;bottom:16px;left:50%;transform:translate(-50%);display:flex;gap:6px;z-index:2;padding:6px 10px;border-radius:12px;background:#0000004d;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.ig-slider-dot{width:6px;height:6px;border-radius:3px;background:#fff9;transition:all .3s cubic-bezier(.4,0,.2,1)}.ig-slider-dot.is-active{background:#fff;width:20px}.ig-post-actions{display:flex;align-items:center;gap:4px;padding:8px 12px}.ig-action{width:40px;height:40px;border-radius:20px;border:none;background:transparent;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:hsl(var(--foreground));position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent;transition:all .2s}.ig-action:hover{background:hsl(var(--muted) / .1)}.ig-action.is-active{color:#ef4444;animation:like-bounce .4s cubic-bezier(.4,0,.2,1)}@keyframes like-bounce{0%,to{transform:scale(1)}50%{transform:scale(1.2)}}.ig-post-likes{padding:0 16px 8px;font-size:14px;font-weight:700;color:hsl(var(--foreground))}.ig-post-caption{padding:0 16px 8px;font-size:14px;line-height:1.5;color:hsl(var(--foreground))}.ig-post-caption .ig-username{margin-right:6px;font-weight:700}.ig-post-time{padding:0 16px 16px;font-size:12px;color:hsl(var(--muted-foreground));letter-spacing:.2px}.ig-expire{color:hsl(var(--muted-foreground));opacity:.8}.feed-floating-upload-btn{position:fixed;bottom:61px;left:50%;transform:translate(-50%);width:48px;height:48px;border-radius:24px;background:hsl(var(--primary));color:hsl(var(--primary-foreground));border:none;box-shadow:0 4px 12px #00000026,0 2px 4px #0000001a;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:100;transition:all .2s cubic-bezier(.4,0,.2,1);-webkit-tap-highlight-color:transparent}.feed-floating-upload-btn:hover:not(:disabled){transform:translate(-50%) scale(1.05);box-shadow:0 6px 16px #0003,0 3px 6px #00000026}.feed-floating-upload-btn:active:not(:disabled){transform:translate(-50%) scale(.95)}.feed-floating-upload-btn:disabled{opacity:.6;cursor:not-allowed;transform:translate(-50%) scale(1)}@media (max-width: 640px){.feed-floating-upload-btn{width:44px;height:44px;bottom:59px}}.ig-upload{display:flex;flex-direction:column;min-height:100vh;background:hsl(var(--background))}.ig-upload-header{position:-webkit-sticky;position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;height:44px;padding:0 16px;background:hsl(var(--card));border-bottom:1px solid var(--border)}.ig-upload-back{width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:hsl(var(--foreground));cursor:pointer;-webkit-tap-highlight-color:transparent;transition:opacity .2s}.ig-upload-back:hover:not(:disabled){opacity:.7}.ig-upload-back:disabled{opacity:.3;cursor:not-allowed}.ig-upload-title{font-size:16px;font-weight:600;color:hsl(var(--foreground));margin:0}.ig-upload-body{flex:1;display:flex;flex-direction:column;overflow-y:auto}.ig-upload-empty{flex:1;display:flex;align-items:center;justify-content:center;padding:40px 20px}.ig-upload-select-btn{display:flex;flex-direction:column;align-items:center;gap:20px;padding:40px;background:none;border:none;cursor:pointer;color:hsl(var(--foreground));-webkit-tap-highlight-color:transparent;transition:opacity .2s}.ig-upload-select-btn:hover:not(:disabled){opacity:.7}.ig-upload-select-btn:disabled{opacity:.5;cursor:not-allowed}.ig-upload-select-text{font-size:20px;font-weight:300;color:hsl(var(--foreground))}.ig-upload-select-sub{font-size:14px;color:hsl(var(--muted-foreground))}.ig-upload-content{flex:1;display:flex;flex-direction:column}.ig-upload-carousel{flex-shrink:0;background:#000}.ig-upload-carousel-inner{position:relative;width:100%;max-width:600px;margin:0 auto;aspect-ratio:1}.ig-upload-carousel-inner img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;display:block}.ig-carousel-nav{position:absolute;top:50%;transform:translateY(-50%);width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#ffffffe6;border:none;border-radius:50%;color:#000;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all .2s;z-index:10}.ig-carousel-nav:hover:not(:disabled){background:#fff;transform:translateY(-50%) scale(1.1)}.ig-carousel-nav:active:not(:disabled){transform:translateY(-50%) scale(.95)}.ig-carousel-nav:disabled{opacity:.3;cursor:not-allowed}.ig-carousel-prev{left:12px}.ig-carousel-next{right:12px}.ig-carousel-indicators{position:absolute;bottom:12px;left:50%;transform:translate(-50%);display:flex;gap:6px;z-index:10}.ig-carousel-dot{width:6px;height:6px;border-radius:50%;background:#ffffff80;transition:all .2s}.ig-carousel-dot.is-active{background:#fff}.ig-upload-thumbnails{display:flex;gap:8px;padding:12px 16px;overflow-x:auto;background:hsl(var(--card));border-bottom:1px solid var(--border)}.ig-thumbnail-wrapper{position:relative;flex-shrink:0}.ig-thumbnail{width:64px;height:64px;padding:0;background:hsl(var(--muted) / .1);border:2px solid transparent;border-radius:4px;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all .2s}.ig-thumbnail img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.ig-thumbnail.is-active{border-color:hsl(var(--primary))}.ig-thumbnail:hover:not(:disabled){opacity:.7}.ig-thumbnail:disabled{opacity:.5;cursor:not-allowed}.ig-thumbnail-remove{position:absolute;top:-6px;right:-6px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:hsl(var(--destructive));border:2px solid hsl(var(--card));border-radius:50%;color:hsl(var(--destructive-foreground));cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all .2s;z-index:1}.ig-thumbnail-remove:hover:not(:disabled){transform:scale(1.1)}.ig-thumbnail-remove:active:not(:disabled){transform:scale(.95)}.ig-thumbnail-remove:disabled{opacity:.5;cursor:not-allowed}.ig-thumbnail-add{flex-shrink:0;width:64px;height:64px;display:flex;align-items:center;justify-content:center;background:hsl(var(--muted) / .1);border:2px dashed var(--border);border-radius:4px;color:hsl(var(--muted-foreground));cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all .2s}.ig-thumbnail-add:hover:not(:disabled){border-color:hsl(var(--primary));color:hsl(var(--primary))}.ig-thumbnail-add:disabled{opacity:.5;cursor:not-allowed}.ig-upload-single-actions{display:flex;gap:12px;padding:12px 16px;background:hsl(var(--card));border-bottom:1px solid var(--border)}.ig-upload-single-remove,.ig-upload-single-add{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;background:hsl(var(--muted) / .1);border:1px solid var(--border);border-radius:8px;font-size:14px;font-weight:500;color:hsl(var(--foreground));cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all .2s}.ig-upload-single-remove:hover:not(:disabled),.ig-upload-single-add:hover:not(:disabled){background:hsl(var(--muted) / .2)}.ig-upload-single-remove:disabled,.ig-upload-single-add:disabled{opacity:.5;cursor:not-allowed}.ig-upload-details{flex:1;padding:16px;background:hsl(var(--card))}.ig-details-caption{display:flex;gap:12px;align-items:flex-start}.ig-details-input-wrapper{flex:1;display:flex;flex-direction:column;gap:4px}.ig-details-input{width:100%;padding:0;background:none;border:none;font-size:14px;font-family:inherit;color:hsl(var(--foreground));resize:none;line-height:1.5}.ig-details-input:focus{outline:none}.ig-details-input::-moz-placeholder{color:hsl(var(--muted-foreground))}.ig-details-input::placeholder{color:hsl(var(--muted-foreground))}.ig-details-input:disabled{opacity:.5;cursor:not-allowed}.ig-details-count{text-align:right;font-size:12px;color:hsl(var(--muted-foreground))}.ig-upload-error{display:flex;align-items:center;gap:8px;padding:12px 16px;margin:12px 16px;background:hsl(var(--destructive) / .1);border:1px solid hsl(var(--destructive) / .2);border-radius:8px;color:hsl(var(--destructive));font-size:14px}.ig-upload-processing{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 32px;background:hsl(var(--card));border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 40px #0000001a;z-index:1000}.ig-spinner{width:40px;height:40px;border:3px solid hsl(var(--muted) / .2);border-top-color:hsl(var(--primary));border-radius:50%;animation:ig-spin .8s linear infinite}@keyframes ig-spin{to{transform:rotate(360deg)}}.ig-upload-processing span{font-size:14px;font-weight:500;color:hsl(var(--foreground))}.ig-upload-footer{position:fixed;bottom:49px;left:0;right:0;padding:12px 16px;background:transparent;display:flex;justify-content:center;z-index:50;pointer-events:none}.ig-upload-share-btn{width:auto;min-width:120px;padding:14px 40px;background:hsl(var(--primary));color:#fff;border:none;border-radius:50px;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s;-webkit-tap-highlight-color:transparent;pointer-events:auto;box-shadow:0 4px 12px #00000026}.ig-upload-share-btn:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.ig-upload-share-btn:active:not(:disabled){transform:translateY(0)}.ig-upload-share-btn:disabled{opacity:.5;cursor:not-allowed}@media (min-width: 768px){.ig-upload{max-width:768px;margin:0 auto;border-left:1px solid var(--border);border-right:1px solid var(--border)}}@media (max-width: 340px){.app{padding:12px 10px 70px}.calendar-weekdays{gap:6px;font-size:10px}.calendar-grid{gap:6px}.day{font-size:12px;min-height:28px}.bottom-nav-label{font-size:11px}}[data-chart]{min-height:60px;min-width:0;width:100%}[data-chart] svg,[data-chart] canvas{display:block;max-width:100%;max-height:100%}.app-main{transition:opacity .15s ease-in-out;opacity:1}.app-main.tab-transitioning{opacity:0}.app-main.tab-transitioning .title-with-logo,.app-main.tab-transitioning .app-title,.app-main.tab-transitioning .title-logo,.app-main.tab-transitioning .title-logo img,.app-main.tab-transitioning .calendar-nav,.app-main.tab-transitioning .nav-btn,.app-main.tab-transitioning .calendar-label{opacity:1!important;transition:none!important}.title-with-logo,.app-title,.title-logo,.title-logo img,.calendar-nav,.nav-btn,.calendar-label{transition:none!important;animation:none!important;transform:none!important}.nav-btn:hover,.nav-btn:active,.nav-btn:focus{transition:none!important;animation:none!important;transform:none!important}.nav-btn:after{display:none!important}.bottom-nav-btn{transition:all .15s ease-out!important}.bottom-nav-btn.active{transform:translateY(-2px);transition:all .2s cubic-bezier(.34,1.56,.64,1)!important}.oauth-callback{display:flex;justify-content:center;align-items:center;min-height:100vh;background:var(--bg-color);color:var(--text-color)}.oauth-callback-content{text-align:center;padding:2rem}.oauth-callback-content .loading-spinner{width:32px;height:32px;margin:0 auto 1rem;border:3px solid rgba(0,123,255,.2);border-left-color:var(--brand);border-radius:50%;animation:spin 1s linear infinite}.oauth-callback-content p{font-size:1.1rem;margin:1rem 0}.retry-button{background:var(--brand);color:#fff;border:none;padding:.75rem 1.5rem;border-radius:8px;font-size:1rem;cursor:pointer;margin-top:1rem;transition:all .2s ease}.retry-button:hover{background:var(--brand-hover);transform:translateY(-1px)}.spinner{display:inline-block;width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-radius:50%;border-top-color:#fff;animation:spin .8s linear infinite;vertical-align:middle;margin-right:8px}.adduser{padding:1rem;max-width:600px;margin:0 auto}.adduser-content{background:var(--surface);border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px #0000001a}.adduser-title{font-size:1.5rem;font-weight:700;margin-bottom:1.5rem;color:var(--text)}.adduser-form{display:flex;flex-direction:column;gap:1rem}.adduser-field{display:flex;flex-direction:column;gap:.5rem}.adduser-label{font-weight:600;font-size:.9rem;color:var(--text)}.adduser-input{padding:.75rem;border:1px solid var(--border);border-radius:8px;font-size:1rem;background:var(--bg);color:var(--text)}.adduser-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px #3b82f61a}.adduser-error{padding:.75rem;background:#fee;color:#c00;border-radius:8px;font-size:.9rem}.adduser-submit-btn{padding:.75rem 1.5rem;background:var(--brand);color:#fff;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s;display:flex;align-items:center;justify-content:center;gap:.5rem}.adduser-submit-btn:hover:not(:disabled){background:var(--brand-hover)}.adduser-submit-btn:disabled{opacity:.6;cursor:not-allowed}.adduser-success{display:flex;flex-direction:column;gap:1.5rem}.adduser-success-title{font-size:1.5rem;font-weight:700;color:var(--brand);text-align:center}.adduser-info{display:flex;flex-direction:column;gap:1rem;padding:1rem;background:var(--bg);border-radius:8px}.adduser-info-item{display:flex;justify-content:space-between;align-items:center}.adduser-info-label{font-weight:600;color:var(--text-secondary)}.adduser-info-value{font-weight:700;color:var(--text);font-size:1.1rem}.adduser-message-container{display:flex;flex-direction:column;gap:.5rem}.adduser-message-title{font-weight:600;font-size:.9rem;color:var(--text-secondary)}.adduser-message{padding:1rem;background:var(--bg);border:1px solid var(--border);border-radius:8px;white-space:pre-wrap;font-size:.9rem;line-height:1.6;color:var(--text);overflow-x:auto}.adduser-actions{display:flex;flex-direction:column;gap:.75rem}.adduser-copy-btn,.adduser-reset-btn{padding:.75rem 1.5rem;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s}.adduser-copy-btn{background:var(--brand);color:#fff}.adduser-copy-btn:hover{background:var(--brand-hover)}.adduser-reset-btn{background:var(--surface);color:var(--text);border:1px solid var(--border)}.adduser-reset-btn:hover{background:var(--bg)}.admin{margin:12px 0 0;display:flex;flex-direction:column}.admin-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.admin-section-title{margin:0;font-size:16px;font-weight:700;color:hsl(var(--foreground))}.admin-add-btn{width:36px;height:36px;border-radius:50%;background:var(--brand);color:#fff;border:none;font-size:20px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.admin-add-btn:hover{opacity:.9;transform:scale(1.05)}.admin-table{border:1px solid var(--border);border-radius:12px;overflow:hidden;background:hsl(var(--card))}.admin-table-header{display:grid;grid-template-columns:1fr 1fr 3fr;background:hsl(var(--muted));border-bottom:2px solid var(--border)}.admin-table-header .admin-table-cell{font-weight:800;font-size:14px;color:var(--text);padding:12px var(--space-2);text-align:left}.admin-table-body{display:flex;flex-direction:column}.admin-table-row{display:grid;grid-template-columns:1fr 1fr 3fr;border-bottom:1px solid var(--border);transition:background-color .15s ease;cursor:pointer}.admin-table-row:last-child{border-bottom:none}.admin-table-row:hover{background:hsl(var(--muted))!important}.admin-table-row.striped{background:#00000005}.dark .admin-table-row.striped{background:#ffffff05}.admin-table-cell{padding:12px var(--space-2);font-size:14px;color:var(--text);display:flex;align-items:center}.admin-table-nickname{font-weight:700;color:var(--text)}.admin-table-notes{color:hsl(var(--muted-foreground));font-size:13px}.admin-table-status{justify-content:center}.admin-status-badge{display:inline-flex;align-items:center;padding:4px 12px;border-radius:12px;font-size:12px;font-weight:600;line-height:1;white-space:nowrap}.admin-status-badge.active{background:#dcfce7;color:#166534}.dark .admin-status-badge.active{background:#14532d;color:#86efac}.admin-status-badge.paused{background:#fef3c7;color:#92400e}.dark .admin-status-badge.paused{background:#78350f;color:#fde047}.admin-error,.admin-empty{text-align:center;padding:40px 20px;color:hsl(var(--muted-foreground));font-size:var(--font-md)}.admin-error{color:#ef4444}.admin-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182780;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.admin-modal-content{background:hsl(var(--card));border-radius:12px;width:min(400px,calc(100% - 32px));max-height:80vh;overflow-y:auto;box-shadow:0 10px 30px #0003;animation:modal-in .22s cubic-bezier(.22,.61,.36,1)}.admin-modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px;border-bottom:1px solid var(--border)}.admin-modal-title{font-size:18px;font-weight:800;color:var(--text);margin:0}.admin-modal-close{width:32px;height:32px;border:none;background:transparent;color:hsl(var(--muted-foreground));font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:6px;transition:all .2s}.admin-modal-close:hover{background:hsl(var(--muted));color:var(--text)}.admin-modal-body{padding:20px;display:flex;flex-direction:column;gap:16px}.admin-modal-field{display:flex;flex-direction:column;gap:6px}.admin-modal-label{font-size:12px;font-weight:600;color:hsl(var(--muted-foreground));text-transform:uppercase;letter-spacing:.05em}.admin-modal-value{font-size:15px;color:var(--text);font-weight:500}.admin-modal-code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-weight:600;color:var(--brand)}.admin-modal-select{width:100%;padding:10px 36px 10px 12px;border:1px solid var(--border);border-radius:8px;font-size:14px;font-family:inherit;color:var(--text);background:hsl(var(--background));cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 9L1 4h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.admin-modal-select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px #ef44441a}.admin-modal-textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:14px;font-family:inherit;color:var(--text);background:hsl(var(--background));resize:vertical;min-height:60px;line-height:1.5}.admin-modal-textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px #ef44441a}.admin-modal-footer{padding:20px;border-top:1px solid var(--border);display:flex;gap:12px}.admin-modal-save-btn{flex:1;padding:12px;background:var(--brand);color:#fff;border:none;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s}.admin-modal-save-btn:hover{background:#dc2626;transform:translateY(-1px);box-shadow:0 4px 12px #ef44444d}.admin-modal-save-btn:active{transform:translateY(0)}.admin-modal-delete-btn{flex:1;padding:12px;background:transparent;color:#ef4444;border:1px solid #ef4444;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s}.admin-modal-delete-btn:hover{background:#ef4444;color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px #ef44444d}.admin-modal-delete-btn:active{transform:translateY(0)}.admin-modal-input{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;font-size:15px;color:var(--text);background:hsl(var(--background))}.admin-modal-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px #ef44441a}.admin-modal-error{padding:10px 12px;background:#ef44441a;color:#ef4444;border-radius:8px;font-size:14px;text-align:center}.admin-modal-cancel-btn{flex:1;padding:12px;background:transparent;color:var(--text);border:1px solid var(--border);border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s}.admin-modal-cancel-btn:hover{background:hsl(var(--muted))}.mp{padding:20px 16px 120px}.mp-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px}.mp-profile{display:flex;align-items:center;gap:14px}.mp-avatar{width:56px;height:56px;min-width:56px;min-height:56px;aspect-ratio:1;border-radius:50%;background:#888;border:none;padding:0;cursor:pointer;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative;-webkit-tap-highlight-color:transparent;flex-shrink:0}.mp-avatar:has(img){background:transparent}.mp-avatar:hover{opacity:.9}.mp-avatar:active{opacity:.8}.mp-avatar img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;display:block}.mp-avatar span{font-size:18px;font-weight:600;color:#fff}.mp-avatar-loading{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;border-radius:50%}.mp-spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:mp-spin .7s linear infinite}.mp-user{display:flex;flex-direction:column;gap:2px}.mp-nickname{font-size:18px;font-weight:600;color:hsl(var(--foreground));margin:0;line-height:1.3}.mp-name{font-size:13px;color:var(--muted);margin:0}.mp-settings{width:40px;height:40px;border-radius:50%;background:transparent;border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--muted);transition:background .2s,color .2s;-webkit-tap-highlight-color:transparent}.mp-settings:hover{background:hsl(var(--muted) / .1);color:hsl(var(--foreground))}.mp-settings svg{width:22px;height:22px}.mp-content{display:flex;flex-direction:column;gap:20px}.mp-stats{display:flex;align-items:center;justify-content:space-around;background:hsl(var(--card));border:1px solid var(--border);border-radius:16px;padding:20px 16px}.mp-stat{display:flex;flex-direction:column;align-items:center;gap:4px;flex:1}.mp-stat-value{font-size:24px;font-weight:700;color:hsl(var(--foreground));line-height:1}.mp-stat-label{font-size:12px;color:var(--muted);font-weight:500}.mp-stat-divider{width:1px;height:32px;background:var(--border)}.mp-section{background:hsl(var(--card));border:1px solid var(--border);border-radius:16px;padding:18px}.mp-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.mp-section-title{font-size:15px;font-weight:600;color:hsl(var(--foreground));margin:0}.mp-section-badge{font-size:13px;font-weight:600;color:hsl(var(--primary));background:hsl(var(--primary) / .1);padding:4px 10px;border-radius:8px}.mp-empty{text-align:center;padding:60px 20px;color:var(--muted);font-size:14px}@keyframes mp-spin{to{transform:rotate(360deg)}}.settings{display:flex;flex-direction:column;gap:12px}.settings-card{border:1px solid var(--border);border-radius:12px;padding:14px;background:hsl(var(--card))}.settings-card-label{font-size:12px;font-weight:600;color:var(--muted);margin-bottom:10px}.settings-theme-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.settings-theme-btn{display:flex;align-items:center;justify-content:center;padding:10px 12px;background:hsl(var(--muted) / .1);border:1px solid transparent;border-radius:8px;font-size:14px;font-weight:500;color:hsl(var(--foreground));cursor:pointer;transition:all .2s;-webkit-tap-highlight-color:transparent}.settings-theme-btn:hover:not(.is-active){background:hsl(var(--muted) / .15)}.settings-theme-btn:active{transform:scale(.97)}.settings-theme-btn.is-active{background:var(--brand);color:#fff;border-color:var(--brand)}.settings-info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.settings-info-item{display:flex;flex-direction:column;gap:4px;padding:10px;background:hsl(var(--muted) / .05);border-radius:8px}.settings-info-label{font-size:12px;color:var(--muted)}.settings-info-value{font-size:14px;font-weight:600;color:hsl(var(--foreground))}.settings-logout-btn{width:100%;padding:14px;border:1px solid var(--border);border-radius:12px;background:hsl(var(--card));color:#ef4444;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s;-webkit-tap-highlight-color:transparent}.settings-logout-btn:hover{background:hsl(var(--muted) / .05)}.settings-logout-btn:active{transform:scale(.98)}.title-back-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;position:absolute;left:0;background:none;border:none;color:hsl(var(--foreground));cursor:pointer;border-radius:50%;transition:all .2s;-webkit-tap-highlight-color:transparent}.title-back-btn:hover{background:hsl(var(--muted) / .1)}.title-back-btn:active{transform:scale(.95)}:root{--space-0: 0px;--space-0-5: 4px;--space-1: 8px;--space-1-5: 10px;--space-2: 12px;--space-3: 16px;--space-4: 20px;--space-5: 24px;--space-6: 32px;--space-8: 40px;--space-10: 48px;--space-12: 56px;--space-16: 64px;--font-xs: 11px;--font-sm: 12px;--font-base: 14px;--font-md: 15px;--font-lg: 16px;--font-xl: 18px;--font-2xl: 20px;--font-3xl: 24px;--font-4xl: 32px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.75}:root{--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-base: 0 1px 3px rgba(0, 0, 0, .1), 0 1px 2px rgba(0, 0, 0, .06);--shadow-md: 0 4px 6px rgba(0, 0, 0, .1), 0 2px 4px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1), 0 4px 6px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px rgba(0, 0, 0, .15), 0 10px 10px rgba(0, 0, 0, .04);--shadow-2xl: 0 25px 50px rgba(0, 0, 0, .25);--radius-sm: 4px;--radius-base: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-2xl: 24px;--radius-full: 9999px}.dark{--shadow-sm: 0 1px 2px rgba(0, 0, 0, .2);--shadow-base: 0 1px 3px rgba(0, 0, 0, .3), 0 1px 2px rgba(0, 0, 0, .2);--shadow-md: 0 4px 6px rgba(0, 0, 0, .3), 0 2px 4px rgba(0, 0, 0, .2);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .4), 0 4px 6px rgba(0, 0, 0, .2);--shadow-xl: 0 20px 25px rgba(0, 0, 0, .5), 0 10px 10px rgba(0, 0, 0, .2);--shadow-2xl: 0 25px 50px rgba(0, 0, 0, .6);--background: 0 0% 8%;--card: 0 0% 12%;--border: 0 0% 20%;--muted: 0 0% 20%;--accent: 0 0% 20%}:root{--transition-fast: .15s;--transition-base: .2s;--transition-slow: .3s;--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-spring: cubic-bezier(.68, -.55, .265, 1.55);--z-base: 0;--z-dropdown: 10;--z-sticky: 20;--z-fixed: 30;--z-modal-backdrop: 40;--z-modal: 50;--z-popover: 60;--z-tooltip: 70;--z-notification: 80;--z-max: 100}.demo-banner{position:fixed;top:0;left:50%;transform:translate(-50%);z-index:1000;display:flex;justify-content:center;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);background:linear-gradient(135deg,var(--brand) 0%,hsl(var(--brand-hue, 200),70%,45%) 100%);color:#fff;font-size:var(--font-sm);font-weight:500;box-shadow:0 2px 8px #00000026;border-radius:0 0 var(--radius-lg) var(--radius-lg);max-width:480px;width:100%}.demo-banner span{display:flex;align-items:center;gap:var(--space-2)}.demo-exit-btn{padding:var(--space-1) var(--space-3);background:#fff;color:var(--brand);border:none;border-radius:999px;font-size:var(--font-xs);font-weight:600;cursor:pointer;transition:transform .15s,box-shadow .15s}.demo-exit-btn:hover{transform:scale(1.05);box-shadow:0 2px 8px #0003}.demo-exit-btn:active{transform:scale(.98)}.demo-checkin-bar{flex-direction:column;gap:var(--space-2)}.demo-checkin-hint{margin:0;font-size:var(--font-xs);color:var(--text-muted);text-align:center}.demo-mypage{display:flex;flex-direction:column;gap:var(--space-6);padding:var(--space-4)}.demo-profile-card{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-4);background:hsl(var(--card));border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.demo-profile-image{width:64px;height:64px;border-radius:50%;-o-object-fit:cover;object-fit:cover;background:hsl(var(--muted))}.demo-profile-info h2{margin:0 0 var(--space-1);font-size:var(--font-lg);font-weight:600;color:var(--text)}.demo-profile-info p{margin:0;font-size:var(--font-sm);color:hsl(var(--muted-foreground))}.demo-notice{display:flex;flex-direction:column;align-items:center;gap:var(--space-4);padding:var(--space-6);background:hsl(var(--muted));border-radius:var(--radius-lg);text-align:center}.demo-notice p{margin:0;font-size:var(--font-md);color:var(--text);line-height:1.6}.demo-cta-btn{padding:var(--space-3) var(--space-6);background:var(--brand);color:#fff;border:none;border-radius:var(--radius-full);font-size:var(--font-md);font-weight:600;cursor:pointer;transition:transform .15s,box-shadow .15s}.demo-cta-btn:hover{transform:scale(1.02);box-shadow:0 4px 12px #00000026}.demo-cta-btn:active{transform:scale(.98)}.dark .demo-banner{background:linear-gradient(135deg,var(--brand) 0%,hsl(var(--brand-hue, 200),60%,35%) 100%)}.dark .demo-exit-btn{background:#fffffff2}.dark .demo-profile-card,.dark .demo-notice{background:hsl(var(--card));border:1px solid hsl(var(--border))}
