.app{min-height:100vh;display:flex;flex-direction:column}.view{width:100%;max-width:1200px;box-sizing:border-box;margin:0 auto;padding:40px 24px 24px;flex:1}.muted{color:var(--muted)}.small{font-size:13px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.empty{padding:48px 24px;text-align:center;color:var(--muted);border:1px dashed var(--border);border-radius:14px}a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.topbar{background:var(--surface);border-bottom:1px solid var(--border)}.topbar-inner{max-width:1200px;margin:0 auto;padding:14px 24px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 16px}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none}.brand-mark{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:9px;background:var(--ink);color:var(--surface);font-family:var(--font-mono);font-size:13px;font-weight:600}.brand-name{font-size:18px;font-weight:700;letter-spacing:-.01em}.topbar-controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.view-switch{display:flex;padding:3px;border-radius:12px;border:1px solid var(--border);background:var(--ground)}.view-switch button{display:flex;align-items:center;gap:6px;height:36px;padding:0 12px;border:0;border-radius:9px;background:transparent;color:var(--muted);font:inherit;font-size:14px;font-weight:500;cursor:pointer}.view-switch button.is-on{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px #0000001f}.icon-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:10px;border:1px solid var(--border);background:transparent;color:var(--ink);cursor:pointer}.auth-menu-wrap{position:relative}.auth-btn{display:flex;align-items:center;gap:10px;height:44px;padding:0 14px 0 6px;border-radius:10px;border:1px solid var(--border);background:transparent;color:var(--ink);font:inherit;font-weight:500;cursor:pointer}.auth-btn:not(:has(.avatar)){padding-left:14px}.avatar{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:14px;font-weight:600}.auth-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:10;min-width:180px;padding:6px;border-radius:12px;border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow)}.auth-menu-logout{width:100%;height:40px;padding:0 12px;border:0;border-radius:8px;background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer}.auth-menu-logout:hover{background:var(--ground)}.auth-error{position:absolute;right:0;top:calc(100% + 6px);margin:0;width:260px;padding:8px 12px;border-radius:8px;background:var(--surface);border:1px solid var(--danger);color:var(--ink);font-size:13px}.signed-out{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;padding-top:96px}.signed-out h1{margin:0;font-size:40px;letter-spacing:-.02em}.signed-out p{margin:0 0 8px}.primary-btn{height:48px;padding:0 24px;border:0;border-radius:12px;background:var(--ink);color:var(--surface);font:inherit;font-weight:600;cursor:pointer}.search{position:relative;display:flex;align-items:center;flex:1 1 280px;max-width:380px}.search-icon{position:absolute;left:14px;color:var(--muted)}.search input{width:100%;height:44px;box-sizing:border-box;padding:0 14px 0 42px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--ink);font:inherit}.search input::placeholder{color:var(--muted)}.search-large{flex:none;width:100%;max-width:560px}.search-large .search-icon{left:20px}.search-large input{height:56px;padding:0 20px 0 52px;border-radius:999px;font-size:16px;box-shadow:0 2px 10px #141e3c0f}.app-logo{display:flex;align-items:center;justify-content:center;flex-shrink:0;box-sizing:border-box;border-radius:26%;overflow:hidden}.app-logo-img{display:block}.app-logo-img img{display:block;width:100%;height:100%;object-fit:cover}.app-logo-pad{background:#fff;border:1px solid #e3e7ee}.app-logo-pad img{object-fit:contain}.app-logo-icon{color:#fff;background:var(--cat-admin-bg)}.app-logo-icon[data-cat=transport]{background:var(--cat-transport-bg)}.app-logo-icon[data-cat=planning]{background:var(--cat-planning-bg)}.app-logo-icon[data-cat=perso]{background:var(--cat-perso-bg)}.app-logo-icon[data-cat=ferivia]{background:var(--cat-ferivia-bg)}.dash-hello{margin-bottom:28px}.dash-hello h1{margin:0 0 6px;font-size:32px;line-height:1.2;letter-spacing:-.02em}.dash-hello p{margin:0}.dash-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:36px}.pills{display:flex;flex-wrap:wrap;gap:8px}.pill{height:40px;padding:0 16px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--ink);font:inherit;font-size:14px;font-weight:500;cursor:pointer}.pill.is-on{border-color:var(--ink);background:var(--ink);color:var(--surface)}.dash-section{margin-bottom:44px}.section-head{display:flex;align-items:baseline;gap:10px;margin:0 0 16px;font-size:18px;font-weight:600}.count{font-family:var(--font-mono);font-size:13px;font-weight:400;color:var(--muted)}.dash-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}.card{display:flex;flex-direction:column;gap:14px;padding:20px;border-radius:14px;border:1px solid var(--border);background:var(--surface);color:var(--ink);text-decoration:none;transition:transform .15s ease,box-shadow .15s ease}.card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.badge{padding:2px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:12px;font-weight:600}.card-body{flex-grow:1}.card-body h3{margin:0 0 4px;font-size:16px;font-weight:600}.card-body p{margin:0;font-size:14px}.card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:12px;border-top:1px solid var(--border);color:var(--muted)}.host{font-family:var(--font-mono);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-arrow{flex-shrink:0;transition:transform .15s ease}.card:hover .card-arrow{transform:translate(3px)}.view-launcher{max-width:1080px}.caps{margin:0;font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.launch-hero{display:flex;flex-direction:column;align-items:center;gap:20px;margin:8px 0 44px;text-align:center}.launch-hero h1{margin:0;font-size:40px;line-height:1.15;font-weight:800;letter-spacing:-.03em}.launch-favs{margin-bottom:40px}.launch-favs-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 16px;margin-bottom:14px}.favs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.fav{display:flex;align-items:center;gap:14px;padding:12px;border-radius:18px;border:1px solid var(--border);background:var(--surface);color:var(--ink);text-decoration:none;transition:box-shadow .15s ease}.fav:hover{box-shadow:var(--shadow)}.fav-rank{flex-shrink:0;width:16px;font-size:13px;font-weight:700;color:var(--muted);text-align:center}.fav-text{display:flex;flex-direction:column;min-width:0}.launch-section{margin-bottom:28px;padding:24px;border-radius:24px;background:var(--surface);border:1px solid var(--border)}.launch-section .caps{margin-bottom:20px}.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:24px 12px}.tile{display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--ink);text-decoration:none;text-align:center;transition:transform .15s ease}.tile:hover{transform:translateY(-3px)}.tile-icon{position:relative;border-radius:26%;transition:box-shadow .15s ease}.tile:hover .tile-icon{box-shadow:0 10px 24px #141e3c38}.tile-dot{position:absolute;top:-4px;right:-4px;width:14px;height:14px;border-radius:50%;background:var(--danger);border:3px solid var(--surface)}.tile-name{font-size:14px;font-weight:600;line-height:1.3}.footer{border-top:1px solid var(--border)}.footer-inner{max-width:1200px;margin:0 auto;padding:20px 24px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:14px;color:var(--muted)}.footer-links{display:flex;gap:16px}.footer a{color:inherit}@media(max-width:600px){.view{padding:28px 16px 16px}.topbar-inner{padding:12px 16px}.view-switch span{display:none}.dash-hello h1,.launch-hero h1{font-size:28px}.search{max-width:none}.launch-section{padding:20px 14px}.tiles{grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:20px 8px}.tile .app-logo{width:64px!important;height:64px!important}}:root{--ground: #f6f6f4;--surface: #ffffff;--border: #e4e4e1;--ink: #17171a;--muted: #5c5c64;--accent: #1f4fd8;--accent-soft: #e6edfd;--danger: #e5484d;--shadow: 0 10px 28px rgba(15, 16, 19, .1);--cat-transport-bg: #2b59e0;--cat-planning-bg: #c2570c;--cat-perso-bg: #15803d;--cat-ferivia-bg: #6d3fd4;--cat-admin-bg: #3d4553;--font-sans: Inter, "Segoe UI", system-ui, -apple-system, Roboto, sans-serif;--font-mono: "JetBrains Mono", "Cascadia Code", Consolas, ui-monospace, monospace;color-scheme:light}[data-dark-mode=true]{--ground: #0f1013;--surface: #17181c;--border: #2a2b31;--ink: #ededef;--muted: #a3a4ad;--accent: #8dabff;--accent-soft: #1e2a4d;--shadow: 0 10px 28px rgba(0, 0, 0, .45);--cat-transport-bg: #3a63d8;--cat-planning-bg: #b8560f;--cat-perso-bg: #1d7a41;--cat-ferivia-bg: #6a45c4;--cat-admin-bg: #4a5160;color-scheme:dark}html{scroll-behavior:smooth}body{margin:0;padding:0;background:var(--ground);color:var(--ink);font-family:var(--font-sans);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background:var(--accent-soft);color:var(--ink)}
