.project-list-root .shell{max-width:1320px;margin:0 auto;padding:28px 32px 48px}.project-list-root .hero{border-radius:var(--r-xl);color:#fff;isolation:isolate;background:radial-gradient(60% 90% at 100% 0,oklch(70% .18 285/.5) 0%,#0000 60%),radial-gradient(80% 100% at 0 100%,oklch(86% .1 240/.4) 0%,#0000 65%),linear-gradient(135deg,oklch(40% .18 285) 0%,oklch(32% .2 280) 50%,oklch(24% .13 272) 100%);padding:40px 72px 44px;position:relative;overflow:hidden}.project-list-root .gridLines{z-index:0;opacity:.18;pointer-events:none;background-image:linear-gradient(oklch(100% 0 0/.12) 1px,#0000 1px),linear-gradient(90deg,oklch(100% 0 0/.12) 1px,#0000 1px);background-size:56px 56px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(80% 70%,#000,#0000);mask-image:radial-gradient(80% 70%,#000,#0000)}.project-list-root .heroGrid{z-index:1;grid-template-columns:1fr 1fr;align-items:center;gap:48px;display:grid;position:relative}.project-list-root .heroEyebrow{border-radius:var(--r-pill);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:oklch(100% 0 0/.92);letter-spacing:.14em;font-size:12px;font-family:var(--font-mono);background:oklch(100% 0 0/.14);border:1px solid oklch(100% 0 0/.22);align-items:center;gap:8px;padding:6px 14px;font-weight:500;display:inline-flex}.project-list-root .heroEyebrow .live{background:oklch(80% .18 150);border-radius:50%;width:6px;height:6px;animation:2s ease-in-out infinite plPulse;box-shadow:0 0 0 4px oklch(80% .18 150/.25)}@keyframes plPulse{0%,to{opacity:1}50%{opacity:.35}}.project-list-root .hero h1{letter-spacing:-.025em;background:linear-gradient(#fff 0%,oklch(86% .06 280) 100%);color:#0000;-webkit-background-clip:text;background-clip:text;margin:22px 0 18px;font-size:58px;font-weight:800;line-height:1.06}.project-list-root .hero .lead{color:oklch(100% 0 0/.78);max-width:460px;margin:0;font-size:16px;line-height:1.7}.project-list-root .heroStats{border-top:1px solid oklch(100% 0 0/.16);grid-template-columns:repeat(2,auto);justify-content:start;gap:48px;margin-top:34px;padding-top:26px;display:grid}.project-list-root .heroStats .v{font-family:var(--font-num);letter-spacing:-.02em;color:#fff;font-variant-numeric:tabular-nums;font-size:28px;font-weight:700}.project-list-root .heroStats .l{color:oklch(100% 0 0/.6);letter-spacing:.12em;font-size:11px;font-family:var(--font-mono);margin-top:4px}.project-list-root .heroArt{height:240px;position:relative}.project-list-root .orb{filter:blur(.5px);border-radius:50%;position:absolute}.project-list-root .orb.o1{background:radial-gradient(circle at 30% 30%,oklch(90% .12 280/.7),oklch(50% .2 280/.4) 60%,#0000 75%);width:260px;height:260px;animation:9s ease-in-out infinite plFloat;top:20px;right:40px}.project-list-root .orb.o2{background:radial-gradient(circle at 30% 30%,oklch(85% .14 200/.6),oklch(45% .18 220/.3) 60%,#0000 75%);width:150px;height:150px;animation:11s ease-in-out -3s infinite plFloat;bottom:30px;left:30px}.project-list-root .orb.o3{background:radial-gradient(circle at 30% 30%,oklch(85% .14 320/.55),oklch(50% .18 320/.3) 60%,#0000 75%);width:96px;height:96px;animation:7s ease-in-out -5s infinite plFloat;top:120px;left:84px}@keyframes plFloat{0%,to{transform:translateY(0)translate(0)}50%{transform:translateY(-14px)translate(8px)}}.project-list-root .tabRow{flex-wrap:wrap;gap:8px;margin-top:32px;display:flex}.project-list-root .tabBtn{border-radius:var(--r-pill);cursor:pointer;background:var(--card);border:1px solid var(--border);color:var(--foreground-subtle);transition:border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);padding:9px 18px;font-family:inherit;font-size:13px;font-weight:600}.project-list-root .tabBtn:hover{border-color:color-mix(in oklab, var(--primary) 50%, transparent);color:var(--foreground)}.project-list-root .tabBtn.active{color:#fff;background:linear-gradient(135deg, var(--primary), var(--primary-strong));box-shadow:var(--elevation-2);border-color:#0000}.project-list-root .filterBar{flex-wrap:wrap;align-items:center;gap:14px;margin-top:22px;display:flex}.project-list-root .searchBox{border-radius:var(--r-pill);background:var(--card);border:1px solid var(--input);flex:1;align-items:center;gap:10px;min-width:240px;padding:11px 16px;display:flex}.project-list-root .searchBox svg{width:16px;height:16px;color:var(--muted-foreground);flex-shrink:0}.project-list-root .searchBox input{color:var(--foreground);background:0 0;border:none;outline:none;flex:1;min-width:0;font-family:inherit;font-size:14px}.project-list-root .sortSel{border-radius:var(--r-pill);background:var(--card);border:1px solid var(--input);color:var(--foreground-subtle);align-items:center;gap:8px;padding:4px 14px;font-size:13px;display:flex}.project-list-root .sortSel svg{width:14px;height:14px;color:var(--muted-foreground);flex-shrink:0}.project-list-root .sortSel select{color:var(--foreground);cursor:pointer;background:0 0;border:none;outline:none;padding:7px 0;font-family:inherit;font-size:13px;font-weight:600}.project-list-root .resultCount{color:var(--muted-foreground);font-size:13px;font-family:var(--font-mono);letter-spacing:.04em}.project-list-root .gradeRail{flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px;display:flex}.project-list-root .railLabel{color:var(--muted-foreground);font-size:12px;font-weight:600;font-family:var(--font-mono);letter-spacing:.08em;margin-right:4px}.project-list-root .gradePill{border-radius:var(--r-pill);cursor:pointer;background:var(--card);border:1px solid var(--border);color:var(--foreground-subtle);transition:border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);align-items:center;gap:8px;padding:8px 15px;font-family:inherit;font-size:13px;font-weight:500;display:inline-flex}.project-list-root .gradePill:hover{border-color:color-mix(in oklab, var(--primary) 50%, transparent);color:var(--foreground)}.project-list-root .gradePill.active{color:#fff;background:linear-gradient(135deg, var(--primary), var(--primary-strong));box-shadow:var(--elevation-2);border-color:#0000}.project-list-root .railSpacer{flex:1;min-width:12px}.project-list-root .topicChips{flex-wrap:wrap;gap:6px;display:flex}.project-list-root .topicChip{border-radius:var(--r-pill);border:1px dashed color-mix(in oklab, var(--muted-foreground) 40%, transparent);color:var(--muted-foreground);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);background:0 0;padding:6px 12px;font-family:inherit;font-size:12px}.project-list-root .topicChip:hover{border-style:solid;border-color:color-mix(in oklab, var(--primary) 50%, transparent);color:var(--primary-strong)}.project-list-root .topicChip.active{background:color-mix(in oklab, var(--primary) 10%, transparent);color:var(--primary-strong);border-style:solid;border-color:#0000;font-weight:600}.project-list-root .gallery{columns:3;column-gap:20px;margin-top:26px}.project-list-root .projCard{break-inside:avoid;background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);cursor:pointer;transition:transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out), border-color var(--dur-fast) var(--ease-out);margin-bottom:20px;text-decoration:none;display:block;overflow:hidden}.project-list-root .projCard:hover{box-shadow:var(--elevation-3);border-color:color-mix(in oklab, var(--primary) 30%, transparent);transform:translateY(-4px)}.project-list-root .cover{color:#fff;flex-direction:column;justify-content:space-between;padding:14px;display:flex;position:relative;overflow:hidden}.project-list-root .cover:after{content:"";pointer-events:none;background:repeating-linear-gradient(45deg,#0000 0 9px,oklch(100% 0 0/.06) 9px 11px);position:absolute;inset:0}.project-list-root .cover.tall{aspect-ratio:3/4}.project-list-root .cover.wide{aspect-ratio:16/10}.project-list-root .cover.sq{aspect-ratio:1}.project-list-root .cover.hasMedia{padding:0}.project-list-root .cover.hasMedia:after{content:none}.project-list-root .coverMedia{object-fit:cover;width:100%;height:100%;transition:transform var(--dur-base) var(--ease-out)}.project-list-root .projCard:hover .coverMedia{transform:scale(1.05)}.project-list-root .cover.violet{background:linear-gradient(135deg,oklch(70% .16 290),oklch(46% .2 285))}.project-list-root .cover.cyan{background:linear-gradient(135deg,oklch(74% .13 200),oklch(48% .16 222))}.project-list-root .cover.amber{background:linear-gradient(135deg,oklch(80% .14 70),oklch(58% .18 45))}.project-list-root .cover.rose{background:linear-gradient(135deg,oklch(74% .14 340),oklch(52% .18 338))}.project-list-root .cover.teal{background:linear-gradient(135deg,oklch(76% .12 170),oklch(50% .15 180))}.project-list-root .cover.lime{background:linear-gradient(135deg,oklch(80% .14 135),oklch(56% .17 150))}.project-list-root .cover.indigo{background:linear-gradient(135deg,oklch(70% .13 255),oklch(44% .16 260))}.project-list-root .cover.coral{background:linear-gradient(135deg,oklch(74% .15 30),oklch(52% .19 18))}.project-list-root .coverArt{z-index:1;opacity:.9;pointer-events:none;background-image:linear-gradient(oklch(100% 0 0/.14) 1px,#0000 1px),linear-gradient(90deg,oklch(100% 0 0/.14) 1px,#0000 1px);background-size:28px 28px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(85% 85% at 50% 45%,#000,#0000);mask-image:radial-gradient(85% 85% at 50% 45%,#000,#0000)}.project-list-root .coverTop{z-index:2;justify-content:space-between;align-items:flex-start;display:flex;position:relative}.project-list-root .coverBottom{z-index:2;justify-content:space-between;align-items:flex-end;display:flex;position:relative}.project-list-root .subjChip{-webkit-backdrop-filter:blur(8px);color:#fff;border-radius:var(--r-pill);background:oklch(100% 0 0/.22);border:1px solid oklch(100% 0 0/.3);padding:4px 11px;font-size:11px;font-weight:500}.project-list-root .coverGlyph{z-index:2;font-family:var(--font-serif);color:oklch(100% 0 0/.96);letter-spacing:-.02em;text-shadow:0 4px 20px oklch(0% 0 0/.25);-webkit-line-clamp:3;-webkit-box-orient:vertical;align-self:center;max-width:84%;margin:auto 0;font-size:28px;font-weight:700;line-height:1.14;display:-webkit-box;position:relative;overflow:hidden}.project-list-root .statusRibbon{z-index:3;color:oklch(46% .13 155);background:oklch(100% 0 0/.92);border-radius:999px;align-items:center;gap:5px;padding:4px 10px;font-size:10px;font-weight:600;display:flex;position:absolute;top:12px;right:12px;box-shadow:0 4px 12px oklch(0% 0 0/.15)}.project-list-root .statusRibbon:before{content:"";background:var(--success-solid);border-radius:50%;width:5px;height:5px}.project-list-root .statusRibbon.muted{color:var(--muted-foreground)}.project-list-root .statusRibbon.muted:before{background:color-mix(in oklab, var(--muted-foreground) 40%, transparent)}.project-list-root .pcBody{padding:15px 16px 14px}.project-list-root .pcTitle{color:var(--foreground);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:15px;font-weight:600;line-height:1.4;display:-webkit-box;overflow:hidden}.project-list-root .pcDesc{color:var(--muted-foreground);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:7px 0 0;font-size:12px;line-height:1.55;display:-webkit-box;overflow:hidden}.project-list-root .pcFoot{border-top:1px solid var(--border);justify-content:space-between;align-items:center;margin-top:13px;padding-top:12px;display:flex}.project-list-root .pcMeta{color:var(--foreground-subtle);gap:14px;font-size:12px;display:flex}.project-list-root .pcMeta .it{align-items:center;gap:5px;display:flex}.project-list-root .pcMeta .it svg{width:13px;height:13px;color:var(--muted-foreground)}.project-list-root .pcMeta .it b{color:var(--foreground);font-family:var(--font-num);font-variant-numeric:tabular-nums;font-weight:600}.project-list-root .gradeTag{font-size:10px;font-weight:600;font-family:var(--font-mono);letter-spacing:.04em;border-radius:999px;padding:3px 9px}.project-list-root .gradeTag.primary{color:oklch(48% .14 55);background:oklch(94% .05 70)}.project-list-root .gradeTag.middle{background:color-mix(in oklab, var(--primary) 10%, transparent);color:var(--primary-strong)}.project-list-root .gradeTag.high{color:oklch(46% .14 232);background:oklch(94% .04 220)}.project-list-root .gradeTag.teacher{color:oklch(44% .13 160);background:oklch(94% .04 150)}.project-list-root .pageNav{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;margin:36px auto 0;display:flex}.project-list-root .pageBtn{border-radius:var(--r-pill);border:1px solid var(--input);background:var(--card);min-width:40px;color:var(--foreground-subtle);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);padding:9px 14px;font-family:inherit;font-size:13px;font-weight:600}.project-list-root .pageBtn:hover:not(:disabled){border-color:color-mix(in oklab, var(--primary) 75%, transparent);color:var(--primary-strong)}.project-list-root .pageBtn.active{color:#fff;background:linear-gradient(135deg, var(--primary), var(--primary-strong));box-shadow:var(--elevation-2);border-color:#0000}.project-list-root .pageBtn:disabled{opacity:.45;cursor:not-allowed}.project-list-root .stateWrap{text-align:center;place-items:center;min-height:32vh;display:grid}.project-list-root .spinner{border:3px solid var(--border);border-bottom-color:var(--primary);border-radius:50%;width:48px;height:48px;margin:0 auto 16px;animation:.9s linear infinite plSpin}@keyframes plSpin{to{transform:rotate(360deg)}}.project-list-root .stateText{color:var(--muted-foreground);font-size:14px}.project-list-root .emptyNote{text-align:center;color:var(--muted-foreground);background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);margin-top:26px;padding:56px 24px;font-size:15px}.project-list-root .tabPanel{margin-top:26px}@media (width<=1024px){.project-list-root .hero{padding:52px 40px 48px}.project-list-root .heroGrid{grid-template-columns:1fr;gap:36px}.project-list-root .heroArt{display:none}.project-list-root .hero h1{font-size:46px}.project-list-root .gallery{columns:2}}@media (width<=640px){.project-list-root .shell{padding:20px 16px 40px}.project-list-root .hero{padding:40px 24px 36px}.project-list-root .hero h1{font-size:36px}.project-list-root .heroStats{gap:28px}.project-list-root .gallery{columns:1}.project-list-root .railSpacer{display:none}}
