:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;text-rendering:optimizelegibility;--background:#080b12;--surface:#101621;--surface-elevated:#151e2c;--surface-hover:#1b2637;--border:#243047;--border-strong:#33415c;--text:#f6f8fc;--text-muted:#9ba8ba;--text-soft:#c8d0dc;--blue:#4d8dff;--blue-strong:#2f76f6;--blue-soft:#4d8dff29;--purple:#7969ff;--danger:#ff6b7b;--success:#46d69a;--shadow:0 18px 50px #0000003d;--content-max:1160px;--tg-content-safe-top:0px;--tg-content-safe-bottom:0px;--tg-safe-bottom:0px;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{background:var(--background);scroll-behavior:smooth;min-height:100%}body{background:radial-gradient(circle at 12% -10%, #4d8dff24, transparent 30rem), var(--background);min-height:100%;color:var(--text);margin:0}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible{outline-offset:3px;outline:3px solid #4d8dffb3}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-shell{min-height:100dvh;padding-top:var(--tg-content-safe-top)}.app-header{z-index:30;min-height:64px;padding:10px max(16px, calc((100vw - var(--content-max)) / 2));-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#080b12e0;border-bottom:1px solid #243047b8;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.brand{letter-spacing:-.02em;align-items:center;gap:10px;font-size:17px;font-weight:780;display:inline-flex}.brand-mark{background:linear-gradient(145deg, var(--blue), #5d5bea);border:1px solid #73a2ff5c;border-radius:11px;place-items:center;width:36px;height:36px;display:grid;box-shadow:0 8px 22px #3870f04d}.header-actions{gap:4px;display:flex}.icon-button,.favorite-button{width:44px;height:44px;color:var(--text-soft);cursor:pointer;background:0 0;border:0;border-radius:13px;place-items:center;padding:0;display:grid}.icon-button:hover,.favorite-button:hover{background:var(--surface-hover);color:var(--text)}.app-main{width:min(100%, var(--content-max));min-height:calc(100dvh - 65px);margin:0 auto}.page{padding:26px 16px calc(102px + var(--tg-content-safe-bottom))}.eyebrow{color:#78a8ff;letter-spacing:.12em;text-transform:uppercase;margin:0 0 7px;font-size:12px;font-weight:760}.catalog-intro{max-width:660px;margin-bottom:22px}.catalog-intro h1,.project-detail-content h1,.page-title-row h1,.placeholder-page h1{letter-spacing:-.045em;margin:0;font-size:clamp(27px,7.5vw,44px);line-height:1.06}.catalog-intro>p:last-child,.placeholder-page section>p:last-of-type{max-width:600px;color:var(--text-muted);margin:12px 0 0;font-size:15px;line-height:1.55}.search-field{border:1px solid var(--border);background:var(--surface);width:100%;height:52px;color:var(--text-muted);border-radius:15px;align-items:center;padding:0 8px 0 16px;transition:border-color .16s,box-shadow .16s;display:flex;position:relative}.search-field:focus-within{border-color:#4d8dffb8;box-shadow:0 0 0 4px #4d8dff1a}.search-field input{min-width:0;color:var(--text);appearance:none;background:0 0;border:0;outline:0;flex:1;align-self:stretch;padding:0 12px}.search-field input::-webkit-search-cancel-button{display:none}.search-field button{width:40px;height:40px;color:var(--text-muted);cursor:pointer;background:0 0;border:0;border-radius:11px;place-items:center;padding:0;display:grid}.category-rail,.popular-rail{scrollbar-width:none}.category-rail::-webkit-scrollbar{display:none}.popular-rail::-webkit-scrollbar{display:none}.category-rail{overscroll-behavior-inline:contain;gap:8px;margin:14px -16px 0;padding:0 16px 6px;display:flex;overflow-x:auto}.category-rail button{border:1px solid var(--border);min-height:40px;color:var(--text-soft);white-space:nowrap;cursor:pointer;background:#101621d6;border-radius:999px;padding:0 15px;font-size:14px;font-weight:640}.category-rail button:hover{border-color:var(--border-strong);background:var(--surface-elevated)}.category-rail button.is-active{background:var(--blue-soft);color:#a9c9ff;border-color:#4d8dff8c}.metadata-error{min-height:40px;color:var(--text-muted);justify-content:space-between;align-items:center;gap:12px;margin-top:8px;font-size:13px;display:flex}.metadata-error button{background:var(--blue-soft);color:#a9c9ff;cursor:pointer;border:0;border-radius:10px;min-height:40px;padding:0 12px}.catalog-section{margin-top:32px}.section-heading,.page-title-row,.detail-heading-row,.materials-heading,.purchase-panel>div{justify-content:space-between;align-items:center;display:flex}.section-heading{min-height:32px;margin-bottom:14px}.section-heading h2{letter-spacing:-.025em;align-items:center;gap:8px;margin:0;font-size:19px;display:flex}.section-heading h2 svg{color:#8cb4ff}.result-count,.updating-indicator{color:var(--text-muted);font-size:13px}.updating-indicator:before{background:var(--blue);content:"";border-radius:50%;width:6px;height:6px;margin-right:7px;animation:1.2s ease-in-out infinite pulse;display:inline-block}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.popular-rail{scroll-snap-type:x proximity;grid-auto-columns:minmax(174px,46%);grid-auto-flow:column;gap:12px;margin:0 -16px;padding:0 16px 8px;display:grid;overflow-x:auto}.popular-rail .project-card{scroll-snap-align:start}.project-card{border:1px solid var(--border);background:linear-gradient(180deg, var(--surface-elevated), var(--surface));border-radius:16px;min-width:0;transition:transform .18s,border-color .18s,box-shadow .18s;overflow:hidden;box-shadow:0 8px 28px #00000021}.project-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow);transform:translateY(-2px)}.project-card-cover{position:relative}.project-card-cover>a{display:block}.project-card .favorite-button{z-index:2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#080b12c2;border:1px solid #ffffff24;width:42px;height:42px;position:absolute;top:7px;right:7px}.favorite-button.is-active{color:#ff7890}.favorite-button:disabled{cursor:wait;opacity:.62}.cover-art{aspect-ratio:4/3;isolation:isolate;background:radial-gradient(circle at 72% 22%,#9a7eff7a,#0000 30%),radial-gradient(circle at 18% 90%,#368fff80,#0000 38%),#172237;place-items:center;display:grid;position:relative;overflow:hidden}.cover-art img{object-fit:cover;width:100%;height:100%}.cover-grid{z-index:-2;opacity:.28;background-image:linear-gradient(#ffffff21 1px,#0000 1px),linear-gradient(90deg,#ffffff21 1px,#0000 1px);background-size:22px 22px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(to bottom right,#000,#0000 72%);mask-image:linear-gradient(to bottom right,#000,#0000 72%)}.cover-orbit{z-index:-1;border:1px solid #ffffff3b;border-radius:50%;position:absolute}.cover-orbit-one{aspect-ratio:1;width:72%;transform:rotate(26deg)scaleY(.48)}.cover-orbit-two{aspect-ratio:1;border-color:#ffffff57;width:48%;transform:rotate(-28deg)scaleY(.48)}.cover-icon{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#070a116b;border:1px solid #ffffff42;border-radius:17px;place-items:center;width:54px;height:54px;display:grid;box-shadow:0 12px 30px #0000004d}.cover-icon svg{width:27px;height:27px}.cover-biology-neural,.cover-geography-city{background:radial-gradient(circle at 74% 20%,#41d69a85,#0000 32%),radial-gradient(circle at 16% 88%,#217ef780,#0000 38%),#132631}.cover-social-finance,.cover-history-city{background:radial-gradient(circle at 78% 18%,#ffb55375,#0000 30%),radial-gradient(circle at 18% 90%,#6c58ff80,#0000 38%),#252038}.cover-literature-portrait,.cover-english-dialogue{background:radial-gradient(circle at 72% 22%,#ec669780,#0000 30%),radial-gradient(circle at 15% 90%,#6a5eff85,#0000 40%),#271b32}.cover-informatics-network,.cover-other-layout{background:radial-gradient(circle at 78% 18%,#42daeb7a,#0000 30%),radial-gradient(circle at 14% 88%,#4264ff8a,#0000 42%),#111f38}.project-card-body{flex-direction:column;min-height:138px;padding:12px;display:flex}.subject-label{color:#8eb4f5;letter-spacing:.025em;font-size:11px;font-weight:720}.project-card h3{letter-spacing:-.018em;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:7px 0 12px;font-size:14px;line-height:1.34;display:-webkit-box;overflow:hidden}.project-price{letter-spacing:-.03em;margin-top:auto;font-size:17px}.skeleton{background:#1a2332;position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(90deg,#0000,#ffffff12,#0000);animation:1.5s infinite shimmer;position:absolute;inset:0;transform:translate(-100%)}.skeleton-cover{aspect-ratio:4/3}.skeleton-card-body{gap:9px;min-height:138px;padding:12px;display:grid}.skeleton-label,.skeleton-line,.skeleton-price{border-radius:6px;height:11px;display:block}.skeleton-label{width:48%;height:9px}.skeleton-line.short{width:72%}.skeleton-price{width:42%;height:16px;margin-top:auto}.primary-button,.secondary-button,.load-more-button,.back-button{cursor:pointer;border-radius:13px;justify-content:center;align-items:center;gap:8px;min-height:46px;padding:0 17px;font-weight:720;display:inline-flex}.primary-button{color:#fff;background:linear-gradient(#5795ff,#367bf4);border:1px solid #5d99ff;box-shadow:0 10px 26px #2f76f63d}.primary-button:hover{background:linear-gradient(#6aa1ff,#4485f6)}.primary-button:disabled{cursor:wait;opacity:.64}.secondary-button,.back-button,.load-more-button{border:1px solid var(--border);background:var(--surface);color:var(--text-soft)}.secondary-button:hover,.back-button:hover,.load-more-button:hover{border-color:var(--border-strong);background:var(--surface-elevated);color:var(--text)}.load-more-button{margin:22px auto 0}.load-more-button:disabled{cursor:wait;opacity:.65}.empty-state,.error-state{border:1px dashed var(--border-strong);text-align:center;background:#1016218c;border-radius:18px;flex-direction:column;justify-content:center;align-items:center;min-height:300px;padding:34px 20px;display:flex}.empty-state>svg,.error-state>svg{color:#82adfb}.empty-state h2,.error-state h2{margin:15px 0 8px;font-size:21px}.empty-state p,.error-state p{max-width:460px;color:var(--text-muted);margin:0;line-height:1.55}.empty-actions{flex-direction:column;gap:10px;margin-top:22px;display:flex}.error-state .primary-button{margin-top:22px}.bottom-nav{z-index:40;min-height:calc(66px + var(--tg-safe-bottom));padding:6px max(8px, calc((100vw - 560px) / 2)) var(--tg-safe-bottom);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#0d121cf0;border-top:1px solid #243047e6;grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.bottom-nav-item{min-width:0;min-height:54px;color:var(--text-muted);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:4px;font-size:10px;font-weight:650;display:flex}.bottom-nav-item.is-active{background:var(--blue-soft);color:#9dc0ff}.toast-viewport{z-index:80;right:16px;bottom:calc(82px + var(--tg-safe-bottom));pointer-events:none;justify-content:center;display:flex;position:fixed;left:16px}.toast{border:1px solid var(--border-strong);max-width:460px;box-shadow:var(--shadow);color:var(--text);background:#1a2332;border-radius:13px;padding:12px 16px;font-size:14px}.back-button{min-height:42px;margin-bottom:18px;padding:0 13px}.project-detail-layout{gap:24px;display:grid}.project-detail-page{padding-bottom:calc(178px + var(--tg-content-safe-bottom))}.project-detail-visual .cover-art{aspect-ratio:16/11;border:1px solid var(--border);box-shadow:var(--shadow);border-radius:22px}.project-detail-visual .cover-icon{border-radius:22px;width:76px;height:76px}.project-detail-visual .cover-icon svg{width:36px;height:36px}.detail-heading-row{align-items:flex-start;gap:12px}.detail-heading-row h1{margin-top:9px;font-size:clamp(28px,8vw,46px)}.detail-heading-row .favorite-button{border:1px solid var(--border);background:var(--surface);flex:0 0 48px;width:48px;height:48px}.project-description{color:var(--text-soft);margin:20px 0 0;font-size:16px;line-height:1.65}.materials-section{border:1px solid var(--border);background:var(--surface);border-radius:17px;margin-top:24px;padding:18px}.materials-heading{justify-content:flex-start;gap:12px}.materials-heading>svg{color:#85b0ff}.materials-heading div{flex-direction:column;gap:2px;display:flex}.materials-heading span,.purchase-panel span{color:var(--text-muted);font-size:12px}.materials-heading strong{font-size:15px}.materials-section ul{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:17px 0 0;padding:0;list-style:none;display:grid}.materials-section li{min-width:0;color:var(--text-soft);align-items:center;gap:9px;font-size:13px;display:flex}.materials-section li span{background:var(--blue-soft);color:#94b9ff;border-radius:10px;flex:0 0 32px;place-items:center;width:32px;height:32px;display:grid}.purchase-panel{background:linear-gradient(145deg,#4d8dff21,#7969ff14);border:1px solid #4d8dff66;border-radius:17px;gap:13px;margin-top:20px;padding:17px;display:none}.mobile-purchase-bar{z-index:45;right:0;bottom:calc(66px + var(--tg-safe-bottom));-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:#0c111bf5;border-top:1px solid #4d8dff66;grid-template-columns:minmax(92px,auto) minmax(0,1fr);align-items:center;gap:12px;min-height:76px;padding:10px max(16px,50vw - 280px);display:grid;position:fixed;left:0;box-shadow:0 -16px 36px #0000004d}.mobile-purchase-bar>div{flex-direction:column;min-width:0;display:flex}.mobile-purchase-bar span{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.mobile-purchase-bar strong{letter-spacing:-.035em;margin-top:2px;font-size:21px}.mobile-purchase-button{text-align:center;width:100%;min-height:50px;padding:0 12px}.access-retry-button{box-shadow:none}.purchase-panel>div{align-items:end}.purchase-panel>div strong{letter-spacing:-.04em;font-size:26px}.purchase-button{width:100%;min-height:52px}.purchase-panel p{color:var(--text-muted);text-align:center;margin:0;font-size:11px;line-height:1.45}.cross-sell{border-top:1px solid var(--border);margin-top:20px;padding:20px 0}.cross-sell h2{margin:0;font-size:21px}.cross-sell p{color:var(--text-muted);margin:8px 0 13px;line-height:1.5}.cross-sell a{color:#8fb7ff;align-items:center;gap:6px;font-weight:720;display:inline-flex}.detail-skeleton{border-radius:22px;min-height:680px}.detail-error .secondary-button{margin-top:10px}.page-title-row{margin-bottom:24px}.page-title-row>svg{color:#ff7890}.placeholder-page{align-content:center;min-height:calc(100dvh - 130px);display:grid}.placeholder-page section{max-width:640px}.placeholder-page .primary-button{margin-top:24px}@keyframes shimmer{to{transform:translate(100%)}}@keyframes pulse{50%{opacity:.35}}@media (width>=680px){.page{padding-left:24px;padding-right:24px}.category-rail,.popular-rail{margin-left:-24px;margin-right:-24px;padding-left:24px;padding-right:24px}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.popular-rail{grid-auto-columns:minmax(210px,31%)}.empty-actions{flex-direction:row}}@media (width>=960px){.app-header{padding-left:28px;padding-right:28px}.page{padding:38px 28px 64px}.category-rail,.popular-rail{margin-left:0;margin-right:0;padding-left:0;padding-right:0}.project-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.popular-rail{grid-auto-columns:minmax(220px,23.5%)}.bottom-nav{border:1px solid var(--border);width:min(560px,100% - 32px);min-height:62px;box-shadow:var(--shadow);border-radius:18px;margin:0 auto 16px;padding:4px 6px;position:sticky;bottom:0;left:auto;right:auto}.project-detail-layout{grid-template-columns:minmax(0,1.1fr) minmax(360px,.9fr);align-items:start;gap:42px}.project-detail-visual{position:sticky;top:94px}.purchase-panel{display:grid;position:sticky;bottom:20px}.mobile-purchase-bar{display:none}.project-detail-page{padding-bottom:64px}}@media (width<=360px){.page{padding-left:12px;padding-right:12px}.category-rail,.popular-rail{margin-left:-12px;margin-right:-12px;padding-left:12px;padding-right:12px}.project-grid{gap:9px}.project-card-body{min-height:132px;padding:10px}.project-card h3{font-size:13px}.materials-section{padding:15px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
