:root{--bg-color:#0b0d10;--text-color:#f0f5fb;--muted-color:#9ba7b4;--accent-color:#f7df1e;--card-bg:#151a21;--border-color:#28313d}body{background:radial-gradient(circle at 14% 0,#f7df1e21,#0000 26rem),radial-gradient(circle at 86% 6%,#5dd6ff1a,#0000 24rem),#0b0d10;background:radial-gradient(circle at 14% 0,#f7df1e21,#0000 26rem),radial-gradient(circle at 86% 6%,#5dd6ff1a,#0000 24rem),var(--bg-color);color:#f0f5fb;color:var(--text-color);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;margin:0}.app-container{min-height:100vh}.sr-only{clip:rect(0,0,0,0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.hub-container{margin:0 auto;max-width:1200px;padding:2rem 1.5rem}.hub-header{margin-bottom:2rem}.hub-kicker{color:#f7df1e;color:var(--accent-color);display:block;font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.78rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.hub-header h1{font-size:3.6rem;line-height:1;margin:.25rem 0 0}.hub-header p{color:#9ba7b4;color:var(--muted-color);line-height:1.55;margin:.75rem 0 0;max-width:680px}.projects-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.project-card{background:#151a21;background:var(--card-bg);border:1px solid #28313d;border:1px solid var(--border-color);border-radius:8px;color:inherit;min-height:220px;padding:1.5rem;text-decoration:none;transition:transform .2s,border-color .2s,background .2s}.project-card,.project-info{display:flex;flex-direction:column}.project-info{height:100%}.project-card:hover{background:#18202a;border-color:#f7df1e;border-color:var(--accent-color);transform:translateY(-4px)}.project-id{color:#9ba7b4;color:var(--muted-color);font-family:monospace;font-size:.8rem;margin-bottom:.5rem}.project-name{font-size:1.25rem;margin:0}.viewer-container{display:flex;flex-direction:column;height:100vh;overflow:hidden;width:100vw}.viewer-toolbar{align-items:center;background:#222;border-bottom:1px solid #28313d;border-bottom:1px solid var(--border-color);display:flex;flex-shrink:0;gap:1rem;padding:.75rem 1.5rem}.back-button{background:#f7df1e;background:var(--accent-color);border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:700;padding:.5rem 1rem}.project-title{font-weight:500;margin-left:auto}.viewer-content{background:#06080b;flex-grow:1;overflow:hidden;position:relative}.project-iframe{border:none;display:block;height:100%;opacity:1;transition:opacity .18s ease;width:100%}.project-iframe.is-loading{opacity:0}.viewer-overlay{align-items:center;background:radial-gradient(circle at center,#f7df1e14,#0000 20rem),#06080b;color:#9ba7b4;color:var(--muted-color);display:flex;font-weight:700;gap:.75rem;inset:0;justify-content:center;padding:1.5rem;position:absolute;text-align:center;z-index:2}.viewer-overlay-error{color:#f0f5fb;color:var(--text-color);flex-direction:column}.loader{animation:spin .8s linear infinite;border:3px solid #f7df1e2e;border-radius:50%;border-top:3px solid var(--accent-color);height:22px;width:22px}.overlay-action{background:#f7df1e1f;border:1px solid #f7df1e73;border-radius:6px;color:#f7df1e;color:var(--accent-color);cursor:pointer;font-weight:800;padding:.55rem .9rem}.overlay-action:focus-visible,.overlay-action:hover{background:#f7df1e2e;border-color:#f7df1e;border-color:var(--accent-color)}@keyframes spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.loader{animation:none}.exit-fullscreen-btn,.fullscreen-btn,.project-iframe{transition:none}}.hub-controls{grid-gap:.9rem;align-items:end;display:grid;gap:.9rem;grid-template-columns:minmax(260px,520px) minmax(220px,320px);margin-top:1.5rem}.search-wrapper{max-width:500px;width:100%}.search-input{background:#151a21;background:var(--card-bg);border:1px solid #28313d;border:1px solid var(--border-color);border-radius:8px;color:#fff;font-size:1rem;outline:none;padding:.8rem 1.2rem;transition:border-color .2s;width:100%}.search-input:focus{border-color:#f7df1e;border-color:var(--accent-color)}.category-select-wrapper{grid-gap:.5rem;align-items:end;display:grid;gap:.5rem;grid-template-columns:minmax(0,1fr) auto}.category-select-wrapper label{color:#9ba7b4;color:var(--muted-color);font-size:.72rem;font-weight:800;grid-column:1/-1;text-transform:uppercase}.category-select,.clear-filter-btn{background:#151a21;background:var(--card-bg);border:1px solid #28313d;border:1px solid var(--border-color);border-radius:8px;color:#f0f5fb;color:var(--text-color);min-height:42px}.category-select{padding:0 .85rem;width:100%}.clear-filter-btn{color:#f7df1e;color:var(--accent-color);cursor:pointer;font-weight:800;padding:0 .85rem}.category-select:focus,.clear-filter-btn:focus-visible{border-color:#f7df1e;border-color:var(--accent-color);outline:2px solid #f7df1e59;outline-offset:2px}.project-count{color:#9ba7b4;color:var(--muted-color);font-size:.86rem;margin:.9rem 0 0}.card-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:.5rem}.project-tag{background:#f7df1e1a;border-radius:6px;color:#f7df1e;color:var(--accent-color);font-size:.7rem;padding:2px 8px;text-transform:uppercase}.project-desc{color:#9ba7b4;color:var(--muted-color);font-size:.9rem;line-height:1.4;margin-top:.5rem}.project-meta,.tech-list{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0}.project-footer{grid-gap:.85rem;display:grid;gap:.85rem;margin-top:auto;padding-top:1.1rem}.project-meta span,.tech-list li{border:1px solid #28313d;border:1px solid var(--border-color);border-radius:6px;color:#9ba7b4;color:var(--muted-color);display:inline-flex;font-size:.72rem;font-weight:700;list-style:none;padding:4px 7px}.project-meta span:first-child{border-color:#f7df1e5c;color:#f7df1e;color:var(--accent-color)}.project-action{color:#f7df1e;color:var(--accent-color);display:inline-flex;font-size:.86rem;font-weight:800;margin-top:.1rem}.no-results{color:#9ba7b4;color:var(--muted-color);font-style:italic;grid-column:1/-1;padding:3rem}.viewer-container.fullscreen{left:0;position:fixed;top:0;z-index:9999}.fullscreen-btn{background:#ffffff08;border:1px solid #28313d;border:1px solid var(--border-color);border-radius:5px;color:#fff;cursor:pointer;display:grid;height:35px;place-items:center;transition:background .2s ease,border-color .2s ease,transform .2s ease;width:35px}.fullscreen-btn:focus-visible,.fullscreen-btn:hover{background:#ffffff14;border-color:#f7df1e;border-color:var(--accent-color)}.exit-fullscreen-btn:focus-visible,.fullscreen-btn:focus-visible{outline:2px solid #f7df1e;outline:2px solid var(--accent-color);outline-offset:3px}.fullscreen-icon{display:block;height:16px;position:relative;width:16px}.fullscreen-icon span{border-color:currentColor;border-style:solid;height:6px;position:absolute;width:6px}.fullscreen-icon span:first-child{border-width:2px 0 0 2px;left:0;top:0}.fullscreen-icon span:nth-child(2){border-width:2px 2px 0 0;right:0;top:0}.fullscreen-icon span:nth-child(3){border-width:0 2px 2px 0;bottom:0;right:0}.fullscreen-icon span:nth-child(4){border-width:0 0 2px 2px;bottom:0;left:0}.exit-fullscreen-btn{background:#00000080;border:1px solid #ffffff29;border-radius:50%;color:#fff;cursor:pointer;display:grid;height:30px;place-items:center;position:fixed;right:1rem;top:1rem;transition:background .2s ease,border-color .2s ease;width:30px;z-index:10000}.exit-fullscreen-btn:focus-visible,.exit-fullscreen-btn:hover{background:#000000bf;border-color:#ffffff57}.close-icon{display:block;height:14px;position:relative;width:14px}.close-icon:after,.close-icon:before{background:currentColor;border-radius:999px;content:"";height:2px;left:1px;position:absolute;top:6px;width:12px}.close-icon:before{transform:rotate(45deg)}.close-icon:after{transform:rotate(-45deg)}.viewer-error{align-items:center;background:#0b0d10;background:var(--bg-color);color:#f0f5fb;color:var(--text-color);display:flex;height:100vh;justify-content:center;text-align:center}.error-content h1{color:#f7df1e;color:var(--accent-color);font-size:5rem;margin:0}@media (max-width:640px){.hub-container{padding:1.25rem}.hub-header h1{font-size:2.35rem}.hub-controls{grid-template-columns:1fr}.search-wrapper{max-width:none}.category-select-wrapper{grid-template-columns:1fr auto}}