@import"https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.css";:root{--bg: #FBF9F4;--bg2: #F2EEE1;--surface: #ffffff;--border: #EAE3D2;--accent: #4B6B3A;--accent2: #7A9A66;--highlight: #E8825A;--text: #2E3624;--muted: #9B9784;--danger: #c0392b;--success: #27ae60;--shadow: 0 4px 20px rgba(46,54,36,.07)}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:Pretendard,-apple-system,BlinkMacSystemFont,Noto Sans KR,sans-serif;font-weight:400;min-height:100vh}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:24px}.auth-box{background:var(--surface);border:1px solid var(--border);border-radius:24px;padding:48px 40px;width:100%;max-width:400px;box-shadow:var(--shadow)}.auth-logo{text-align:center;margin-bottom:36px}.auth-logo h1{font-size:26px;font-weight:700;color:var(--accent);letter-spacing:-.01em}.auth-logo p{font-size:13px;color:var(--muted);margin-top:6px;letter-spacing:.02em}.form-group{margin-bottom:18px}.form-group label{display:block;font-size:12px;font-weight:500;color:var(--muted);letter-spacing:.02em;margin-bottom:7px}.form-group input,.form-group textarea,.form-group select{width:100%;padding:12px 14px;background:var(--bg2);border:1px solid transparent;border-radius:12px;font-family:inherit;font-size:14px;font-weight:400;color:var(--text);outline:none;transition:border-color .2s,background .2s}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{background:var(--surface);border-color:var(--accent2)}.form-group textarea{min-height:100px;resize:vertical}.btn{width:100%;padding:13px;border:none;border-radius:14px;font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s;letter-spacing:-.005em}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:#3d5a2e;transform:translateY(-1px)}.btn-primary:disabled{background:var(--muted);cursor:not-allowed;transform:none}.btn-secondary{background:var(--bg2);color:var(--accent);border:1px solid transparent;margin-top:10px}.btn-secondary:hover{background:var(--border)}.btn-sm{width:auto;padding:8px 18px;font-size:13px}.auth-footer{text-align:center;margin-top:20px;font-size:13px;color:var(--muted)}.auth-footer a{color:var(--accent);text-decoration:none;font-weight:600}.error-msg{background:#c0392b14;border:1px solid rgba(192,57,43,.18);border-radius:10px;padding:10px 12px;font-size:13px;color:var(--danger);margin-bottom:16px}.layout{min-height:100vh;display:flex;flex-direction:column}.navbar{background:var(--surface);border-bottom:1px solid var(--border);padding:14px 32px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:100}.navbar-brand{font-size:19px;font-weight:700;color:var(--accent);letter-spacing:-.01em;text-decoration:none}.navbar-links{display:flex;gap:6px}.navbar-links a{font-size:13px;font-weight:500;color:var(--muted);text-decoration:none;letter-spacing:-.005em;transition:all .2s;padding:8px 14px;border-radius:10px}.navbar-links a:hover{color:var(--text);background:var(--bg2)}.navbar-links a.active{color:var(--accent);background:var(--bg2)}.navbar-right{display:flex;align-items:center;gap:12px}.navbar-user{font-size:13px;color:var(--muted)}.logout-btn{background:var(--bg2);border:1px solid transparent;border-radius:10px;padding:7px 14px;font-size:13px;font-weight:500;color:var(--muted);cursor:pointer;font-family:inherit;transition:all .2s}.logout-btn:hover{background:var(--border);color:var(--text)}.main-content{max-width:900px;margin:0 auto;padding:40px 24px;width:100%;flex:1}.page-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:32px}.page-title{font-size:24px;font-weight:700;color:var(--text);letter-spacing:-.01em}.page-subtitle{font-size:13px;color:var(--muted);margin-top:4px}.card{background:var(--surface);border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow);transition:all .2s}.card-pad{padding:24px}.card:hover{border-color:var(--accent2);box-shadow:0 8px 28px #2e36241a;transform:translateY(-1px)}.qt-hero-eyebrow{font-size:12px;font-weight:600;color:var(--accent2);letter-spacing:.08em;text-transform:uppercase;margin-bottom:10px}.qt-hero-title{font-size:26px;font-weight:700;color:var(--text);line-height:1.4;letter-spacing:-.01em}@media(max-width:640px){.qt-hero-title{font-size:21px}}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.dashboard-grid>*{animation:fadeIn .4s ease both}.dashboard-grid>*:nth-child(2){animation-delay:.08s}@media(max-width:640px){.dashboard-grid{grid-template-columns:1fr}}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:22px;text-align:center}.stat-number{font-size:40px;font-weight:700;color:var(--accent);line-height:1;margin:8px 0;letter-spacing:-.02em}.stat-label{font-size:11px;font-weight:500;color:var(--muted);letter-spacing:.04em;text-transform:uppercase}.stat-badge{display:inline-block;margin-top:8px;padding:4px 12px;border-radius:20px;background:var(--bg2);border:1px solid transparent;font-size:11px;font-weight:600;color:var(--accent)}.upload-zone{border:1.5px dashed var(--border);border-radius:16px;padding:32px 24px;text-align:center;cursor:pointer;transition:all .2s;background:var(--bg2)}.upload-zone:hover,.upload-zone.has-image{border-color:var(--accent2);border-style:solid;background:var(--surface)}.upload-zone img{width:100%;max-height:200px;object-fit:cover;border-radius:12px}.upload-zone-icon{font-size:32px;opacity:.4;margin-bottom:8px}.upload-zone-text{font-size:13px;color:var(--muted)}.calendar-wrap{background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:24px}.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.calendar-title{font-size:16px;font-weight:700;color:var(--text)}.qt-goal-tag{display:inline-block;margin-left:8px;background:#4b6b3a1f;border-radius:20px;padding:3px 10px;font-size:11px;font-weight:700;color:var(--accent);vertical-align:middle}.calendar-days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.calendar-day-label{text-align:center;font-size:11px;color:var(--muted);letter-spacing:.02em;padding-bottom:6px}.calendar-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:50%;font-size:13px;color:var(--muted);background:var(--bg2);transition:all .15s}.calendar-day.attended{background:var(--accent);color:#fff;font-weight:600;box-shadow:0 2px 8px #4b6b3a66}.calendar-day.today:not(.attended){background:var(--surface);border:1.5px solid var(--accent2);color:var(--accent);font-weight:700}.qt-progress-row{margin-top:22px;display:flex;align-items:center;gap:18px}.qt-progress-ring{--progress: 0;flex-shrink:0;width:72px;height:72px;border-radius:50%;background:conic-gradient(var(--accent) calc(var(--progress) * 1%),var(--bg2) 0);display:flex;align-items:center;justify-content:center;transition:background .6s ease}.qt-progress-ring-inner{width:56px;height:56px;border-radius:50%;background:var(--surface);display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.1}.qt-progress-ring-num{font-size:17px;font-weight:700;color:var(--text)}.qt-progress-ring-goal{font-size:10px;color:var(--muted);margin-top:1px}.qt-progress-caption{font-size:13px;color:var(--muted);line-height:1.5}.ranking-list{display:flex;flex-direction:column;gap:10px}.ranking-item{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:14px 20px;display:flex;align-items:center;justify-content:space-between;transition:all .2s}.ranking-item:hover{border-color:var(--accent2);transform:translate(2px)}.ranking-item.rank-1{background:#4b6b3a12;border-color:var(--accent2)}.ranking-item.rank-2{background:var(--bg2)}.ranking-item.rank-3{background:var(--bg)}.ranking-left{display:flex;align-items:center;gap:14px}.ranking-medal{font-size:22px;width:32px;text-align:center}.ranking-name{font-size:15px;color:var(--text);font-weight:500}.ranking-count{font-size:18px;font-weight:700;color:var(--accent)}.badge-chip{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:10px 12px;transition:all .2s}.badge-chip:hover{border-color:var(--accent2)}.badge-icon{font-size:22px}.badge-name{font-size:12px;color:var(--text);font-weight:600;white-space:nowrap}.badge-month{font-size:11px;color:var(--muted);margin-top:2px}.badge-medal{position:relative;flex-shrink:0;width:52px;height:52px}.badge-medal-img{width:52px;height:52px;object-fit:contain}.badge-medal-num{position:absolute;bottom:0;right:0;font-size:13px;font-weight:700;color:#fff;background:var(--accent);border-radius:50%;width:20px;height:20px;display:flex;align-items:center;justify-content:center;line-height:1;box-shadow:0 1px 4px #0003}.month-selector{display:flex;gap:8px}.month-selector select{padding:8px 12px;background:var(--bg2);border:1px solid transparent;border-radius:10px;font-family:inherit;font-size:13px;color:var(--text);outline:none;cursor:pointer;transition:all .2s}.month-selector select:focus{border-color:var(--accent2)}.profile-banner{background:linear-gradient(135deg,#3b5a2c,#4b6b3a 55%,#7a9a66);border-radius:20px;padding:28px 32px;color:#fff;margin-bottom:24px}.profile-banner h2{font-size:22px;font-weight:700;letter-spacing:-.01em}.profile-banner p{font-size:13px;opacity:.75;margin-top:4px}.section-title{font-size:15px;font-weight:700;color:var(--text);margin-bottom:14px;letter-spacing:-.005em}.empty-state{text-align:center;padding:60px 24px;color:var(--muted)}.empty-state .icon{font-size:36px;opacity:.3;margin-bottom:12px}.empty-state p{font-size:14px}.loading{text-align:center;padding:60px;color:var(--muted);font-size:14px}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .3s ease}.bottom-nav{display:none}.qt-fab{position:fixed;right:24px;bottom:24px;width:56px;height:56px;border-radius:50%;background:var(--accent);color:#fff;border:none;font-size:26px;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 6px 20px #4b6b3a66;z-index:150;transition:transform .15s,background .2s}.qt-fab:hover{transform:scale(1.06)}.qt-fab:active{transform:scale(.96)}.qt-fab.done{background:var(--highlight);box-shadow:0 6px 20px #e8825a66}.qt-fab-overlay{position:fixed;inset:0;background:#2e362473;display:flex;align-items:flex-end;justify-content:center;z-index:300;animation:fadeIn .15s ease}.qt-fab-modal{width:100%;max-width:480px;max-height:88vh;overflow-y:auto;background:var(--bg);border-radius:24px 24px 0 0;padding:20px 20px calc(20px + env(safe-area-inset-bottom,0px))}@media(min-width:641px){.qt-fab-overlay{align-items:center}.qt-fab-modal{border-radius:24px;max-height:84vh}}.qt-fab-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.qt-fab-modal-close{background:var(--bg2);border:none;border-radius:50%;width:30px;height:30px;font-size:16px;color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center}.qt-fab-modal-close:hover{background:var(--border);color:var(--text)}@media(max-width:640px){.navbar{padding:12px 16px}.navbar-links,.navbar-user{display:none}.logout-btn{padding:6px 12px;font-size:12px}.form-group input,.form-group textarea,.form-group select{font-size:16px}.main-content{padding:20px 14px;padding-bottom:calc(68px + env(safe-area-inset-bottom,0px))}.page-header{flex-direction:column;align-items:flex-start;gap:10px;margin-bottom:20px}.page-title{font-size:21px}.stat-number{font-size:34px}.stat-card{padding:16px 12px;border-radius:14px}.card-pad{padding:18px 16px}.auth-box{padding:28px 18px;border-radius:20px}.ranking-item{padding:12px 14px}.calendar-wrap{padding:16px 12px}.calendar-day{font-size:11px}.profile-banner{padding:20px 18px;border-radius:16px;margin-bottom:16px}.profile-banner h2{font-size:19px}.section-title{font-size:15px;margin-bottom:10px}.bottom-nav{display:flex;position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-top:1px solid var(--border);padding:6px 0;padding-bottom:calc(6px + env(safe-area-inset-bottom,0px));z-index:200;box-shadow:0 -4px 16px #2e36240f}.bottom-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;text-decoration:none;color:var(--muted);padding:4px 0;transition:color .15s}.bottom-nav-item.active{color:var(--accent)}.bottom-nav-icon{font-size:20px;line-height:1}.bottom-nav-label{font-size:10px;font-weight:500;letter-spacing:0}.qt-fab{right:16px;bottom:calc(84px + env(safe-area-inset-bottom,0px));width:52px;height:52px;font-size:24px}}body:has(.layout) .auth-page{display:none!important}.layout+.auth-page,.auth-page+.layout{display:none!important}.layout{position:relative;z-index:10;background-color:var(--bg)}.toggle-switch{position:relative;display:inline-block;width:44px;height:24px;cursor:pointer;flex-shrink:0}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;inset:0;background:var(--border);border-radius:24px;transition:background .2s}.toggle-slider:before{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform .2s;box-shadow:0 1px 4px #0003}.toggle-switch input:checked+.toggle-slider{background:var(--accent)}.toggle-switch input:checked+.toggle-slider:before{transform:translate(20px)}.comment-item{background:var(--bg2);border:1px solid transparent;border-radius:12px;padding:8px 12px}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}
