:root{--tep-gold: #FFC300;--tep-orange: #FF5733;--tep-twilight: #C70039;--tep-silhouette: #1E1E1E;--tep-blue: #3498DB;--tep-green: #2ECC71;--tep-purple: #7B2FBE;--tep-bg-primary: #0D0D0D;--tep-bg-secondary: #141414;--tep-bg-elevated: #1A1A1A;--tep-bg-surface: #222222;--tep-text-primary: #F0EBE3;--tep-text-secondary: #A09888;--tep-text-muted: #6B6358;--font-display: "Josefin Sans", sans-serif;--font-body: "Karla", sans-serif;--tep-h1: 48px;--tep-h2: 36px;--tep-h3: 24px;--tep-body: 16px;--tep-caption: 14px;--tep-line-height: 1.6;--tep-letter-spacing: .02em;--tep-radius: 10px;--tep-anim-duration: .3s;--glass-bg: rgba(13, 13, 13, .55);--glass-border: rgba(255, 255, 255, .08);--glass-blur: 20px}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;background:var(--tep-bg-primary);color:var(--tep-text-primary);font-family:var(--font-body);font-size:var(--tep-body);line-height:var(--tep-line-height);letter-spacing:var(--tep-letter-spacing);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100%;display:flex;flex-direction:column}.hub-shell{min-height:100vh;position:relative;overflow:hidden}.hub-shell__bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0}.hub-shell__bg .sunset-scene{width:100%;height:100%;display:block;object-fit:cover}.hub-shell__foreground{position:relative;z-index:1;min-height:100vh;display:flex;flex-direction:column}.hub-shell__content{flex:1;display:flex;align-items:center;justify-content:center;padding:32px 24px}.hub-shell__footer{padding:24px;text-align:center;font-size:var(--tep-caption);color:var(--tep-text-muted)}.site-header{display:flex;align-items:center;justify-content:space-between;padding:24px 32px;border-bottom:1px solid rgba(255,255,255,.04)}.site-header__brand{font-family:var(--font-display);font-size:36px;font-weight:600;letter-spacing:-.01em;color:var(--tep-text-primary)}.site-header__controls{display:flex;align-items:center;gap:12px}.site-header__user{font-size:var(--tep-body);color:var(--tep-text-secondary)}.pill-nav{display:flex;justify-content:center;padding:16px 24px 0}.pill-nav__track{display:inline-flex;gap:4px;padding:4px;border-radius:9999px;background:#ffffff0a;border:1px solid rgba(255,255,255,.06);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.pill-nav__tab{padding:8px 20px;border-radius:9999px;border:none;font-size:var(--tep-caption);font-family:var(--font-body);font-weight:500;cursor:pointer;transition:all var(--tep-anim-duration) ease;background:transparent;color:var(--tep-text-secondary)}.pill-nav__tab:hover{color:var(--tep-text-primary)}.pill-nav__tab--active{background:var(--tep-orange);color:#fff}.pill-nav__tab--active:hover{color:#fff}.glass-panel{width:100%;max-width:520px;padding:32px;border-radius:16px;background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border:1px solid var(--glass-border);box-shadow:0 0 0 1px #ffffff08,0 8px 32px #0006,inset 0 1px #ffffff0a}.app-grid__container{display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:20px;justify-items:center;align-items:start;min-height:360px}.app-grid__item{display:flex;flex-direction:column;align-items:center;gap:8px;text-decoration:none;transition:transform var(--tep-anim-duration) ease;width:80px}.app-grid__item:hover{transform:translateY(-2px)}.app-grid__item:active{transform:translateY(0)}.app-grid__icon{width:60px;height:60px;border-radius:14px;display:flex;align-items:center;justify-content:center}.app-grid__label{font-size:11px;font-family:var(--font-body);color:var(--tep-text-secondary);text-align:center;line-height:1.2}.app-grid__slot-empty{width:60px;height:60px;border-radius:14px;border:1px dashed rgba(255,255,255,.06);opacity:.3}.app-grid__pagination{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:20px;padding-top:16px;border-top:1px solid rgba(255,255,255,.04)}.app-grid__page-indicator{font-size:var(--tep-caption);color:var(--tep-text-muted)}.dashboard-placeholder{width:100%;text-align:center;display:flex;flex-direction:column;align-items:center;gap:16px}.dashboard-placeholder__title{font-family:var(--font-display);font-size:var(--tep-h2);font-weight:600;line-height:1.2;color:var(--tep-text-primary)}.dashboard-placeholder__description{font-size:var(--tep-body);color:var(--tep-text-secondary);max-width:340px}.sunset-scene{width:100%;height:100%;display:block}.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;background:var(--tep-orange);color:#fff;font-family:var(--font-body);font-size:var(--tep-body);font-weight:500;border:none;border-radius:var(--tep-radius);cursor:pointer;transition:transform var(--tep-anim-duration) ease}.btn-primary:hover{transform:translateY(-1px)}.btn-primary:active{transform:translateY(1px)}.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;background:#ffffff0a;color:var(--tep-text-secondary);font-family:var(--font-body);font-size:var(--tep-body);font-weight:500;border:1px solid rgba(255,255,255,.06);border-radius:var(--tep-radius);cursor:pointer;transition:transform var(--tep-anim-duration) ease,color var(--tep-anim-duration) ease}.btn-ghost:hover{transform:translateY(-1px);color:var(--tep-text-primary)}.btn-ghost:active{transform:translateY(1px)}.btn-ghost--sm{font-size:var(--tep-caption);padding:6px 12px}.btn-ghost:disabled{opacity:.3;cursor:not-allowed;transform:none}.badge-preproduction{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:9999px;font-size:11px;font-weight:500;font-family:var(--font-body);letter-spacing:.05em;text-transform:uppercase;background:#ffc3001a;color:var(--tep-gold);border:1px solid rgba(255,195,0,.2)}.badge-preproduction:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--tep-gold);animation:pulse-dot 2s ease-in-out infinite}.text-gold{color:var(--tep-gold)}.text-orange{color:var(--tep-orange)}.text-secondary{color:var(--tep-text-secondary)}.text-muted{color:var(--tep-text-muted)}@keyframes materialize{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.animate-materialize{animation:materialize .5s cubic-bezier(.22,1,.36,1) forwards}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}
