:root{--th-cream-50: #FDFCF9;--th-cream-100: #FAF7F2;--th-cream-200: #F3EDE3;--th-cream-300: #E9E1D3;--th-cream-400: #DDD3C0;--th-cream-500: #C9BBAA;--th-teal-50: #EBF3F1;--th-teal-100: #C8E2DC;--th-teal-200: #9DCEC6;--th-teal-300: #6BB5A9;--th-teal-400: #3E9989;--th-teal-500: #2A7D6E;--th-teal-600: #1F6357;--th-teal-700: #164A41;--th-teal-800: #0E312B;--th-teal-900: #071915;--th-terra-50: #FBF2EC;--th-terra-100: #F5DFCF;--th-terra-200: #EAC3A8;--th-terra-300: #DA9E7B;--th-terra-400: #C87C55;--th-terra-500: #B46238;--th-terra-600: #8E4D2B;--th-terra-700: #6A3920;--th-terra-800: #462515;--th-terra-900: #23120A;--th-amber-100: #FDF3DC;--th-amber-300: #F0C96A;--th-amber-400: #E8A82E;--th-amber-600: #B87A10;--th-neutral-50: #FAF8F5;--th-neutral-100: #F2EDE6;--th-neutral-200: #E3D9CE;--th-neutral-300: #C9BEB0;--th-neutral-400: #AE9F8E;--th-neutral-500: #8F7F6D;--th-neutral-600: #6E5F4E;--th-neutral-700: #50412F;--th-neutral-800: #342A1D;--th-neutral-900: #1C1410;--th-success-bg: #EDF5F1;--th-success: #2A7A52;--th-warning-bg: #FBF3E6;--th-warning: #B87A10;--th-error-bg: #FAF0EE;--th-error: #B54840;--th-info-bg: var(--th-teal-50);--th-info: var(--th-teal-500);--th-color-bg: var(--th-cream-100);--th-color-surface: var(--th-cream-200);--th-color-surface-raised: var(--th-cream-50);--th-color-surface-muted: var(--th-cream-300);--th-color-overlay: rgba(28, 20, 16, .5);--th-color-border: var(--th-neutral-300);--th-color-border-subtle: var(--th-neutral-200);--th-color-border-strong: var(--th-neutral-400);--th-color-border-brand: var(--th-teal-400);--th-color-text: var(--th-neutral-900);--th-color-text-secondary: var(--th-neutral-700);--th-color-text-muted: var(--th-neutral-500);--th-color-text-disabled: var(--th-neutral-400);--th-color-text-inverse: var(--th-cream-50);--th-color-text-brand: var(--th-teal-600);--th-color-text-terra: var(--th-terra-600);--th-color-primary: var(--th-teal-500);--th-color-primary-hover: var(--th-teal-600);--th-color-primary-active: var(--th-teal-700);--th-color-primary-subtle: var(--th-teal-50);--th-color-primary-text: var(--th-cream-50);--th-color-secondary: var(--th-terra-500);--th-color-secondary-hover: var(--th-terra-600);--th-color-secondary-active: var(--th-terra-700);--th-color-secondary-subtle: var(--th-terra-50);--th-font-display: "Fraunces", "Georgia", serif;--th-font-body: "Plus Jakarta Sans", "Helvetica Neue", sans-serif;--th-font-mono: "JetBrains Mono", "Fira Code", monospace;--th-text-xs: .75rem;--th-text-sm: .875rem;--th-text-base: 1rem;--th-text-lg: 1.125rem;--th-text-xl: 1.25rem;--th-text-2xl: 1.5rem;--th-text-3xl: 1.875rem;--th-text-4xl: 2.25rem;--th-text-5xl: 3rem;--th-weight-regular: 400;--th-weight-medium: 500;--th-weight-semibold: 600;--th-weight-bold: 700;--th-leading-tight: 1.2;--th-leading-snug: 1.35;--th-leading-normal: 1.5;--th-leading-relaxed: 1.65;--th-leading-loose: 1.8;--th-tracking-tight: -.02em;--th-tracking-normal: 0;--th-tracking-wide: .03em;--th-tracking-wider: .06em;--th-space-1: .25rem;--th-space-2: .5rem;--th-space-3: .75rem;--th-space-4: 1rem;--th-space-5: 1.25rem;--th-space-6: 1.5rem;--th-space-8: 2rem;--th-space-10: 2.5rem;--th-space-12: 3rem;--th-space-16: 4rem;--th-space-20: 5rem;--th-space-24: 6rem;--th-container-sm: 640px;--th-container-md: 768px;--th-container-lg: 1024px;--th-container-xl: 1280px;--th-radius-sm: 4px;--th-radius-md: 8px;--th-radius-lg: 12px;--th-radius-xl: 16px;--th-radius-2xl: 24px;--th-radius-full: 9999px;--th-shadow-sm: 0 1px 3px rgba(28,20,16,.07), 0 1px 2px rgba(28,20,16,.04);--th-shadow-md: 0 4px 12px rgba(28,20,16,.08), 0 2px 6px rgba(28,20,16,.05);--th-shadow-lg: 0 8px 24px rgba(28,20,16,.1), 0 4px 10px rgba(28,20,16,.06);--th-shadow-xl: 0 16px 40px rgba(28,20,16,.12), 0 6px 16px rgba(28,20,16,.07);--th-shadow-inner: inset 0 2px 4px rgba(28,20,16,.06);--th-icon-sm: 16px;--th-icon-md: 20px;--th-icon-lg: 24px;--th-icon-xl: 32px;--th-duration-instant: .1s;--th-duration-fast: .15s;--th-duration-base: .2s;--th-duration-slow: .3s;--th-duration-slower: .4s;--th-ease-standard: cubic-bezier(.4, 0, .2, 1);--th-ease-enter: cubic-bezier(0, 0, .2, 1);--th-ease-exit: cubic-bezier(.4, 0, 1, 1);--th-ease-sharp: cubic-bezier(.4, 0, .6, 1);--th-z-base: 0;--th-z-raised: 10;--th-z-dropdown: 100;--th-z-sticky: 200;--th-z-overlay: 300;--th-z-modal: 400;--th-z-toast: 500;--th-z-tooltip: 600}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;overflow:hidden}body{overflow:hidden;font-family:var(--th-font-body);font-size:var(--th-text-base);font-weight:var(--th-weight-regular);line-height:var(--th-leading-normal);color:var(--th-color-text);background-color:var(--th-color-bg)}h1,h2,h3{font-family:var(--th-font-display);line-height:var(--th-leading-snug);letter-spacing:var(--th-tracking-tight);color:var(--th-color-text)}h4,h5,h6{font-family:var(--th-font-body);font-weight:var(--th-weight-semibold);line-height:var(--th-leading-snug);color:var(--th-color-text)}p{line-height:var(--th-leading-relaxed);color:var(--th-color-text-secondary)}a{color:var(--th-color-text-brand);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--th-color-border-brand);outline-offset:2px;border-radius:var(--th-radius-sm)}:focus:not(:focus-visible){outline:none}button,input,textarea,select{font-family:inherit;font-size:inherit}button{cursor:pointer;border:none;background:none}input,textarea{border:none;outline:none;background:none}img,svg{display:block;max-width:100%}ul,ol{list-style:none}*{scrollbar-width:thin;scrollbar-color:var(--th-cream-400) transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--th-cream-400);border-radius:var(--th-radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--th-cream-500)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes modal-in{0%{opacity:0}to{opacity:1}}@keyframes modal-out{to{opacity:0}}@keyframes dialog-in{0%{transform:translateY(16px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes spin{to{transform:rotate(360deg)}}#app{position:fixed;inset:0;overflow:hidden;background-color:var(--th-color-bg)}.page{position:absolute;inset:0;overflow:hidden;display:flex;flex-direction:column;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.page{opacity:0;transform:translate(24px);transition:opacity var(--th-duration-slow) var(--th-ease-enter),transform var(--th-duration-slow) var(--th-ease-enter);pointer-events:none}.page.active{opacity:1;transform:translate(0);pointer-events:auto}.page.exit{opacity:0;transform:translate(-24px);transition:opacity var(--th-duration-base) var(--th-ease-exit),transform var(--th-duration-base) var(--th-ease-exit);pointer-events:none}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skeleton-avatar-sm{width:44px;height:44px;border-radius:var(--th-radius-full);flex-shrink:0}.skeleton-text-md{height:14px;border-radius:var(--th-radius-sm);margin-bottom:6px}.skeleton-text-sm{height:12px;border-radius:var(--th-radius-sm)}.skeleton-card-sm{height:80px;border-radius:var(--th-radius-lg)}.skeleton-card-md{height:140px;border-radius:var(--th-radius-lg)}.skeleton-card-lg{height:160px;border-radius:var(--th-radius-lg)}.skeleton-card-xl{height:200px;border-radius:var(--th-radius-lg)}.skeleton-card-2xl{height:300px;border-radius:var(--th-radius-lg)}.skeleton-card-3xl{height:400px;border-radius:var(--th-radius-lg)}.skeleton-header-line{height:40px;border-radius:var(--th-radius-md);margin-bottom:var(--th-space-4)}.skeleton-sub-line{height:28px;border-radius:var(--th-radius-md);margin-bottom:var(--th-space-6)}.skeleton-preview{height:300px;border-radius:var(--th-radius-xl);margin-bottom:var(--th-space-6)}.skeleton-body{height:100px;border-radius:var(--th-radius-md)}.flex-row{display:flex;align-items:center}.flex-col{display:flex;flex-direction:column}.flex-between{display:flex;align-items:center;justify-content:space-between}.flex-center{display:flex;align-items:center;justify-content:center}.flex-1{flex:1}.gap-1{gap:var(--th-space-1)}.gap-2{gap:var(--th-space-2)}.gap-3{gap:var(--th-space-3)}.gap-4{gap:var(--th-space-4)}.gap-6{gap:var(--th-space-6)}.gap-8{gap:var(--th-space-8)}.comment-form-textarea-wrap{flex:1;display:flex;flex-direction:column}.comment-form-submit-row{margin-top:var(--th-space-2);text-align:right}.section-with-top-separator{margin-top:var(--th-space-6);padding-top:var(--th-space-4);border-top:1px solid var(--th-color-border-subtle)}.topbar-row{display:flex;align-items:center;gap:var(--th-space-2)}.section-title-spaced{margin-top:var(--th-space-5)}.load-more-wrap{margin-top:var(--th-space-4)}.resource-desc-para{margin-bottom:var(--th-space-4)}.collections-grid-inner{margin-top:var(--th-space-3)}.notif-header-title{margin:0}.hub-section-history{margin-top:var(--th-space-6)}.page-placeholder{display:flex;align-items:center;justify-content:center;background:var(--th-color-bg)}.page-placeholder p{font-family:var(--th-font-body);color:var(--th-color-text-muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--th-space-2);height:52px;padding:0 var(--th-space-6);border-radius:var(--th-radius-xl);font-family:var(--th-font-body);font-size:var(--th-text-base);font-weight:var(--th-weight-semibold);letter-spacing:var(--th-tracking-wide);transition:background-color var(--th-duration-base) var(--th-ease-standard),color var(--th-duration-base) var(--th-ease-standard),transform var(--th-duration-fast) var(--th-ease-standard),box-shadow var(--th-duration-base) var(--th-ease-standard);-webkit-tap-highlight-color:transparent;user-select:none;cursor:pointer;text-decoration:none}.btn:active{transform:scale(.98)}.btn-primary{background-color:var(--th-color-primary);color:var(--th-color-primary-text);box-shadow:var(--th-shadow-sm)}.btn-primary:hover{background-color:var(--th-color-primary-hover);box-shadow:var(--th-shadow-md);text-decoration:none}.btn-primary:active{background-color:var(--th-color-primary-active)}.btn-outline{background-color:transparent;color:var(--th-color-primary);border:1.5px solid var(--th-color-border-brand)}.btn-outline:hover{background-color:var(--th-color-primary-subtle);text-decoration:none}.btn-ghost{background-color:transparent;color:var(--th-color-text-secondary)}.btn-ghost:hover{background-color:var(--th-color-surface);color:var(--th-color-text);text-decoration:none}.btn-full{width:100%}.input-field{display:flex;flex-direction:column;gap:var(--th-space-2)}.input-label{font-size:var(--th-text-sm);font-weight:var(--th-weight-medium);color:var(--th-color-text-secondary);letter-spacing:var(--th-tracking-wide)}.input{height:52px;width:100%;padding:0 var(--th-space-4);background-color:var(--th-color-surface-raised);border:1.5px solid var(--th-color-border);border-radius:var(--th-radius-lg);color:var(--th-color-text);font-size:var(--th-text-base);font-family:var(--th-font-body);box-sizing:border-box;transition:border-color var(--th-duration-base) var(--th-ease-standard),box-shadow var(--th-duration-base) var(--th-ease-standard);-webkit-appearance:none}.input::placeholder{color:var(--th-color-text-disabled)}.input:focus{border-color:var(--th-color-border-brand);box-shadow:0 0 0 3px #3e998926;outline:none}.input.error{border-color:var(--th-error)}.field-error,.input-error-msg{font-size:var(--th-text-xs);color:var(--th-error)}.field-error{margin-top:calc(-1 * var(--th-space-1))}.skeleton{background:linear-gradient(90deg,var(--th-cream-300) 25%,var(--th-cream-200) 50%,var(--th-cream-300) 75%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:var(--th-radius-md)}.toast-container{position:fixed;bottom:calc(var(--th-space-6) + env(safe-area-inset-bottom));left:var(--th-space-4);right:var(--th-space-4);z-index:var(--th-z-toast);display:flex;flex-direction:column;gap:var(--th-space-2);pointer-events:none}.toast{padding:var(--th-space-3) var(--th-space-4);background-color:var(--th-neutral-900);color:var(--th-color-text-inverse);border-radius:var(--th-radius-lg);font-size:var(--th-text-sm);box-shadow:var(--th-shadow-lg);animation:toast-in var(--th-duration-slow) var(--th-ease-enter)}.toast.toast-error{background-color:var(--th-error)}.toast.toast-success{background-color:var(--th-success)}.toast--exit{opacity:0;transform:translateY(8px);transition:opacity var(--th-duration-slow) var(--th-ease-exit),transform var(--th-duration-slow) var(--th-ease-exit)}.modal-overlay{position:fixed;inset:0;z-index:var(--th-z-modal);background-color:var(--th-color-overlay);display:flex;align-items:flex-end;justify-content:center;padding:var(--th-space-4);padding-bottom:calc(var(--th-space-6) + env(safe-area-inset-bottom));animation:modal-in var(--th-duration-slow) var(--th-ease-enter)}@media(min-width:640px){.modal-overlay{align-items:center}}.modal-overlay.modal-exit{animation:modal-out var(--th-duration-base) var(--th-ease-exit) forwards}.modal-dialog{background:var(--th-color-surface-raised);border-radius:var(--th-radius-2xl);padding:var(--th-space-6);width:100%;max-width:400px;box-shadow:var(--th-shadow-xl);animation:dialog-in var(--th-duration-slow) var(--th-ease-enter)}.modal-title{font-family:var(--th-font-display);font-size:var(--th-text-xl);font-weight:var(--th-weight-bold);color:var(--th-color-text);margin-bottom:var(--th-space-2)}.modal-message{font-size:var(--th-text-sm);color:var(--th-color-text-secondary);line-height:var(--th-leading-relaxed);margin-bottom:var(--th-space-6)}.modal-actions{display:flex;gap:var(--th-space-3);justify-content:flex-end}.modal-btn{height:44px;padding:0 var(--th-space-5);border-radius:var(--th-radius-xl);font-family:var(--th-font-body);font-size:var(--th-text-sm);font-weight:var(--th-weight-semibold);cursor:pointer;transition:background-color var(--th-duration-base) var(--th-ease-standard),transform var(--th-duration-fast) var(--th-ease-standard);-webkit-tap-highlight-color:transparent}.modal-btn:active{transform:scale(.97)}.modal-btn-cancel{background:var(--th-color-surface);color:var(--th-color-text-secondary);border:1px solid var(--th-color-border)}.modal-btn-cancel:hover{background:var(--th-color-surface-muted);color:var(--th-color-text)}.modal-btn-confirm{background:var(--th-color-primary);color:var(--th-color-primary-text);border:none;box-shadow:var(--th-shadow-sm)}.modal-btn-confirm:hover{background:var(--th-color-primary-hover)}.modal-btn-danger{background:var(--th-error)}.modal-btn-danger:hover{background:#9b3c35}.collection-pick-list{display:flex;flex-direction:column;gap:var(--th-space-2);margin-bottom:var(--th-space-5);max-height:280px;overflow-y:auto}.collection-pick-item{display:flex;align-items:center;justify-content:space-between;padding:var(--th-space-3) var(--th-space-4);border-radius:var(--th-radius-xl);border:1px solid var(--th-color-border);background:var(--th-color-surface);cursor:pointer;text-align:left;transition:background-color var(--th-duration-base) var(--th-ease-standard),border-color var(--th-duration-base) var(--th-ease-standard);-webkit-tap-highlight-color:transparent}.collection-pick-item:hover{background:var(--th-color-surface-muted);border-color:var(--th-color-primary)}.collection-pick-item:disabled{opacity:.5;cursor:not-allowed}.collection-pick-name{font-size:var(--th-text-sm);font-weight:var(--th-weight-semibold);color:var(--th-color-text)}.collection-pick-count{font-size:var(--th-text-xs);color:var(--th-color-text-secondary)}.hub-page{background:var(--th-color-bg)}.hub-topbar{flex-shrink:0;height:58px;background:var(--th-color-surface-raised);border-bottom:1px solid var(--th-color-border-subtle);z-index:var(--th-z-sticky)}.hub-topbar-inner{height:100%;display:flex;align-items:center;padding:0 var(--th-space-4);gap:var(--th-space-3)}.hub-topbar-brand{display:flex;align-items:center;gap:var(--th-space-2);min-width:0}.hub-topbar-logo{width:32px;height:32px;border-radius:var(--th-radius-md);background:var(--th-color-primary);display:flex;align-items:center;justify-content:center;font-family:var(--th-font-display);font-size:var(--th-text-base);font-weight:var(--th-weight-bold);font-style:italic;color:var(--th-color-primary-text);flex-shrink:0;overflow:hidden}.hub-topbar-logo--has-img{background:transparent}.hub-topbar-logo-img{width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block}.hub-topbar-name{font-size:var(--th-text-sm);font-weight:var(--th-weight-semibold);color:var(--th-color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hub-topbar-actions{display:flex;align-items:center;gap:var(--th-space-1);flex-shrink:0}.hub-topbar-btn{position:relative;width:40px;height:40px;border-radius:var(--th-radius-full);display:flex;align-items:center;justify-content:center;color:var(--th-color-text-secondary);transition:background-color var(--th-duration-base) var(--th-ease-standard),color var(--th-duration-base) var(--th-ease-standard);-webkit-tap-highlight-color:transparent;text-decoration:none}.hub-topbar-btn:hover{background:var(--th-color-surface);color:var(--th-color-text)}.hub-topbar-badge{position:absolute;top:4px;right:4px;min-width:16px;height:16px;padding:0 4px;background:var(--th-error);color:#fff;border-radius:var(--th-radius-full);font-size:10px;font-weight:var(--th-weight-bold);display:flex;align-items:center;justify-content:center;line-height:1;pointer-events:none}.hub-filter-badge{position:absolute;top:4px;right:4px;min-width:16px;height:16px;padding:0 4px;background:var(--th-color-primary);color:var(--th-color-primary-text);border-radius:var(--th-radius-full);font-size:10px;font-weight:var(--th-weight-bold);display:flex;align-items:center;justify-content:center;line-height:1;pointer-events:none}.hub-topbar-avatar{overflow:hidden;background:var(--th-color-surface)}.hub-avatar-img{width:100%;height:100%;object-fit:cover;border-radius:inherit}.hub-avatar-initials{font-size:var(--th-text-sm);font-weight:var(--th-weight-semibold);color:var(--th-color-primary)}.hub-content{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}.hub-bottom-nav{flex-shrink:0;height:calc(64px + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:var(--th-color-surface-raised);border-top:1px solid var(--th-color-border-subtle);display:flex;align-items:stretch;z-index:var(--th-z-sticky)}.hub-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--th-color-text-muted);text-decoration:none;font-size:10px;font-weight:var(--th-weight-medium);letter-spacing:var(--th-tracking-wide);transition:color var(--th-duration-base) var(--th-ease-standard);-webkit-tap-highlight-color:transparent;padding-top:var(--th-space-2)}.hub-nav-item:hover{color:var(--th-color-text-secondary)}.hub-nav-item.active{color:var(--th-color-primary)}.hub-nav-icon{display:flex;align-items:center;justify-content:center}.hub-nav-label{line-height:1}.hub-topbar-nav{display:none}@media(min-width:768px){.hub-bottom-nav{display:none}.hub-topbar{height:64px}.hub-topbar-nav{display:flex;align-items:center;gap:var(--th-space-1)}.hub-topbar-nav-item{display:flex;align-items:center;gap:var(--th-space-2);height:36px;padding:0 var(--th-space-3);border-radius:var(--th-radius-md);font-size:var(--th-text-sm);font-weight:var(--th-weight-medium);color:var(--th-color-text-secondary);text-decoration:none;transition:background var(--th-duration-fast) var(--th-ease-standard),color var(--th-duration-fast) var(--th-ease-standard);-webkit-tap-highlight-color:transparent}.hub-topbar-nav-item:hover{background:var(--th-color-surface);color:var(--th-color-text);text-decoration:none}.hub-topbar-nav-item.active{background:var(--th-color-primary-subtle);color:var(--th-color-primary)}}.hub-body{flex:1;position:relative;display:flex;min-height:0}.hub-sidebar{display:none}.hub-topbar-search{flex:1;min-width:0;display:flex;align-items:center;gap:var(--th-space-2);background:var(--th-color-surface);border:1px solid var(--th-color-border-subtle);border-radius:var(--th-radius-full);padding:0 var(--th-space-3);height:36px;cursor:text;transition:border-color var(--th-duration-fast) var(--th-ease-standard)}.hub-topbar-search:focus-within{border-color:var(--th-color-primary)}.hub-topbar-search svg{flex-shrink:0;color:var(--th-color-text-muted)}.hub-topbar-search-input{flex:1;border:none;background:transparent;font-size:var(--th-text-sm);color:var(--th-color-text);outline:none;min-width:0}.hub-topbar-search-input::placeholder{color:var(--th-color-text-muted)}.hub-topbar-add{position:relative;flex-shrink:0}.hub-topbar-add--hidden{display:none}.hub-topbar-add-btn{height:36px;border-radius:var(--th-radius-full);background:var(--th-color-primary);color:var(--th-color-primary-text);border:none;display:flex;align-items:center;justify-content:center;gap:var(--th-space-1);padding:0 var(--th-space-3) 0 var(--th-space-2);cursor:pointer;font-size:var(--th-text-sm);font-weight:var(--th-weight-medium);white-space:nowrap;transition:background var(--th-duration-fast) var(--th-ease-standard);-webkit-tap-highlight-color:transparent}.hub-topbar-add-btn:hover{background:var(--th-color-primary-hover)}.hub-add-dropdown{position:absolute;top:calc(100% + var(--th-space-2));right:0;background:var(--th-color-surface-raised);border:1px solid var(--th-color-border);border-radius:var(--th-radius-lg);box-shadow:var(--th-shadow-lg);min-width:180px;z-index:var(--th-z-dropdown);overflow:hidden;display:none}.hub-add-dropdown.open{display:block}.hub-topbar-add--direct .hub-add-dropdown{display:none!important}.hub-add-dropdown-item{display:flex;align-items:center;gap:var(--th-space-3);padding:var(--th-space-3) var(--th-space-4);text-decoration:none;color:var(--th-color-text);font-size:var(--th-text-sm);font-weight:var(--th-weight-medium);transition:background var(--th-duration-fast) var(--th-ease-standard);-webkit-tap-highlight-color:transparent}.hub-add-dropdown-item:hover{background:var(--th-color-surface);text-decoration:none;color:var(--th-color-text)}@media(max-width:767px){.hub-topbar-add,.hub-topbar--search-active .hub-topbar-brand,.hub-topbar--search-active .hub-topbar-actions{display:none}.hub-topbar--search-active .hub-topbar-search{flex:1}}@media(min-width:768px){.hub-topbar-nav{display:none!important}.hub-content{padding-left:56px}.hub-sidebar{display:flex;flex-direction:column;position:absolute;left:0;top:0;bottom:0;width:56px;background:var(--th-color-surface-raised);border-right:1px solid var(--th-color-border-subtle);z-index:var(--th-z-dropdown);overflow:hidden;transition:width var(--th-duration-slow) var(--th-ease-standard);padding-top:var(--th-space-3)}.hub-sidebar:hover{width:224px;box-shadow:4px 0 24px #1c141014}.hub-sidebar-nav{display:flex;flex-direction:column;gap:var(--th-space-1);padding:0 var(--th-space-2)}.hub-sidebar-item{display:flex;align-items:center;gap:var(--th-space-3);height:44px;padding:0 var(--th-space-2);border-radius:var(--th-radius-md);color:var(--th-color-text-muted);text-decoration:none;font-size:var(--th-text-sm);font-weight:var(--th-weight-medium);white-space:nowrap;transition:background var(--th-duration-fast) var(--th-ease-standard),color var(--th-duration-fast) var(--th-ease-standard);flex-shrink:0}.hub-sidebar-item:hover{background:var(--th-color-surface);color:var(--th-color-text);text-decoration:none}.hub-sidebar-item.active{background:var(--th-color-primary-subtle);color:var(--th-color-primary)}.hub-sidebar-icon{flex-shrink:0;width:24px;display:flex;align-items:center;justify-content:center}.hub-sidebar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.resource-card{display:block;background:var(--th-color-surface-raised);border:1px solid var(--th-color-border-subtle);border-radius:var(--th-radius-lg);padding:var(--th-space-4);text-decoration:none;color:inherit;transition:box-shadow var(--th-duration-base) var(--th-ease-standard),border-color var(--th-duration-base) var(--th-ease-standard),transform var(--th-duration-fast) var(--th-ease-standard);-webkit-tap-highlight-color:transparent}.resource-card:hover{box-shadow:var(--th-shadow-md);border-color:var(--th-color-border);text-decoration:none}.resource-card:active{transform:scale(.99)}.rc-header{margin-bottom:var(--th-space-2)}.rc-type-badge{display:inline-flex;align-items:center;gap:var(--th-space-1);font-size:var(--th-text-xs);font-weight:var(--th-weight-semibold);letter-spacing:var(--th-tracking-wide);padding:2px var(--th-space-2);border-radius:var(--th-radius-sm);background:var(--th-color-surface);color:var(--th-color-text-secondary)}.rc-type-youtube{background:#fef2f2;color:#dc2626}.rc-type-image{background:var(--th-terra-50);color:var(--th-terra-600)}.rc-type-link{background:var(--th-teal-50);color:var(--th-teal-600)}.rc-title{font-family:var(--th-font-display);font-size:var(--th-text-base);font-weight:var(--th-weight-semibold);color:var(--th-color-text);line-height:var(--th-leading-snug);margin-bottom:var(--th-space-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.rc-tags{display:flex;flex-wrap:wrap;gap:var(--th-space-1);margin-bottom:var(--th-space-3)}.rc-tag{font-size:var(--th-text-xs);padding:2px var(--th-space-2);background:var(--th-color-surface);border-radius:var(--th-radius-full);color:var(--th-color-text-muted);border:1px solid var(--th-color-border-subtle)}.rc-meta{display:flex;align-items:center;gap:var(--th-space-2);margin-bottom:var(--th-space-3)}.rc-avatar{width:20px;height:20px;border-radius:var(--th-radius-full);object-fit:cover;flex-shrink:0}.rc-avatar-fallback{display:inline-flex;align-items:center;justify-content:center;background:var(--th-teal-100);color:var(--th-teal-700);font-size:10px;font-weight:var(--th-weight-bold);flex-shrink:0}.rc-author{font-size:var(--th-text-xs);font-weight:var(--th-weight-medium);color:var(--th-color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.rc-sep,.rc-date{font-size:var(--th-text-xs);color:var(--th-color-text-muted);white-space:nowrap}.rc-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--th-space-2)}.rc-stars{display:flex;align-items:center;gap:1px}.rc-star{color:var(--th-color-border);display:flex}.rc-star.rc-star-filled{color:var(--th-amber-400)}.rc-stats{display:flex;align-items:center;gap:var(--th-space-3)}.rc-stat{display:flex;align-items:center;gap:var(--th-space-1);font-size:var(--th-text-xs);color:var(--th-color-text-muted)}.sticker{display:inline-block;cursor:default;filter:drop-shadow(0 6px 18px rgba(28,20,16,.22));transition:transform .3s var(--th-ease-standard),filter .3s var(--th-ease-standard)}.sticker svg{overflow:visible;display:block}.sticker:hover{filter:drop-shadow(0 14px 32px rgba(28,20,16,.3));transform:translateY(-8px) scale(1.07) rotate(0)!important}.sticker--acacia{transform:rotate(-3deg)}.sticker--bogolan{transform:rotate(2.5deg)}.sticker--hub{transform:rotate(-1.5deg)}.sticker--feuille{transform:rotate(3.5deg)}.sticker--soleil{transform:rotate(-2deg)}.sticker--sm svg{width:80px;height:auto}.sticker--md svg{width:120px;height:auto}.sticker--lg svg{width:160px;height:auto}.stickers-showcase{display:flex;flex-wrap:wrap;gap:32px;align-items:center;justify-content:center;padding:40px 24px;background:var(--th-cream-300);border-radius:var(--th-radius-2xl);border:1px solid var(--th-cream-400)}.sticker-float{position:absolute;pointer-events:none;user-select:none}.auth-page{background:var(--th-color-bg);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.auth-inner{min-height:100%;display:flex;flex-direction:column;padding:var(--th-space-6);padding-top:calc(var(--th-space-6) + env(safe-area-inset-top,0px));padding-bottom:calc(var(--th-space-8) + env(safe-area-inset-bottom,0px));max-width:var(--th-container-sm);margin:0 auto;width:100%;box-sizing:border-box}.auth-back{display:inline-flex;align-items:center;gap:var(--th-space-1);font-size:var(--th-text-sm);font-weight:var(--th-weight-medium);color:var(--th-color-text-secondary);background:none;border:none;cursor:pointer;padding:var(--th-space-1) 0;margin-bottom:var(--th-space-8);transition:color var(--th-duration-base) var(--th-ease-standard);-webkit-tap-highlight-color:transparent}.auth-back:hover{color:var(--th-color-text)}.auth-header{margin-bottom:var(--th-space-10)}.auth-header h1{font-family:var(--th-font-display);font-size:var(--th-text-4xl);font-weight:var(--th-weight-bold);letter-spacing:var(--th-tracking-tight);line-height:var(--th-leading-snug);color:var(--th-color-text);margin-bottom:var(--th-space-2)}.auth-header p{font-size:var(--th-text-sm);color:var(--th-color-text-muted);line-height:var(--th-leading-normal)}.auth-form{flex:1;display:flex;flex-direction:column;gap:var(--th-space-5)}.auth-forgot{text-align:right;margin-top:calc(-1 * var(--th-space-2))}.auth-forgot a{font-size:var(--th-text-xs);color:var(--th-color-text-muted)}.auth-forgot a:hover{color:var(--th-color-text-brand)}.auth-submit{margin-top:var(--th-space-2);display:flex;flex-direction:column;gap:var(--th-space-4)}.btn-auth{display:flex;align-items:center;justify-content:center;height:52px;width:100%;background:var(--th-color-primary);color:var(--th-color-primary-text);border:none;border-radius:var(--th-radius-xl);font-family:var(--th-font-body);font-size:var(--th-text-base);font-weight:var(--th-weight-semibold);letter-spacing:var(--th-tracking-wide);cursor:pointer;box-shadow:var(--th-shadow-md);transition:background var(--th-duration-base) var(--th-ease-standard),transform var(--th-duration-fast) var(--th-ease-standard),box-shadow var(--th-duration-base) var(--th-ease-standard);-webkit-tap-highlight-color:transparent}.btn-auth:hover{background:var(--th-color-primary-hover);box-shadow:var(--th-shadow-lg)}.btn-auth:active{transform:scale(.98)}.btn-auth:disabled{background:var(--th-color-surface-muted);color:var(--th-color-text-disabled);box-shadow:none;cursor:not-allowed;transform:none}.auth-error-banner{display:none;padding:var(--th-space-3) var(--th-space-4);background:var(--th-error-bg);border:1px solid var(--th-error);border-radius:var(--th-radius-lg);font-size:var(--th-text-sm);color:var(--th-error)}.auth-error-banner.visible{display:block}.password-hint{font-size:var(--th-text-xs);color:var(--th-color-text-muted);margin-top:calc(-1 * var(--th-space-1))}.auth-terms{font-size:var(--th-text-xs);color:var(--th-color-text-muted);text-align:center;line-height:var(--th-leading-relaxed)}.auth-terms a{color:var(--th-color-text-brand)}.auth-footer{margin-top:var(--th-space-8);text-align:center;font-size:var(--th-text-sm);color:var(--th-color-text-muted)}.auth-footer a{color:var(--th-color-text-brand);font-weight:var(--th-weight-medium)}.spinner{display:inline-block;width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle;margin-right:var(--th-space-2)}.onboarding{position:absolute;inset:0;display:flex;flex-direction:column;overflow:hidden;font-family:var(--th-font-body)}.ob-slides{position:relative;flex:1;overflow:hidden}.ob-slide{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:env(safe-area-inset-top,0px);transition:transform var(--th-duration-slower) var(--th-ease-standard),opacity var(--th-duration-slower) var(--th-ease-standard)}.ob-slide--welcome{background-color:var(--th-cream-100)}.ob-slide--hubs{background-color:var(--th-teal-50)}.ob-slide--resources{background-color:var(--th-terra-50)}.ob-slide[data-state=active]{transform:translate(0);opacity:1}.ob-slide[data-state=prev]{transform:translate(-100%);opacity:0}.ob-slide[data-state=next]{transform:translate(100%);opacity:0}.ob-illustration{width:100%;flex:0 0 58%;display:flex;align-items:center;justify-content:center;padding:var(--th-space-8) var(--th-space-6) var(--th-space-4)}.ob-illustration svg{width:100%;max-width:280px;height:auto}.ob-text{flex:1;padding:0 var(--th-space-8);display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--th-space-3)}.ob-eyebrow{font-size:var(--th-text-xs);font-weight:var(--th-weight-semibold);letter-spacing:var(--th-tracking-wider);text-transform:uppercase;color:var(--th-color-text-muted)}.ob-title{font-family:var(--th-font-display);font-size:clamp(1.5rem,6vw,2rem);font-weight:var(--th-weight-bold);line-height:var(--th-leading-snug);letter-spacing:var(--th-tracking-tight);color:var(--th-color-text)}.ob-body{font-size:var(--th-text-sm);line-height:var(--th-leading-relaxed);color:var(--th-color-text-secondary);max-width:32ch}.ob-controls{padding:var(--th-space-5) var(--th-space-6);padding-bottom:calc(var(--th-space-8) + env(safe-area-inset-bottom,0px));display:flex;align-items:center;justify-content:space-between;background:transparent;gap:var(--th-space-4);transition:opacity var(--th-duration-slow) var(--th-ease-standard)}.ob-controls--hidden{opacity:0;pointer-events:none}.ob-dots{display:flex;gap:var(--th-space-2);align-items:center}.ob-dot{width:8px;height:8px;border-radius:var(--th-radius-full);background:var(--th-color-border);transition:width var(--th-duration-slow) var(--th-ease-standard),background var(--th-duration-slow) var(--th-ease-standard)}.ob-dot.active{width:24px;background:var(--th-color-primary)}.ob-skip{font-size:var(--th-text-sm);font-weight:var(--th-weight-medium);color:var(--th-color-text-muted);padding:var(--th-space-2) var(--th-space-3);border-radius:var(--th-radius-md);transition:color var(--th-duration-base) var(--th-ease-standard);background:none;border:none;cursor:pointer}.ob-skip:hover{color:var(--th-color-text-secondary)}.ob-skip--hidden{visibility:hidden}.ob-next{display:inline-flex;align-items:center;gap:var(--th-space-2);height:48px;padding:0 var(--th-space-6);background:var(--th-color-primary);color:var(--th-color-primary-text);border-radius:var(--th-radius-full);font-size:var(--th-text-sm);font-weight:var(--th-weight-semibold);letter-spacing:var(--th-tracking-wide);border:none;cursor:pointer;box-shadow:var(--th-shadow-md);transition:background var(--th-duration-base) var(--th-ease-standard),transform var(--th-duration-fast) var(--th-ease-standard),box-shadow var(--th-duration-base) var(--th-ease-standard);-webkit-tap-highlight-color:transparent}.ob-next:hover{background:var(--th-color-primary-hover);box-shadow:var(--th-shadow-lg)}.ob-next:active{transform:scale(.97)}.ob-auth{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:var(--th-space-8) var(--th-space-6);padding-bottom:calc(var(--th-space-12) + env(safe-area-inset-bottom,0px));padding-top:env(safe-area-inset-top,0px);background:var(--th-color-bg);transition:transform var(--th-duration-slower) var(--th-ease-standard),opacity var(--th-duration-slower) var(--th-ease-standard)}.ob-auth[data-state=next]{transform:translate(100%);opacity:0}.ob-auth[data-state=active]{transform:translate(0);opacity:1}.ob-auth-brand{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--th-space-4);text-align:center}.ob-auth-logo{width:72px;height:72px;border-radius:var(--th-radius-2xl);background:var(--th-color-primary);display:flex;align-items:center;justify-content:center;box-shadow:var(--th-shadow-lg);margin-bottom:var(--th-space-2)}.ob-auth-logo svg{width:40px;height:40px}.ob-auth-title{font-family:var(--th-font-display);font-size:clamp(2rem,8vw,2.5rem);font-weight:var(--th-weight-bold);letter-spacing:var(--th-tracking-tight);color:var(--th-color-text)}.ob-auth-subtitle{font-size:var(--th-text-sm);color:var(--th-color-text-muted);max-width:28ch;line-height:var(--th-leading-relaxed)}.ob-auth-actions{width:100%;max-width:400px;display:flex;flex-direction:column;gap:var(--th-space-3)}.ob-auth-divider{display:flex;align-items:center;gap:var(--th-space-3);color:var(--th-color-text-muted);font-size:var(--th-text-xs)}.ob-auth-divider:before,.ob-auth-divider:after{content:"";flex:1;height:1px;background:var(--th-color-border-subtle)}.ob-auth-key-link{text-align:center;font-size:var(--th-text-sm);color:var(--th-color-text-muted);padding:var(--th-space-2)}.ob-auth-key-link a{color:var(--th-color-text-brand);font-weight:var(--th-weight-medium)}.ob-auth-key-link a:hover{text-decoration:underline}.ob-auth-deco{position:absolute;top:0;left:0;right:0;height:40%;overflow:hidden;pointer-events:none;z-index:0}.ob-auth-deco svg{width:100%;height:100%}.ob-auth-brand,.ob-auth-actions{position:relative;z-index:1}.hub-page-content{padding:var(--th-space-4)}.hub-section-title{font-family:var(--th-font-display);font-size:var(--th-text-xl);font-weight:var(--th-weight-semibold);color:var(--th-color-text);margin:0 0 var(--th-space-4) 0}.hub-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--th-space-3);padding:var(--th-space-12) var(--th-space-4);text-align:center;color:var(--th-color-text-muted)}.hub-empty-state svg{opacity:.4}.hub-empty-state p{font-size:var(--th-text-sm);margin:0}.feed-list{display:flex;flex-direction:column;gap:0}.feed-item{border-bottom:1px solid var(--th-color-border-subtle);padding:var(--th-space-4) 0}.feed-item:last-child{border-bottom:none}.feed-item-header{display:flex;align-items:center;gap:var(--th-space-2);margin-bottom:var(--th-space-2)}.feed-item-avatar{width:36px;height:36px;border-radius:var(--th-radius-full);object-fit:cover;flex-shrink:0}.feed-item-avatar-fallback{width:36px;height:36px;border-radius:var(--th-radius-full);background:var(--th-color-primary-subtle);color:var(--th-color-text-brand);display:flex;align-items:center;justify-content:center;font-size:var(--th-text-sm);font-weight:var(--th-weight-semibold);flex-shrink:0}.feed-item-info{display:flex;flex-direction:column;gap:2px}.feed-item-author{font-size:var(--th-text-sm);font-weight:var(--th-weight-semibold);color:var(--th-color-text)}.feed-item-date{font-size:var(--th-text-xs);color:var(--th-color-text-muted)}.feed-item-body{font-size:var(--th-text-sm);color:var(--th-color-text-secondary)}.feed-item-body a{color:var(--th-color-text-brand);text-decoration:none;font-weight:var(--th-weight-medium)}.feed-item-body a:hover{text-decoration:underline}.feed-welcome{position:relative;background:var(--th-color-surface);border:1px solid var(--th-color-border);border-radius:var(--th-radius-lg);padding:var(--th-space-5);margin-top:var(--th-space-5);margin-bottom:var(--th-space-5);overflow:visible}.feed-welcome-sticker{position:absolute;top:-20px;right:-10px;pointer-events:none;user-select:none}.feed-welcome-title{font-family:var(--th-font-display);font-size:var(--th-text-lg);font-weight:var(--th-weight-semibold);color:var(--th-color-text);margin:0 0 var(--th-space-2) 0}.feed-welcome-text{font-size:var(--th-text-sm);color:var(--th-color-text-secondary);margin:0;line-height:var(--th-leading-relaxed)}.resources-toolbar{display:flex;align-items:center;justify-content:space-between;padding:var(--th-space-3) var(--th-space-4);border-bottom:1px solid var(--th-color-border-subtle)}.resources-count{font-size:var(--th-text-sm);color:var(--th-color-text-muted)}.search-bar{padding:var(--th-space-3) var(--th-space-4) 0}.search-input-wrap{display:flex;align-items:center;gap:var(--th-space-2);background:var(--th-color-surface);border:1px solid var(--th-color-border);border-radius:var(--th-radius-full);padding:var(--th-space-2) var(--th-space-3);transition:border-color var(--th-duration-fast) var(--th-ease-standard)}.search-input-wrap:focus-within{border-color:var(--th-color-primary)}.search-input-wrap svg{flex-shrink:0;color:var(--th-color-text-muted)}.search-input{flex:1;border:none;background:transparent;font-size:var(--th-text-sm);color:var(--th-color-text);outline:none;min-width:0}.search-input::placeholder{color:var(--th-color-text-muted)}.filter-bar{display:flex;gap:var(--th-space-2);padding:var(--th-space-3) var(--th-space-4);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;position:sticky;top:0;z-index:10;background:var(--th-color-bg);border-bottom:1px solid var(--th-color-border-subtle)}.filter-bar::-webkit-scrollbar{display:none}.filter-chip{flex-shrink:0;font-size:var(--th-text-sm);padding:var(--th-space-1) var(--th-space-3);border-radius:var(--th-radius-full);border:1px solid var(--th-color-border);background:transparent;color:var(--th-color-text-muted);cursor:pointer;white-space:nowrap;transition:background var(--th-duration-fast) var(--th-ease-standard),color var(--th-duration-fast) var(--th-ease-standard),border-color var(--th-duration-fast) var(--th-ease-standard)}.filter-chip:hover{background:var(--th-color-surface);color:var(--th-color-text)}.filter-chip.active{background:var(--th-color-primary);color:var(--th-color-primary-text);border-color:var(--th-color-primary)}.resources-grid{display:grid;grid-template-columns:1fr;gap:var(--th-space-3);padding:var(--th-space-4)}.hub-fab-wrap{position:fixed;bottom:calc(64px + var(--th-space-4));right:var(--th-space-4);z-index:var(--th-z-sticky);display:flex;flex-direction:column;align-items:flex-end;gap:var(--th-space-2)}.hub-fab-wrap--hidden{display:none}.hub-fab-btn{width:56px;height:56px;border-radius:var(--th-radius-full);background:var(--th-color-primary);color:var(--th-color-primary-text);border:none;display:flex;align-items:center;justify-content:center;box-shadow:var(--th-shadow-lg);cursor:pointer;flex-shrink:0;transition:background var(--th-duration-fast) var(--th-ease-standard),box-shadow var(--th-duration-fast) var(--th-ease-standard),transform var(--th-duration-fast) var(--th-ease-standard);-webkit-tap-highlight-color:transparent}.hub-fab-btn:hover{background:var(--th-color-primary-hover);box-shadow:var(--th-shadow-xl);transform:scale(1.05)}.hub-fab-btn:active{transform:scale(.97)}.hub-fab-menu{background:var(--th-color-surface-raised);border:1px solid var(--th-color-border);border-radius:var(--th-radius-lg);box-shadow:var(--th-shadow-lg);overflow:hidden;display:flex;flex-direction:column;min-width:180px}.hub-fab-menu--hidden{display:none}.hub-fab-menu-item{display:flex;align-items:center;gap:var(--th-space-3);padding:var(--th-space-3) var(--th-space-4);text-decoration:none;color:var(--th-color-text);font-size:var(--th-text-sm);font-weight:var(--th-weight-medium);transition:background var(--th-duration-fast) var(--th-ease-standard);-webkit-tap-highlight-color:transparent}.hub-fab-menu-item:hover{background:var(--th-color-surface);text-decoration:none;color:var(--th-color-text)}.members-list{display:flex;flex-direction:column;gap:0}.member-item{display:flex;align-items:center;gap:var(--th-space-3);padding:var(--th-space-4);border-bottom:1px solid var(--th-color-border-subtle);cursor:pointer;transition:background var(--th-duration-fast) var(--th-ease-standard)}.member-item:last-child{border-bottom:none}.member-item:hover{background:var(--th-color-surface)}.member-avatar{width:44px;height:44px;border-radius:var(--th-radius-full);background:var(--th-color-surface);overflow:hidden;flex-shrink:0}.member-avatar-img{width:100%;height:100%;object-fit:cover}.member-avatar-fallback{width:100%;height:100%;background:var(--th-color-primary-subtle);color:var(--th-color-text-brand);font-weight:var(--th-weight-semibold);display:flex;align-items:center;justify-content:center;font-size:var(--th-text-sm)}.member-info{display:flex;flex-direction:column;gap:var(--th-space-1);flex:1;min-width:0}.member-name{font-size:var(--th-text-sm);font-weight:var(--th-weight-semibold);color:var(--th-color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.member-role{font-size:var(--th-text-xs);color:var(--th-color-text-muted)}.member-role-badge{display:inline-flex;align-items:center;font-size:var(--th-text-xs);padding:2px var(--th-space-2);border-radius:var(--th-radius-sm);font-weight:var(--th-weight-medium)}.role-hub-admin{background:var(--th-teal-50);color:var(--th-teal-600)}.role-professeur{background:var(--th-terra-50);color:var(--th-terra-600)}.role-eleve{background:var(--th-color-surface-muted);color:var(--th-color-text-secondary)}.role-parent{background:var(--th-amber-100);color:var(--th-amber-600)}.role-membre{background:var(--th-color-surface);color:var(--th-color-text-muted)}.collections-grid{display:grid;grid-template-columns:1fr;gap:var(--th-space-3);padding:var(--th-space-4)}.collection-card{display:flex;flex-direction:column;background:var(--th-color-surface-raised);border:1px solid var(--th-color-border);border-radius:var(--th-radius-lg);padding:var(--th-space-4);text-decoration:none;color:inherit;transition:box-shadow var(--th-duration-base) var(--th-ease-standard),border-color var(--th-duration-base) var(--th-ease-standard);min-height:120px}.collection-card:hover{box-shadow:var(--th-shadow-md);border-color:var(--th-color-border-brand)}.cc-title{font-family:var(--th-font-display);font-size:var(--th-text-base);font-weight:var(--th-weight-semibold);color:var(--th-color-text);margin:0 0 var(--th-space-2) 0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.cc-desc{font-size:var(--th-text-sm);color:var(--th-color-text-muted);margin:0 0 var(--th-space-3) 0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:var(--th-leading-normal)}.cc-meta{font-size:var(--th-text-xs);color:var(--th-color-text-muted);display:flex;gap:var(--th-space-2);align-items:center}.cc-footer{display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:var(--th-space-3)}.cc-private-badge{font-size:var(--th-text-xs);background:var(--th-color-surface-muted);color:var(--th-color-text-muted);border-radius:var(--th-radius-full);padding:2px var(--th-space-2)}.feed-item--clickable{cursor:pointer;border-radius:var(--th-radius-md);transition:background var(--th-duration-fast) var(--th-ease-standard)}.feed-item--clickable:hover{background:var(--th-color-surface)}.feed-item-body{padding-top:var(--th-space-2)}.feed-collection-preview{display:flex;align-items:center;justify-content:space-between;gap:var(--th-space-3);background:var(--th-color-surface);border:1px solid var(--th-color-border);border-radius:var(--th-radius-md);padding:var(--th-space-3) var(--th-space-4);text-decoration:none;color:inherit;transition:border-color var(--th-duration-fast) var(--th-ease-standard)}.feed-collection-preview:hover{border-color:var(--th-color-border-brand);text-decoration:none}.feed-collection-title{font-size:var(--th-text-sm);font-weight:var(--th-weight-semibold);color:var(--th-color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feed-collection-meta{font-size:var(--th-text-xs);color:var(--th-color-text-muted);white-space:nowrap;flex-shrink:0}.fp-overlay{display:none;position:fixed;inset:0;z-index:300;background:#00000073;align-items:flex-end;justify-content:center}.fp-overlay.open{display:flex}.fp{background:var(--th-color-surface-raised);width:100%;max-height:88vh;border-radius:var(--th-radius-xl) var(--th-radius-xl) 0 0;display:flex;flex-direction:column;overflow:hidden;animation:fp-slide-up .22s var(--th-ease-standard)}@keyframes fp-slide-up{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@media(min-width:768px){.fp-overlay{align-items:center}.fp{width:480px;max-height:78vh;border-radius:var(--th-radius-xl);animation:fp-pop-in .18s var(--th-ease-standard)}@keyframes fp-pop-in{0%{opacity:0;transform:scale(.96) translateY(-6px)}to{opacity:1;transform:scale(1) translateY(0)}}}.fp-header{display:flex;align-items:center;justify-content:space-between;padding:var(--th-space-4);border-bottom:1px solid var(--th-color-border-subtle);flex-shrink:0}.fp-title{font-size:var(--th-text-base);font-weight:var(--th-weight-semibold);color:var(--th-color-text)}.fp-close{background:none;border:none;cursor:pointer;color:var(--th-color-text-muted);width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--th-radius-md);transition:background var(--th-duration-fast) var(--th-ease-standard),color var(--th-duration-fast) var(--th-ease-standard)}.fp-close:hover{background:var(--th-color-surface);color:var(--th-color-text)}.fp-body{flex:1;overflow-y:auto;padding:var(--th-space-5) var(--th-space-4);display:flex;flex-direction:column;gap:var(--th-space-5)}.fp-section-label{font-size:var(--th-text-xs);font-weight:var(--th-weight-semibold);letter-spacing:.07em;text-transform:uppercase;color:var(--th-color-text-muted);margin:0 0 var(--th-space-2) 0}.fp-chips{display:flex;flex-wrap:wrap;gap:var(--th-space-2)}.fp-footer{display:flex;gap:var(--th-space-3);padding:var(--th-space-4);border-top:1px solid var(--th-color-border-subtle);flex-shrink:0}.fp-footer .btn{flex:1}.collection-fav-btn{background:none;border:none;cursor:pointer;color:var(--th-color-text-secondary);padding:var(--th-space-1);border-radius:var(--th-radius-md);transition:color var(--th-duration-base) var(--th-ease-standard)}.collection-fav-btn:hover,.collection-fav-btn.active{color:var(--th-color-primary)}@media(min-width:768px){.hub-fab-wrap{display:none}.resources-grid,.collections-grid{grid-template-columns:repeat(3,1fr)}}.resource-page{display:flex;flex-direction:column;overflow:hidden}.resource-topbar{height:58px;background:var(--th-color-surface-raised);border-bottom:1px solid var(--th-color-border-subtle);display:flex;align-items:center;gap:var(--th-space-2);padding:0 var(--th-space-3);flex-shrink:0;z-index:var(--th-z-sticky)}.resource-topbar-back{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--th-radius-full);background:transparent;border:none;color:var(--th-color-text-secondary);cursor:pointer;text-decoration:none;flex-shrink:0;transition:background var(--th-duration-fast) var(--th-ease-standard),color var(--th-duration-fast) var(--th-ease-standard)}.resource-topbar-back:hover{background:var(--th-color-surface);color:var(--th-color-text)}.resource-topbar-title{flex:1;font-size:var(--th-text-sm);font-weight:var(--th-weight-semibold);color:var(--th-color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.resource-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}.resource-inner{max-width:720px;margin:0 auto;padding:var(--th-space-5) var(--th-space-4)}.resource-detail{padding:var(--th-space-4);max-width:720px;margin:0 auto}.resource-detail-back{display:flex;align-items:center;gap:var(--th-space-2);font-size:var(--th-text-sm);color:var(--th-color-text-muted);text-decoration:none;margin-bottom:var(--th-space-4);transition:color var(--th-duration-fast) var(--th-ease-standard)}.resource-detail-back:hover{color:var(--th-color-text-brand)}.resource-detail-type{display:inline-flex;align-items:center;gap:var(--th-space-1);font-size:var(--th-text-xs);font-weight:var(--th-weight-medium);padding:3px var(--th-space-2);border-radius:var(--th-radius-sm);background:var(--th-color-surface);color:var(--th-color-text-secondary);margin-bottom:var(--th-space-3)}.resource-detail-title{font-family:var(--th-font-display);font-size:var(--th-text-2xl);font-weight:var(--th-weight-bold);color:var(--th-color-text);line-height:var(--th-leading-snug);margin:0 0 var(--th-space-4) 0}.resource-detail-meta{display:flex;flex-wrap:wrap;gap:var(--th-space-3);align-items:center;margin-bottom:var(--th-space-4)}.resource-detail-meta-item{display:flex;align-items:center;gap:var(--th-space-1);font-size:var(--th-text-xs);color:var(--th-color-text-muted)}.resource-detail-meta-author{text-decoration:none;transition:color var(--th-duration-fast) var(--th-ease-standard)}.resource-detail-meta-author:hover{color:var(--th-color-text-brand)}.resource-detail-actions{display:flex;gap:var(--th-space-2);padding:var(--th-space-3) 0;border-top:1px solid var(--th-color-border-subtle);border-bottom:1px solid var(--th-color-border-subtle);margin-bottom:var(--th-space-5)}.action-btn{display:flex;align-items:center;gap:var(--th-space-1);font-size:var(--th-text-sm);font-family:var(--th-font-body);padding:var(--th-space-2) var(--th-space-3);border-radius:var(--th-radius-md);border:none;background:transparent;color:var(--th-color-text-secondary);cursor:pointer;transition:background var(--th-duration-fast) var(--th-ease-standard),color var(--th-duration-fast) var(--th-ease-standard)}.action-btn:hover{background:var(--th-color-surface);color:var(--th-color-text)}.action-btn.active{background:var(--th-terra-50);color:var(--th-terra-500)}.resource-preview{background:var(--th-color-surface);border:1px solid var(--th-color-border);border-radius:var(--th-radius-xl);overflow:hidden;margin-bottom:var(--th-space-5)}.resource-preview-pdf{width:100%;height:400px;border:none;display:block}@media(min-width:640px){.resource-preview-pdf{height:600px}}.resource-preview-youtube{position:relative;width:100%;padding-bottom:56.25%;height:0}.resource-preview-youtube iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.resource-preview-image{width:100%;max-height:500px;object-fit:contain;display:block;margin:0 auto}.resource-preview-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--th-space-2)}.resource-preview-gallery-img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--th-radius-md)}.resource-preview-link{display:flex;flex-direction:column;align-items:center;gap:var(--th-space-3);padding:var(--th-space-8);text-align:center}.resource-preview-text{padding:var(--th-space-4);font-family:var(--th-font-mono);font-size:var(--th-text-sm);white-space:pre-wrap;overflow-x:auto;line-height:var(--th-leading-relaxed)}.resource-preview-unavailable{display:flex;flex-direction:column;align-items:center;gap:var(--th-space-3);padding:var(--th-space-8);text-align:center;color:var(--th-color-text-muted);font-size:var(--th-text-sm)}.rating-section{border-top:1px solid var(--th-color-border-subtle);padding:var(--th-space-5) 0;margin-bottom:var(--th-space-5)}.rating-title{font-size:var(--th-text-sm);font-weight:var(--th-weight-semibold);color:var(--th-color-text);margin-bottom:var(--th-space-3)}.star-rating{display:flex;gap:var(--th-space-1)}.star-btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--th-radius-full);border:none;background:transparent;cursor:pointer;color:var(--th-color-text-muted);transition:color var(--th-duration-fast) var(--th-ease-standard),background var(--th-duration-fast) var(--th-ease-standard)}.star-btn:hover{background:var(--th-color-surface)}.star-btn.filled{color:var(--th-amber-400)}.comments-section{border-top:1px solid var(--th-color-border-subtle);padding:var(--th-space-5) 0}.comment-form{display:flex;gap:var(--th-space-2);margin-bottom:var(--th-space-5);align-items:flex-start}.comment-textarea{width:100%;padding:var(--th-space-3);border:1px solid var(--th-color-border);border-radius:var(--th-radius-lg);font-family:var(--th-font-body);font-size:var(--th-text-sm);color:var(--th-color-text);background:var(--th-color-surface-raised);resize:vertical;min-height:80px;transition:border-color var(--th-duration-fast) var(--th-ease-standard),box-shadow var(--th-duration-fast) var(--th-ease-standard)}.comment-textarea:focus{outline:none;border-color:var(--th-color-primary);box-shadow:0 0 0 3px var(--th-color-primary-subtle)}.comment-list{display:flex;flex-direction:column;gap:var(--th-space-4)}.comment-item{display:flex;gap:var(--th-space-3)}.comment-avatar{width:32px;height:32px;border-radius:var(--th-radius-full);object-fit:cover;flex-shrink:0}.comment-avatar-fallback{width:32px;height:32px;border-radius:var(--th-radius-full);background:var(--th-color-primary-subtle);color:var(--th-color-text-brand);font-size:var(--th-text-xs);font-weight:var(--th-weight-semibold);display:flex;align-items:center;justify-content:center;flex-shrink:0}.comment-body{display:flex;flex-direction:column;gap:var(--th-space-1);flex:1;min-width:0}.comment-author{font-size:var(--th-text-xs);font-weight:var(--th-weight-semibold);color:var(--th-color-text)}.comment-text{font-size:var(--th-text-sm);color:var(--th-color-text-secondary);line-height:var(--th-leading-relaxed)}.comment-time{font-size:var(--th-text-xs);color:var(--th-color-text-muted)}.comment-delete{background:transparent;border:none;font-size:var(--th-text-xs);color:var(--th-error);cursor:pointer;padding:var(--th-space-1) var(--th-space-2);border-radius:var(--th-radius-sm);transition:background var(--th-duration-fast) var(--th-ease-standard);align-self:flex-start}.comment-delete:hover{background:var(--th-error-bg)}.resource-editor{padding:var(--th-space-4);max-width:640px;margin:0 auto}.resource-editor-title{font-family:var(--th-font-display);font-size:var(--th-text-2xl);font-weight:var(--th-weight-bold);color:var(--th-color-text);margin:0 0 var(--th-space-6) 0}.type-selector{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--th-space-2);margin-bottom:var(--th-space-6)}.type-selector--2col{grid-template-columns:repeat(2,1fr)}.type-option{display:flex;flex-direction:column;align-items:center;gap:var(--th-space-2);padding:var(--th-space-3);border:1px solid var(--th-color-border);border-radius:var(--th-radius-lg);cursor:pointer;text-align:center;font-size:var(--th-text-sm);background:transparent;color:var(--th-color-text-secondary);font-family:var(--th-font-body);transition:border-color var(--th-duration-fast) var(--th-ease-standard),background var(--th-duration-fast) var(--th-ease-standard),color var(--th-duration-fast) var(--th-ease-standard)}.type-option:hover{background:var(--th-color-surface);border-color:var(--th-color-border-brand)}.type-option.selected{border-color:var(--th-color-primary);background:var(--th-color-primary-subtle);color:var(--th-color-text-brand)}.type-option-icon{margin-bottom:var(--th-space-1);color:inherit}.type-option-label{font-size:var(--th-text-xs);font-weight:var(--th-weight-semibold)}.editor-file-zone{border:2px dashed var(--th-color-border);border-radius:var(--th-radius-xl);padding:var(--th-space-8) var(--th-space-4);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--th-space-3);min-height:140px;color:var(--th-color-text-secondary);cursor:pointer;transition:border-color var(--th-duration-fast) var(--th-ease-standard),background var(--th-duration-fast) var(--th-ease-standard)}.editor-file-zone:hover,.editor-file-zone.dragover{border-color:var(--th-color-primary);background:var(--th-color-primary-subtle)}.editor-file-zone p{font-size:var(--th-text-sm);margin:0;text-align:center}.editor-form{display:flex;flex-direction:column;gap:var(--th-space-6)}.collection-detail-page{display:flex;flex-direction:column;overflow:hidden}.collection-topbar{height:58px;background:var(--th-color-surface-raised);border-bottom:1px solid var(--th-color-border-subtle);display:flex;align-items:center;gap:var(--th-space-2);padding:0 var(--th-space-3);flex-shrink:0;z-index:var(--th-z-sticky)}.collection-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}.collection-inner{max-width:680px;margin:0 auto;padding:var(--th-space-5) var(--th-space-4)}.collection-header{padding-bottom:var(--th-space-5);border-bottom:1px solid var(--th-color-border-subtle);margin-bottom:var(--th-space-5)}.collection-title{font-family:var(--th-font-display);font-size:var(--th-text-2xl);font-weight:var(--th-weight-bold);color:var(--th-color-text);margin:0 0 var(--th-space-3) 0}.collection-description{font-size:var(--th-text-sm);color:var(--th-color-text-secondary);line-height:var(--th-leading-relaxed);margin:var(--th-space-2) 0 0 0}.collection-meta{display:flex;flex-wrap:wrap;gap:var(--th-space-3);font-size:var(--th-text-xs);color:var(--th-color-text-muted);margin-top:var(--th-space-3);align-items:center}.collection-resource-list{display:flex;flex-direction:column;gap:var(--th-space-2);margin-top:var(--th-space-4)}.join-hub-page{display:flex;flex-direction:column;min-height:100%;background:var(--th-color-bg)}.join-hub-inner{max-width:480px;margin:0 auto;padding:var(--th-space-6) var(--th-space-4);display:flex;flex-direction:column;gap:var(--th-space-6);width:100%}.join-hub-deco{display:flex;justify-content:center;padding-bottom:var(--th-space-2)}.join-steps{display:flex;align-items:center;gap:0;margin-bottom:var(--th-space-2)}.join-step{display:flex;align-items:center;flex:1}.join-step-dot{width:28px;height:28px;border:1px solid var(--th-color-border);border-radius:var(--th-radius-full);display:flex;align-items:center;justify-content:center;font-size:var(--th-text-sm);font-weight:var(--th-weight-medium);color:var(--th-color-text-muted);background:var(--th-color-surface-raised);flex-shrink:0;transition:background var(--th-duration-base) var(--th-ease-standard),color var(--th-duration-base) var(--th-ease-standard),border-color var(--th-duration-base) var(--th-ease-standard)}.join-step.active .join-step-dot{background:var(--th-color-primary);color:var(--th-color-primary-text);border-color:var(--th-color-primary)}.join-step.done .join-step-dot{background:var(--th-success-bg);color:var(--th-success);border-color:var(--th-success)}.join-step-line{flex:1;height:1px;background:var(--th-color-surface-muted);transition:background var(--th-duration-base) var(--th-ease-standard)}.join-step.done .join-step-line{background:var(--th-success)}.join-key-input{font-family:var(--th-font-mono);letter-spacing:var(--th-tracking-wider);text-transform:uppercase}.join-payment-area{background:var(--th-color-surface);border:1px solid var(--th-color-border);border-radius:var(--th-radius-xl);padding:var(--th-space-6);display:flex;flex-direction:column;gap:var(--th-space-4)}.join-payment-upload{border:2px dashed var(--th-color-border);border-radius:var(--th-radius-lg);padding:var(--th-space-6);text-align:center;cursor:pointer;transition:border-color var(--th-duration-fast) var(--th-ease-standard),background var(--th-duration-fast) var(--th-ease-standard)}.join-payment-upload:hover{border-color:var(--th-color-primary);background:var(--th-color-primary-subtle)}.join-payment-upload p{font-size:var(--th-text-sm);color:var(--th-color-text-secondary);margin:var(--th-space-2) 0 0 0}.join-pending-notice{background:var(--th-warning-bg);border:1px solid var(--th-warning);border-radius:var(--th-radius-lg);padding:var(--th-space-4);font-size:var(--th-text-sm);color:var(--th-warning);line-height:var(--th-leading-relaxed)}.create-hub-form{display:flex;flex-direction:column;gap:var(--th-space-5)}.create-hub-textarea{resize:vertical;min-height:96px}.create-hub-price-wrap{display:flex;align-items:center;gap:var(--th-space-3)}.create-hub-price-wrap .input{flex:1}.create-hub-price-unit{font-size:var(--th-text-sm);color:var(--th-color-text-muted);white-space:nowrap}.field-required{color:var(--th-terra-500)}.notifications-topbar{height:58px;background:var(--th-color-surface-raised);border-bottom:1px solid var(--th-color-border-subtle);display:flex;align-items:center;justify-content:space-between;padding:0 var(--th-space-4);flex-shrink:0;z-index:var(--th-z-sticky)}.notifications-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}.notifications-page-content{max-width:680px;margin:0 auto;padding:var(--th-space-4)}.notifications-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--th-space-4)}.notif-list{display:flex;flex-direction:column;gap:var(--th-space-1)}.notif-item{display:flex;gap:var(--th-space-3);padding:var(--th-space-4);border-radius:var(--th-radius-lg);cursor:pointer;transition:background var(--th-duration-fast) var(--th-ease-standard);align-items:flex-start;text-decoration:none;color:inherit}.notif-item:hover{background:var(--th-color-surface)}.notif-item--unread{border-left:3px solid var(--th-color-primary);padding-left:calc(var(--th-space-4) - 3px)}.notif-item-icon{width:44px;height:44px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:var(--th-radius-full);background:var(--th-color-surface)}.notif-item-content{flex:1;display:flex;flex-direction:column;gap:var(--th-space-1);min-width:0}.notif-item-title{font-size:var(--th-text-sm);font-weight:var(--th-weight-semibold);color:var(--th-color-text)}.notif-item-body{font-size:var(--th-text-xs);color:var(--th-color-text-muted);line-height:var(--th-leading-normal)}.notif-item-time{font-size:var(--th-text-xs);color:var(--th-color-text-muted)}.notif-item-dot{width:8px;height:8px;border-radius:var(--th-radius-full);background:var(--th-color-primary);flex-shrink:0;align-self:center}.profile-topbar{height:58px;background:var(--th-color-surface-raised);border-bottom:1px solid var(--th-color-border-subtle);display:flex;align-items:center;gap:var(--th-space-2);padding:0 var(--th-space-3);flex-shrink:0;z-index:var(--th-z-sticky)}.profile-topbar-back{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--th-radius-full);background:transparent;border:none;color:var(--th-color-text-secondary);cursor:pointer;text-decoration:none;flex-shrink:0;transition:background var(--th-duration-fast) var(--th-ease-standard),color var(--th-duration-fast) var(--th-ease-standard)}.profile-topbar-back:hover{background:var(--th-color-surface);color:var(--th-color-text)}.profile-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}.profile-page-content{max-width:640px;margin:0 auto;padding:var(--th-space-4)}.profile-header{position:relative;display:flex;flex-direction:column;align-items:center;gap:var(--th-space-4);padding:var(--th-space-6) 0;text-align:center}.profile-header-sticker{position:absolute;top:8px;right:0;pointer-events:none;user-select:none}.profile-avatar-wrap{position:relative;width:80px;height:80px}.profile-avatar{width:100%;height:100%;border-radius:var(--th-radius-full);object-fit:cover;border:2px solid var(--th-color-border)}.profile-avatar-fallback{width:100%;height:100%;border-radius:var(--th-radius-full);background:var(--th-color-primary-subtle);color:var(--th-color-primary);font-family:var(--th-font-display);font-size:var(--th-text-2xl);font-weight:var(--th-weight-bold);display:flex;align-items:center;justify-content:center}.profile-avatar-edit-btn{position:absolute;bottom:0;right:0;width:28px;height:28px;background:var(--th-color-primary);color:var(--th-color-primary-text);border-radius:var(--th-radius-full);display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;transition:background var(--th-duration-fast) var(--th-ease-standard)}.profile-avatar-edit-btn:hover{background:var(--th-color-primary-hover)}.profile-name{font-family:var(--th-font-display);font-size:var(--th-text-2xl);font-weight:var(--th-weight-bold);color:var(--th-color-text);margin:0}.profile-role{font-size:var(--th-text-xs);color:var(--th-color-text-muted);margin:0}.profile-stats{display:flex;gap:var(--th-space-8);justify-content:center}.profile-stat{display:flex;flex-direction:column;align-items:center;gap:var(--th-space-1)}.profile-stat-value{font-family:var(--th-font-display);font-size:var(--th-text-xl);font-weight:var(--th-weight-bold);color:var(--th-color-text)}.profile-stat-label{font-size:var(--th-text-xs);color:var(--th-color-text-muted)}.profile-section{border-top:1px solid var(--th-color-border-subtle);padding-top:var(--th-space-5);margin-top:var(--th-space-5)}.profile-section-title{font-size:var(--th-text-sm);font-weight:var(--th-weight-semibold);color:var(--th-color-text-secondary);text-transform:uppercase;letter-spacing:var(--th-tracking-wider);margin-bottom:var(--th-space-4)}.profile-form{display:flex;flex-direction:column;gap:var(--th-space-5)}.profile-info-row{display:flex;flex-direction:column;gap:var(--th-space-1)}.profile-info-label{font-size:var(--th-text-xs);color:var(--th-color-text-muted);font-weight:var(--th-weight-medium)}.profile-info-value{font-size:var(--th-text-sm);color:var(--th-color-text)}.profile-hub-item{display:flex;align-items:center;gap:var(--th-space-3);padding:var(--th-space-3);border-radius:var(--th-radius-lg);text-decoration:none;transition:background var(--th-duration-fast) var(--th-ease-standard);margin-bottom:var(--th-space-2)}.profile-hub-item:hover{background:var(--th-color-surface)}.profile-hub-item--pending{opacity:.7;cursor:default;pointer-events:none}.profile-hub-avatar{width:40px;height:40px;border-radius:var(--th-radius-md);background:var(--th-color-primary-subtle);color:var(--th-color-primary);font-weight:var(--th-weight-bold);font-size:var(--th-text-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}.profile-hub-avatar img{width:100%;height:100%;object-fit:cover}.profile-hub-info{flex:1;display:flex;flex-direction:column;gap:2px}.profile-hub-name{font-size:var(--th-text-sm);font-weight:var(--th-weight-semibold);color:var(--th-color-text)}.profile-hub-meta{font-size:var(--th-text-xs);color:var(--th-color-text-muted)}.profile-hub-actions{margin-top:var(--th-space-4);display:flex;flex-wrap:wrap;gap:var(--th-space-3)}.member-profile-resource-list{display:flex;flex-direction:column;gap:0}.member-profile-resource-item{display:flex;align-items:center;gap:var(--th-space-3);padding:var(--th-space-3) 0;border-bottom:1px solid var(--th-color-border-subtle);text-decoration:none;transition:opacity var(--th-duration-fast) var(--th-ease-standard)}.member-profile-resource-item:last-child{border-bottom:none}.member-profile-resource-item:hover{opacity:.75}.member-profile-resource-icon{color:var(--th-color-text-muted);flex-shrink:0}.member-profile-resource-title{font-size:var(--th-text-sm);color:var(--th-color-text);font-weight:var(--th-weight-medium);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-profile-resource-date{font-size:var(--th-text-xs);color:var(--th-color-text-muted);flex-shrink:0}.admin-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--th-space-4)}.admin-toolbar-row{display:flex;gap:var(--th-space-3);flex-wrap:wrap;margin-bottom:var(--th-space-4);align-items:center}.admin-inline-filters{display:flex;padding:0;flex-wrap:wrap}.admin-form-panel{margin-bottom:var(--th-space-5);max-width:480px}.admin-form-actions{display:flex;gap:var(--th-space-2)}.admin-select-compact{padding:4px 8px;height:auto}.hub-section-title--no-margin{margin:0}.admin-settings-form{max-width:480px}.admin-skeleton-form{height:300px;border-radius:var(--th-radius-lg);max-width:480px}.skeleton-lg{height:300px;border-radius:var(--th-radius-lg)}.skeleton-sm-w80{width:80px;height:80px;border-radius:var(--th-radius-full)}.skeleton-text-lg{height:28px;border-radius:var(--th-radius-md);width:160px}.skeleton-stat{height:48px;border-radius:var(--th-radius-md);width:60px}.profile-stats-skeleton{display:flex;gap:var(--th-space-8)}.admin-link-subtle{color:var(--th-color-text-brand);text-decoration:none;font-size:var(--th-text-sm)}.admin-link-subtle:hover{text-decoration:underline}.admin-header-actions{display:flex;gap:var(--th-space-2);flex-wrap:wrap;margin-top:var(--th-space-6)}.hub-admin-page{display:flex;flex-direction:column;overflow:hidden}.hub-admin-topbar{height:58px;background:var(--th-color-surface-raised);border-bottom:1px solid var(--th-color-border-subtle);display:flex;align-items:center;gap:var(--th-space-3);padding:0 var(--th-space-4);flex-shrink:0;z-index:var(--th-z-sticky)}.hub-admin-back{display:flex;align-items:center;gap:var(--th-space-2);font-size:var(--th-text-sm);color:var(--th-color-text-secondary);background:transparent;border:none;cursor:pointer;text-decoration:none;padding:var(--th-space-2);border-radius:var(--th-radius-md);transition:background var(--th-duration-fast) var(--th-ease-standard),color var(--th-duration-fast) var(--th-ease-standard);flex-shrink:0}.hub-admin-back:hover{background:var(--th-color-surface);color:var(--th-color-text)}.hub-admin-title{font-size:var(--th-text-sm);font-weight:var(--th-weight-semibold);color:var(--th-color-text);flex:1}.hub-admin-subnav{display:flex;overflow-x:auto;border-bottom:1px solid var(--th-color-border-subtle);padding:0 var(--th-space-4);flex-shrink:0;scrollbar-width:none;background:var(--th-color-surface-raised)}.hub-admin-subnav::-webkit-scrollbar{display:none}.hub-admin-nav-link{display:flex;align-items:center;gap:var(--th-space-2);padding:var(--th-space-3) var(--th-space-3);font-size:var(--th-text-xs);font-weight:var(--th-weight-medium);color:var(--th-color-text-secondary);border-bottom:2px solid transparent;white-space:nowrap;text-decoration:none;transition:color var(--th-duration-fast) var(--th-ease-standard),border-color var(--th-duration-fast) var(--th-ease-standard)}.hub-admin-nav-link:hover{color:var(--th-color-text)}.hub-admin-nav-link.active{color:var(--th-color-text-brand);border-bottom-color:var(--th-color-primary)}.hub-admin-content{flex:1;overflow-y:auto;padding:var(--th-space-5) var(--th-space-4);-webkit-overflow-scrolling:touch}.admin-stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--th-space-3);margin-bottom:var(--th-space-6)}@media(min-width:640px){.admin-stat-grid{grid-template-columns:repeat(4,1fr)}}.admin-stat-card{background:var(--th-color-surface-raised);border:1px solid var(--th-color-border-subtle);border-radius:var(--th-radius-lg);padding:var(--th-space-4)}.admin-stat-value{font-family:var(--th-font-display);font-size:var(--th-text-2xl);font-weight:var(--th-weight-bold);color:var(--th-color-text);line-height:1;margin-bottom:var(--th-space-1)}.admin-stat-label{font-size:var(--th-text-xs);color:var(--th-color-text-muted)}.data-table-wrap{border:1px solid var(--th-color-border-subtle);border-radius:var(--th-radius-lg);overflow:hidden;overflow-x:auto}.data-table{width:100%;border-collapse:collapse}.data-table th{font-size:var(--th-text-sm);font-weight:var(--th-weight-semibold);color:var(--th-color-text-secondary);padding:var(--th-space-3) var(--th-space-4);border-bottom:1px solid var(--th-color-border-subtle);background:var(--th-color-surface);text-align:left;white-space:nowrap}.data-table td{font-size:var(--th-text-sm);color:var(--th-color-text);padding:var(--th-space-3) var(--th-space-4);border-bottom:1px solid var(--th-color-border-subtle)}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:var(--th-color-surface)}.table-actions{display:flex;gap:var(--th-space-2);align-items:center}.btn-sm{height:36px;padding:0 var(--th-space-3);font-size:var(--th-text-sm);border-radius:var(--th-radius-md)}.btn-danger{background:var(--th-error-bg);color:var(--th-error);border:none}.btn-danger:hover{background:var(--th-error);color:#fff}.admin-settings-section{max-width:560px;margin-bottom:var(--th-space-8);padding-bottom:var(--th-space-6);border-bottom:1px solid var(--th-color-border-subtle)}.admin-settings-section:last-child{border-bottom:none}.admin-settings-section-title{font-family:var(--th-font-body);font-size:var(--th-text-base);font-weight:var(--th-weight-semibold);color:var(--th-color-text);margin:0 0 var(--th-space-4)}.settings-logo-wrap{display:flex;align-items:center;gap:var(--th-space-4);flex-wrap:wrap}.settings-logo-current{width:72px;height:72px;border-radius:var(--th-radius-lg);overflow:hidden;background:var(--th-color-surface-muted);flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--th-color-text-muted)}.settings-logo-preview{width:100%;height:100%;object-fit:cover}.settings-logo-placeholder{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.catalog-tags{display:flex;flex-wrap:wrap;gap:var(--th-space-2);margin-bottom:var(--th-space-3);min-height:32px}.catalog-tag{display:inline-flex;align-items:center;gap:var(--th-space-1);padding:4px var(--th-space-3);background:var(--th-teal-50);border:1px solid var(--th-teal-200);border-radius:var(--th-radius-full);font-size:var(--th-text-sm);color:var(--th-teal-700)}.catalog-tag-remove{background:none;border:none;padding:0 2px;cursor:pointer;font-size:var(--th-text-base);line-height:1;color:var(--th-teal-500);display:flex;align-items:center}.catalog-tag-remove:hover{color:var(--th-error)}.catalog-add-form{display:flex;gap:var(--th-space-2);align-items:center}.catalog-add-input{flex:1;height:40px}.key-code{font-family:var(--th-font-mono);font-size:var(--th-text-xs);letter-spacing:var(--th-tracking-wider);padding:2px var(--th-space-2);background:var(--th-color-surface-muted);border-radius:var(--th-radius-sm)}.talimo-admin-page{display:flex;flex-direction:column;overflow:hidden}.talimo-admin-topbar{height:58px;background:var(--th-color-surface-raised);border-bottom:1px solid var(--th-color-border-subtle);display:flex;align-items:center;justify-content:space-between;padding:0 var(--th-space-4);flex-shrink:0;z-index:var(--th-z-sticky)}.talimo-admin-logo{font-family:var(--th-font-display);font-size:var(--th-text-base);font-weight:var(--th-weight-semibold);color:var(--th-color-text)}.talimo-admin-subnav{display:flex;overflow-x:auto;border-bottom:1px solid var(--th-color-border-subtle);padding:0 var(--th-space-4);flex-shrink:0;scrollbar-width:none;background:var(--th-color-surface-raised)}.talimo-admin-subnav::-webkit-scrollbar{display:none}.talimo-admin-nav-link{display:flex;align-items:center;gap:var(--th-space-2);padding:var(--th-space-3);font-size:var(--th-text-xs);font-weight:var(--th-weight-medium);color:var(--th-color-text-secondary);border-bottom:2px solid transparent;white-space:nowrap;text-decoration:none;transition:color var(--th-duration-fast) var(--th-ease-standard),border-color var(--th-duration-fast) var(--th-ease-standard)}.talimo-admin-nav-link:hover{color:var(--th-color-text)}.talimo-admin-nav-link.active{color:var(--th-color-text-brand);border-bottom-color:var(--th-color-primary)}.talimo-admin-content{flex:1;overflow-y:auto;padding:var(--th-space-5) var(--th-space-4);-webkit-overflow-scrolling:touch}.hub-status-badge{display:inline-flex;align-items:center;font-size:var(--th-text-xs);padding:2px var(--th-space-2);border-radius:var(--th-radius-sm);font-weight:var(--th-weight-medium)}.status-active{background:var(--th-success-bg);color:var(--th-success)}.status-pending{background:var(--th-warning-bg);color:var(--th-warning)}.status-suspended{background:var(--th-error-bg);color:var(--th-error)}
