*{box-sizing:border-box}:root{--bg: #faf9f5;--bg-warm: #f5f0e6;--card: #ffffff;--primary: #c15f3c;--primary-hover: #a4502f;--primary-soft: #f5e8e1;--secondary: #ece7dc;--secondary-hover: #ddd6c6;--text: #2c2925;--muted: #6b6862;--border: #e5e1d8;--border-strong: #d8d3c5;--success: #4f7d3f;--danger: #b54730;--warning: #c08a2f;--text-xs: .72rem;--text-sm: .85rem;--text-base: .95rem;--text-md: 1.05rem;--text-lg: 1.25rem;--text-xl: 1.5rem;--text-2xl: 1.9rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--radius-sm: 6px;--radius: 10px;--radius-lg: 14px;--radius-full: 999px;--shadow-sm: 0 1px 2px rgba(60, 50, 30, .04);--shadow: 0 1px 3px rgba(60, 50, 30, .06), 0 1px 2px rgba(60, 50, 30, .04);--shadow-lg: 0 16px 40px -12px rgba(60, 50, 30, .18);--ring: 0 0 0 3px rgba(193, 95, 60, .18);--info-bg: #fcf3e3;--info-fg: #7a571c;--info-border: #ecdcb7;--danger-bg: #f9e6df;--danger-fg: #862e1f;--danger-border: #f1c9b9;--success-bg: #e7f0e2;--success-fg: #2e5a1d;--success-border: #cae0bc;--warn-bg: linear-gradient(135deg, #fbe9d8, #f5d3b3);--warn-fg: #6b3a14;--warn-border: #d99b6f;--warn-button-bg: rgba(255, 255, 255, .5);--warn-button-hover-bg: #fcefe0;--podium-1-bg: linear-gradient(135deg, #fbe9d8, #f5d3b3);--podium-1-border: #d99b6f;--podium-2-bg: linear-gradient(135deg, #f0ebde, #e3dccb);--podium-2-border: #c8c0ad;--podium-3-bg: linear-gradient(135deg, #f6e2d3, #ecc7a7);--podium-3-border: #c89674;--mentee-tag-bg: #e5ecd9;--mentee-tag-fg: #2e5a1d;--backdrop: rgba(44, 41, 37, .45);--backdrop-strong: rgba(44, 41, 37, .85);--serif: "Source Serif 4", "Noto Serif Thai", ui-serif, Georgia, Cambria, "Times New Roman", serif;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, Roboto, "Helvetica Neue", sans-serif;--sans-th: "Noto Sans Thai", -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, sans-serif}[data-theme=dark]{--bg: #1c1814;--bg-warm: #251f1a;--card: #2a241f;--primary: #e07d5b;--primary-hover: #ee9270;--primary-soft: #3a2820;--secondary: #322b25;--secondary-hover: #3d342c;--text: #f0ebe2;--muted: #a59f93;--border: #3b332b;--border-strong: #4a4036;--success: #7faf6c;--danger: #e2725a;--warning: #e0b056;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--shadow: 0 2px 6px rgba(0, 0, 0, .4);--shadow-lg: 0 20px 40px -12px rgba(0, 0, 0, .55);--ring: 0 0 0 3px rgba(224, 125, 91, .3);--info-bg: #2f2918;--info-fg: #e8c98c;--info-border: #4a3f24;--danger-bg: #3a221c;--danger-fg: #f0b7a8;--danger-border: #5a3025;--success-bg: #233220;--success-fg: #b8d7a6;--success-border: #3a4f33;--warn-bg: linear-gradient(135deg, #3a2a1d, #2f2218);--warn-fg: #f0caa0;--warn-border: #6b4a32;--warn-button-bg: rgba(255, 255, 255, .06);--warn-button-hover-bg: #4a3624;--podium-1-bg: linear-gradient(135deg, #3a2a1d, #2c2017);--podium-1-border: #6b4a32;--podium-2-bg: linear-gradient(135deg, #2f2c25, #28251f);--podium-2-border: #4a443a;--podium-3-bg: linear-gradient(135deg, #382a1f, #2c2118);--podium-3-border: #5e4231;--mentee-tag-bg: #2b3522;--mentee-tag-fg: #b8d7a6;--backdrop: rgba(0, 0, 0, .55);--backdrop-strong: rgba(0, 0, 0, .85)}html{color-scheme:light}html[data-theme=dark]{color-scheme:dark}html[lang=th] body,html[lang=th] input,html[lang=th] textarea,html[lang=th] select,html[lang=th] button{font-family:var(--sans-th);font-weight:300}html[lang=th] h1,html[lang=th] h2,html[lang=th] h3,html[lang=th] .session-date,html[lang=th] .week-label strong,html[lang=th] .podium-name,html[lang=th] .podium-score,html[lang=th] .ranking td.score-cell{font-family:"Noto Serif Thai",var(--serif);font-weight:500}html[lang=th] strong,html[lang=th] .btn-primary,html[lang=th] .btn-secondary,html[lang=th] .module-nav a.active,html[lang=th] .user-info-text strong{font-weight:500}body{margin:0;font-family:var(--sans);background:var(--bg);color:var(--text);line-height:1.5;font-feature-settings:"ss01","cv11";-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--serif);font-weight:600;letter-spacing:-.01em;color:var(--text)}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}.app-header{background:var(--bg);border-bottom:1px solid var(--border);padding:1.25rem 1rem}.header-row{max-width:880px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap}.app-header h1{margin:0;font-size:var(--text-xl);color:var(--text);letter-spacing:-.015em}.app-header .subtitle{margin:.15rem 0 0;font-size:var(--text-sm);color:var(--muted);font-family:var(--sans);letter-spacing:.01em}.user-info{display:flex;align-items:center;gap:.75rem;color:var(--text)}.user-info-text{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2}.user-info-text strong{font-size:.95rem;color:var(--text)}.role-badge{font-size:var(--text-xs);padding:.12rem .55rem;border-radius:var(--radius-full);background:var(--secondary);color:var(--muted);margin-top:.25rem;font-weight:500;letter-spacing:.04em;text-transform:lowercase}.field-flag{display:inline-block;margin-left:.4rem;padding:.05rem .55rem;font-size:var(--text-xs);font-weight:500;border-radius:var(--radius-full);letter-spacing:.02em;vertical-align:middle;text-transform:none}.field-flag.required{background:var(--danger-bg);color:var(--danger-fg)}.field-flag.optional{background:var(--secondary);color:var(--muted)}.milestones{border:1px solid var(--border);border-radius:var(--radius);padding:.75rem .85rem;background:var(--bg-warm);margin:0}.milestones legend{font-size:var(--text-sm);font-weight:600;color:var(--text);padding:0 .4rem}.milestones .hint{margin:0 0 .5rem}.milestone-row{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-bottom:.4rem}.milestone-row:last-child{margin-bottom:0}.milestone-row label.checkbox{flex:1;min-width:160px;margin-top:0;letter-spacing:normal;text-transform:none;font-weight:500;color:var(--text)}.milestone-row input[type=date]{margin-top:0;min-width:150px}.milestone-row input[type=date]:disabled{background:var(--secondary);color:var(--muted);cursor:not-allowed}.grade-picker{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.25rem}.grade-picker label{flex:1;min-width:140px;display:inline-flex;align-items:center;gap:.55rem;padding:.55rem .85rem;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--card);cursor:pointer;font-weight:500;font-size:var(--text-sm);color:var(--text);letter-spacing:normal;text-transform:none}.grade-picker label:hover{background:var(--bg-warm)}.grade-picker input[type=radio]{margin:0;width:14px;height:14px;accent-color:currentColor}.grade-picker .grade-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0;border:1px solid rgba(0,0,0,.08)}.grade-picker label.grade-red{color:var(--danger)}.grade-picker label.grade-yellow{color:var(--warning)}.grade-picker label.grade-green{color:var(--success)}.grade-picker label.grade-red .grade-dot{background:var(--danger)}.grade-picker label.grade-yellow .grade-dot{background:var(--warning)}.grade-picker label.grade-green .grade-dot{background:var(--success)}.grade-picker label:has(input:checked){background:var(--primary-soft);border-color:currentColor;box-shadow:var(--ring)}.grade-chip{display:inline-flex;align-items:center;gap:.35rem;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.grade-chip .grade-dot{display:inline-block;width:10px;height:10px;border-radius:50%;border:1px solid rgba(0,0,0,.08)}.grade-chip.grade-red{color:var(--danger)}.grade-chip.grade-yellow{color:var(--warning)}.grade-chip.grade-green{color:var(--success)}.grade-chip.grade-red .grade-dot{background:var(--danger)}.grade-chip.grade-yellow .grade-dot{background:var(--warning)}.grade-chip.grade-green .grade-dot{background:var(--success)}.role-badge.admin{background:var(--primary-soft);color:var(--primary)}.role-badge.member{background:var(--secondary);color:var(--muted)}.logout,.lang-toggle,.theme-toggle{display:inline-flex;align-items:center;gap:.4rem;background:transparent;color:var(--text);border:1px solid var(--border-strong);padding:.4rem .85rem;border-radius:var(--radius);cursor:pointer;font-family:inherit;font-size:var(--text-sm);text-decoration:none;transition:background .15s,border-color .15s,color .15s,box-shadow .15s}.logout:hover,.lang-toggle:hover,.theme-toggle:hover{background:var(--secondary);border-color:var(--border-strong);text-decoration:none}.logout:focus-visible,.lang-toggle:focus-visible,.theme-toggle:focus-visible{outline:none;box-shadow:var(--ring)}.lang-toggle,.theme-toggle{letter-spacing:.02em;font-weight:500}.auth-lang{position:absolute;top:1rem;right:1rem;z-index:1}.auth-lang button{background:color-mix(in srgb,var(--card) 70%,transparent)}.container{max-width:1200px;margin:0 auto;padding:0 1rem 1.5rem}.app-shell{display:flex;align-items:flex-start;gap:1.5rem;padding-top:1.5rem;position:relative}.sidebar{flex-shrink:0;width:220px;position:sticky;top:1rem;align-self:flex-start;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:.75rem;box-shadow:var(--shadow-sm);max-height:calc(100vh - 2rem);overflow-y:auto}.sidebar .module-nav{flex:1}.sidebar-user{display:none;flex-direction:column;gap:.5rem;margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--border)}.sidebar-user .user-info-text{display:flex;flex-direction:column;gap:.25rem;padding:0 .25rem}.sidebar-user-link{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem .7rem;color:var(--text);font-weight:500;font-size:var(--text-base);border-radius:var(--radius);border:none;background:transparent;text-align:left;cursor:pointer;font-family:inherit;text-decoration:none}.sidebar-user-link:hover{background:var(--bg-warm);text-decoration:none}.sidebar-user-link>svg{opacity:.7;flex-shrink:0}.sidebar-user .logout-btn{color:var(--danger)}.sidebar-user .logout-btn>svg{opacity:.75}.sidebar-user form{margin:0}.impersonating-label{display:inline-flex;align-items:center;gap:.4rem}.module-nav{display:flex;flex-direction:column;gap:.15rem}.module-group{display:flex;flex-direction:column;gap:.1rem;padding:.25rem 0}.module-group+.module-group{border-top:1px solid var(--border);margin-top:.5rem;padding-top:.6rem}.module-label{display:inline-flex;align-items:center;gap:.4rem;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:.3rem .6rem .2rem;font-weight:600}.module-label>svg{opacity:.7}.module-group.tools .module-label{color:var(--primary)}.module-nav a{display:flex;align-items:center;gap:.55rem;padding:.5rem .7rem;color:var(--text);font-weight:500;font-size:var(--text-base);border-radius:var(--radius);transition:background .12s,color .12s}.module-nav a:hover{background:var(--bg-warm);text-decoration:none}.module-nav a.active{background:var(--primary-soft);color:var(--primary);font-weight:600}.module-nav a>svg{flex-shrink:0;opacity:.85}.app-content{flex:1;min-width:0}.mobile-bar{display:none;align-items:center;gap:.75rem;padding-top:1rem}.mobile-bar-title{font-weight:600;font-size:1.05rem;color:var(--text)}.hamburger{display:inline-flex;align-items:center;justify-content:center;background:var(--card);border:1px solid var(--border-strong);border-radius:var(--radius);width:40px;height:40px;color:var(--text);cursor:pointer;padding:0;font-family:inherit}.hamburger:hover{background:var(--bg-warm)}.sidebar-scrim{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:var(--backdrop);border:none;padding:0;cursor:pointer;z-index:19}@media (max-width: 900px){.app-shell{display:block;padding-top:0}.mobile-bar{display:flex}.app-header .user-info-text,.app-header .logout{display:none}.app-header .user-info{gap:.5rem}.sidebar{position:fixed;top:0;left:0;bottom:0;width:260px;max-width:80vw;height:100vh;height:100dvh;max-height:none;border-radius:0;border:none;border-right:1px solid var(--border);box-shadow:var(--shadow);padding:1rem .75rem;transform:translate(-100%);transition:transform .18s ease;z-index:20}.sidebar.open{transform:translate(0)}.sidebar-user{display:flex}.sidebar-scrim{display:block}.app-content{margin-top:1rem}}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-4);box-shadow:var(--shadow-sm)}.card h2{margin:0 0 var(--space-4);font-size:var(--text-lg);letter-spacing:-.01em}.grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem 1rem}.grid .full{grid-column:1 / -1}label{display:flex;flex-direction:column;font-size:var(--text-sm);color:var(--muted);font-weight:500;letter-spacing:.04em}input,textarea,select{margin-top:.35rem;padding:.55rem .8rem;border:1px solid var(--border-strong);border-radius:var(--radius);font-size:var(--text-base);font-family:var(--sans);color:var(--text);background:var(--card);transition:border-color .15s,box-shadow .15s}input::placeholder,textarea::placeholder{color:var(--muted);opacity:.7}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--primary);box-shadow:var(--ring)}textarea{resize:vertical;min-height:60px;line-height:1.55}.hint{color:var(--muted);font-size:.8rem;font-weight:400}.btn-primary,.btn-secondary,.btn-remove{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.5rem 1.05rem;min-height:36px;border-radius:var(--radius);font-size:var(--text-base);font-weight:500;cursor:pointer;border:1px solid transparent;font-family:var(--sans);transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s}.btn-primary:focus-visible,.btn-secondary:focus-visible,.btn-remove:focus-visible{outline:none;box-shadow:var(--ring)}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-primary:disabled{background:var(--secondary);color:var(--muted);cursor:not-allowed}.btn-secondary{background:var(--card);color:var(--text);border-color:var(--border-strong)}.btn-secondary:hover{background:var(--secondary)}.btn-sm{min-height:28px;padding:.25rem .7rem;font-size:var(--text-sm);gap:.35rem}.btn-remove{background:transparent;color:var(--danger);padding:.35rem .5rem;font-size:.85rem}.btn-remove:hover{background:var(--danger-bg)}.google-btn{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;padding:.6rem 1.2rem;background:var(--card);border:1px solid var(--border-strong);border-radius:var(--radius);color:var(--text);font-size:.95rem;font-weight:500;text-decoration:none;width:100%;cursor:pointer;font-family:inherit;transition:background .15s,border-color .15s}.google-btn:hover{background:var(--bg-warm);border-color:var(--border-strong);text-decoration:none}.google-btn svg{flex-shrink:0}.line-btn{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;padding:.6rem 1.2rem;background:#06c755;border:1px solid #06c755;border-radius:var(--radius);color:#fff;font-size:.95rem;font-weight:500;text-decoration:none;width:100%;cursor:pointer;font-family:inherit;transition:background .15s,border-color .15s}.line-btn:hover{background:#05b14b;border-color:#05b14b;text-decoration:none;color:#fff}.line-btn svg{flex-shrink:0}.auth-divider{display:flex;align-items:center;gap:.6rem;margin:1rem 0;color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.06em}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}.actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1rem}.actions.full{grid-column:1 / -1}.checkbox-list{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.35rem;padding:.55rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-warm);min-height:44px}.checkbox-list label{flex-direction:row;align-items:center;gap:.4rem;padding:.35rem .7rem;background:var(--card);border:1px solid var(--border-strong);border-radius:999px;cursor:pointer;font-size:.9rem;color:var(--text);font-weight:500}.checkbox-list label:hover{background:var(--bg-warm)}.checkbox-list input[type=checkbox]{accent-color:var(--primary)}.checkbox-list .empty{color:var(--muted);padding:.4rem}.banner{background:var(--info-bg);color:var(--info-fg);padding:.75rem 1rem;border-radius:var(--radius);margin-bottom:1rem;font-size:.9rem;border:1px solid var(--info-border)}.banner.success{background:var(--success-bg);color:var(--success-fg);border-color:var(--success-border)}.impersonation-banner{background:var(--warn-bg);border-top:1px solid var(--warn-border);border-bottom:1px solid var(--warn-border);padding:.55rem 1rem;color:var(--warn-fg);font-size:.88rem}.impersonation-banner-row{max-width:880px;margin:0 auto;display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.impersonation-banner-row strong{font-weight:600}.impersonation-banner-row .spacer{flex:1}.impersonation-banner-row button{background:var(--warn-button-bg);border:1px solid var(--warn-border);color:var(--warn-fg);padding:.35rem .8rem;border-radius:var(--radius);font-size:.85rem;cursor:pointer;font-family:inherit}.impersonation-banner-row button:hover{background:var(--warn-button-hover-bg)}.error{background:var(--danger-bg);color:var(--danger-fg);padding:.55rem .8rem;border-radius:var(--radius);font-size:.85rem;margin:.5rem 0;border:1px solid var(--danger-border)}.activity-row{padding:1rem;background:var(--bg-warm);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:.75rem;position:relative}.activity-row .btn-remove{position:absolute;top:.5rem;right:.5rem}.activity-row input,.activity-row textarea,.activity-row select{background:var(--card)}.image-previews{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.5rem;margin-top:.75rem}.image-previews .img-wrap{position:relative;aspect-ratio:1;border-radius:var(--radius);overflow:hidden;background:var(--bg-warm);border:1px solid var(--border)}.image-previews img{width:100%;height:100%;object-fit:cover}.image-previews .img-remove{position:absolute;top:4px;right:4px;background:var(--backdrop-strong);color:#fff;border:none;border-radius:50%;width:24px;height:24px;cursor:pointer;line-height:1;padding:0;font-size:14px}.history-controls{display:flex;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap}.history-controls input[type=search],.history-controls select{min-width:180px}.resource-controls{display:flex;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap;align-items:flex-end}.resource-controls input[type=search]{flex:1;min-width:220px}.resource-filter{display:flex;flex-direction:column;gap:.25rem}.resource-filter .hint{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}.resource-filter select{min-width:160px}.drawer-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--backdrop);border:none;padding:0;cursor:pointer;z-index:30;animation:drawer-scrim-in .18s ease-out}@keyframes drawer-scrim-in{0%{opacity:0}to{opacity:1}}.multiply-drawer{position:fixed;top:0;right:0;bottom:0;width:clamp(320px,90vw,460px);background:var(--card);border-left:1px solid var(--border);box-shadow:var(--shadow-lg);z-index:31;display:flex;flex-direction:column;animation:drawer-in .22s cubic-bezier(.2,.7,.3,1)}@keyframes drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}.drawer-header{display:flex;align-items:flex-start;gap:.5rem;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}.drawer-title{flex:1;min-width:0}.drawer-title h3{margin:0;font-family:var(--serif);font-size:var(--text-lg);color:var(--text)}.drawer-close{flex-shrink:0;width:32px;height:32px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--card);color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-family:inherit}.drawer-close:hover{background:var(--bg-warm);color:var(--text)}.drawer-body{flex:1;overflow-y:auto;padding:1rem 1.25rem;display:flex;flex-direction:column;gap:1rem}.session-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);margin-bottom:var(--space-3);transition:border-color .15s,transform .15s,box-shadow .15s}.session-card:hover{border-color:var(--primary);transform:translateY(-1px);box-shadow:var(--shadow)}.session-card.locked{background:var(--bg-warm);color:var(--muted);cursor:not-allowed}.session-card.locked:hover{border-color:var(--border);box-shadow:var(--shadow-sm)}.session-card.locked .session-date{color:var(--muted)}.session-card .locked-title{display:inline-flex;align-items:center;gap:.45rem}.session-card .locked-title>svg{opacity:.7}.tag.locked-tag{background:transparent;color:var(--muted);border:1px dashed var(--border-strong)}.session-card-header{display:flex;justify-content:space-between;gap:.5rem;align-items:baseline;margin-bottom:.5rem}.session-date{font-weight:600;color:var(--primary);font-family:var(--serif)}.session-by{font-size:.85rem;color:var(--muted)}.session-preview{font-size:.9rem;color:var(--muted);margin-top:.4rem}.session-tags{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.5rem}.tag{display:inline-flex;align-items:center;gap:.3rem;font-size:var(--text-xs);padding:.22rem .6rem;background:var(--primary-soft);color:var(--primary);border-radius:var(--radius-full);font-weight:500}.tag>svg{opacity:.85}.tag.mentee{background:var(--mentee-tag-bg);color:var(--mentee-tag-fg)}.detail-section{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border)}.detail-section h3{margin:0 0 .5rem;font-size:1rem}.detail-section p{margin:.25rem 0;font-size:.92rem;white-space:pre-wrap;line-height:1.55}.detail-images{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.5rem;margin-top:.5rem}.detail-images img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--radius);cursor:pointer}.empty-state{text-align:center;padding:var(--space-7) var(--space-4);color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}.empty-state>svg{opacity:.45}.empty-state p{margin:0;font-size:var(--text-sm)}.toast{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%);background:var(--text);color:#fff;padding:.7rem 1.2rem;border-radius:var(--radius);box-shadow:var(--shadow-lg);font-size:.9rem;z-index:1000}.toast.error{background:var(--danger)}.toast.success{background:var(--success)}.tree{font-size:.95rem}.tree ul{list-style:none;padding-left:1.25rem;margin:.25rem 0;border-left:1px dashed var(--border-strong)}.tree>ul{padding-left:0;border-left:none}.tree li{padding:.2rem 0}.tree-node{display:inline-flex;align-items:center;gap:.5rem;padding:.35rem .75rem;background:var(--card);border:1px solid var(--border-strong);border-radius:var(--radius);cursor:pointer;font-size:.9rem;color:var(--text)}.tree-node:hover{background:var(--bg-warm)}.tree-node .you-badge{font-size:.7rem;padding:.1rem .45rem;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-weight:500}.week-nav{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:1rem}.week-label{flex:1;text-align:center;min-width:180px}.week-label strong{font-family:var(--serif);font-weight:600}.analytics-toggle{display:flex;gap:1.25rem;padding:.75rem 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);margin-bottom:1rem}.analytics-toggle label{flex-direction:row;align-items:center;gap:.4rem;color:var(--text);font-weight:500}.analytics-toggle input[type=radio]{accent-color:var(--primary)}.podium{display:grid;grid-template-columns:1fr 1fr 1fr;gap:.75rem;align-items:end}.podium-slot{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:.9rem .75rem;text-align:center}.podium-slot.rank-1{background:var(--podium-1-bg);border-color:var(--podium-1-border);transform:translateY(-8px);box-shadow:var(--shadow)}.podium-slot.rank-2{background:var(--podium-2-bg);border-color:var(--podium-2-border)}.podium-slot.rank-3{background:var(--podium-3-bg);border-color:var(--podium-3-border)}.podium-medal{font-size:1.6rem}.podium-name{font-family:var(--serif);font-weight:600;margin-top:.4rem;font-size:1rem;word-break:break-word}.podium-score{font-family:var(--serif);font-size:1.6rem;font-weight:700;color:var(--primary);margin-top:.3rem;line-height:1}.podium-meta{font-size:.75rem;color:var(--muted);margin-top:.4rem}.table-wrap{overflow-x:auto}.ranking{width:100%;border-collapse:collapse;font-size:.9rem}.ranking th,.ranking td{padding:.65rem .75rem;text-align:right;border-bottom:1px solid var(--border);white-space:nowrap}.ranking th:nth-child(2),.ranking td:nth-child(2){text-align:left}.ranking th{font-size:var(--text-xs);color:var(--muted);text-transform:uppercase;letter-spacing:.07em;font-weight:600}.ranking tr.is-current{background:var(--primary-soft)}.ranking td.rank-cell{font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}.ranking td.score-cell{font-weight:700;color:var(--primary);font-variant-numeric:tabular-nums;font-family:var(--serif)}.auth-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem;background:radial-gradient(ellipse at 30% 20%,var(--bg-warm) 0%,var(--bg) 55%);position:relative;overflow:hidden}.auth-screen:before{content:"";position:absolute;width:480px;height:480px;border-radius:50%;background:radial-gradient(circle,var(--primary-soft) 0%,transparent 70%);opacity:.55;top:-120px;right:-120px;pointer-events:none}.auth-card{background:var(--card);border-radius:var(--radius-lg);padding:2.25rem 2rem;width:100%;max-width:410px;box-shadow:var(--shadow-lg);border:1px solid var(--border);position:relative}.auth-card h1{margin:0;font-size:1.5rem;text-align:center}.auth-tagline{color:var(--muted);text-align:center;margin:.5rem 0 1.5rem;font-size:.9rem}.auth-form{display:flex;flex-direction:column;gap:.85rem}.auth-form label{color:var(--text)}.auth-switch{text-align:center;margin-top:1rem;font-size:.9rem;color:var(--muted)}dialog{border:none;border-radius:var(--radius-lg);padding:0;max-width:480px;width:90%;max-height:calc(100vh - 2rem);box-shadow:var(--shadow-lg);overflow:hidden}dialog::backdrop{background:var(--backdrop);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}dialog form{padding:1.5rem;display:flex;flex-direction:column;gap:.75rem;max-height:calc(100vh - 2rem);overflow-y:auto}.dialog-actions{display:flex;align-items:center;gap:.5rem;margin-top:.5rem}.dialog-actions .spacer{flex:1}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--backdrop-strong);display:flex;align-items:center;justify-content:center;padding:1rem;z-index:2000;cursor:zoom-out;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.lightbox img{max-width:95%;max-height:95%;border-radius:var(--radius)}.lightbox .auth-card{max-height:calc(100vh - 2rem);overflow-y:auto}::selection{background:var(--primary-soft);color:var(--text)}@media (max-width: 600px){.grid{grid-template-columns:1fr}.grid .full{grid-column:1}.actions{flex-direction:column}.actions button{width:100%}.user-info{width:100%;justify-content:space-between}.app-header h1{font-size:1.25rem}}
