:root{--bg: #F5F8F6;--surface-100: #EDF2EF;--surface: #FFFFFF;--hairline: #E6ECE9;--line: #DCE4E0;--text: #16211D;--muted: #5E6A64;--faint: #93A09A;--primary-50: #F0F7F4;--primary-100: #E2F0EB;--primary: #2D8B7A;--primary-600: #21705F;--primary-700: #195A4C;--accent-warm: #D97B50;--accent-warm-soft: #FBF0EA;--accent-lake: #5B8DB8;--accent-lake-soft: #EEF4F9;--accent-olive: #788C5D;--accent-olive-soft: #F2F5EE;--success: #3BA55D;--warn: #D9801F;--ring: rgba(45, 139, 122, .4);--r-card: 16px;--r-btn: 12px;--r-badge: 8px;--r-pill: 999px;--shadow-card: 0 4px 16px -2px rgba(14, 31, 25, .06), 0 1px 3px rgba(14, 31, 25, .04);--shadow-lift: 0 16px 36px -8px rgba(14, 31, 25, .12), 0 4px 12px -2px rgba(14, 31, 25, .06);--font-heading: "Poppins", "Noto Sans SC", -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;--font-body: "Lora", "Noto Sans SC", -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", serif;--font-sans: "Noto Sans SC", -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;--size-display: clamp(2.2rem, 5vw, 3.4rem);--size-h1: clamp(1.7rem, 3.5vw, 2.3rem);--size-h2: clamp(1.4rem, 2.5vw, 1.9rem);--size-body: clamp(.95rem, 1.1vw, 1.02rem);--leading: 1.6;--container: 1140px;--gutter: clamp(1.25rem, 4vw, 2.5rem)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}:focus-visible{outline:2px solid var(--primary);outline-offset:3px;border-radius:4px}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{margin:0;font-family:var(--font-sans);color:var(--text);background:radial-gradient(120% 60% at 50% -12%,#fff,#fff0 55%),var(--bg);line-height:var(--leading);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden;touch-action:manipulation;font-variant-numeric:tabular-nums}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background-image:linear-gradient(rgba(20,31,27,.072) 1px,transparent 1px),linear-gradient(90deg,rgba(20,31,27,.072) 1px,transparent 1px);background-size:72px 72px;mask-image:radial-gradient(ellipse 90% 70% at 50% 8%,#000 0%,transparent 78%);-webkit-mask-image:radial-gradient(ellipse 90% 70% at 50% 8%,#000 0%,transparent 78%);pointer-events:none}.skip-link{position:absolute;left:-9999px;top:0;z-index:100;padding:.8rem 1.4rem;background:#fff;color:var(--primary-700);font-weight:700;border-radius:0 0 var(--r-btn) 0;box-shadow:var(--shadow-card)}.skip-link:focus-visible{left:0}::selection{background:var(--primary-100);color:var(--primary-700)}img,svg{vertical-align:middle}a{color:inherit;text-decoration:none}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);line-height:1.2;font-weight:700;letter-spacing:-.025em;margin:0 0 .5em;text-wrap:balance}p{margin:0 0 1em}.container{max-width:var(--container);margin:0 auto;padding-inline:var(--gutter)}a:focus-visible,button:focus-visible{outline:3px solid var(--ring);outline-offset:3px;border-radius:8px}button{font-family:inherit;color:inherit;cursor:pointer;border:0}.nav{position:fixed;inset:0 0 auto 0;z-index:50;-webkit-backdrop-filter:blur(20px) saturate(160%);backdrop-filter:blur(20px) saturate(160%);background:#f5f8f6d1;border-bottom:1px solid var(--hairline)}.nav-inner{display:flex;align-items:center;gap:1.2rem;height:64px;position:relative}.brand{display:inline-flex;align-items:center;gap:.65rem;font-family:var(--font-heading);font-weight:700;font-size:1.05rem;color:var(--text)}.brand-logo-wrap{display:grid;place-items:center;width:30px;height:30px;border-radius:7px;background:var(--surface);border:1px solid var(--line);padding:2px}.brand-text-group{display:flex;flex-direction:column;line-height:1.1}.brand-name{font-size:1.05rem;font-weight:700}.nav-links{display:flex;gap:1.8rem;margin-inline:auto;font-size:.92rem;font-weight:500;color:var(--muted)}.nav-links a{padding:.4rem 0;transition:color .18s ease}.nav-links a:hover{color:var(--primary-700)}.nav-cta{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1.1rem;border-radius:var(--r-pill);border:1px solid var(--line);background:var(--surface);font-weight:600;font-size:.88rem;color:var(--text);box-shadow:0 1px 3px #0e1f190a;transition:transform .18s cubic-bezier(.2,.8,.3,1),box-shadow .18s ease,border-color .18s ease}.nav-cta:hover{transform:translateY(-1px);border-color:var(--primary);color:var(--primary-700);box-shadow:var(--shadow-card)}.nav-cta:active{transform:scale(.97)}.nav-cta-download{display:inline-flex;align-items:center;gap:.45rem;background:var(--surface);border:1px solid var(--line);color:var(--primary-700)}.nav-cta-dot{width:6px;height:6px;border-radius:50%;background:var(--primary);box-shadow:0 0 #2d8b7a99;animation:pulse-dot 2.4s infinite}.nav-cta-badge{display:inline-block;padding:.1rem .42rem;background:var(--primary-50);border:1px solid var(--primary-100);color:var(--primary);font-size:.72rem;font-weight:700;border-radius:var(--r-pill)}.nav-sheet-highlight{display:flex!important;align-items:center;justify-content:space-between;color:var(--primary-700)!important;font-weight:700!important;background:var(--primary-50)!important;padding:.75rem 1rem!important;border-radius:var(--r-btn);border-bottom:0!important;margin-top:.35rem}.nav-sheet-badge{padding:.15rem .5rem;background:var(--primary);color:#fff;font-size:.74rem;border-radius:var(--r-pill);font-weight:600}.nav-menu-btn{display:none;background:none;border:0;width:44px;height:44px;border-radius:10px;place-items:center;color:var(--text)}.nav-sheet{position:fixed;inset:64px 0 auto 0;z-index:49;display:grid;gap:.3rem;padding:1.2rem var(--gutter) 1.8rem;background:#f5f8f6fa;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid var(--hairline);transform:translateY(-12px);opacity:0;pointer-events:none;transition:opacity .22s ease,transform .22s ease}.nav-sheet.open{transform:translateY(0);opacity:1;pointer-events:auto}.nav-sheet a{padding:.75rem 0;font-weight:600;font-size:1rem;border-bottom:1px solid var(--hairline)}.nav-sheet a:last-child{border-bottom:0}.hero{position:relative;padding-top:clamp(6.5rem,13vw,9.2rem);padding-bottom:clamp(3.8rem,7vw,6rem);overflow:hidden}.hero:before{content:"";position:absolute;left:50%;top:0;transform:translate(-50%);width:min(1120px,100%);height:100%;background:radial-gradient(ellipse 70% 50% at 50% 12%,rgba(45,139,122,.13),transparent 70%);pointer-events:none}.hero-grid{position:relative;display:grid;grid-template-columns:1.18fr .82fr;gap:clamp(2.5rem,5vw,4.5rem);align-items:center}.hero-content{position:relative;z-index:2}.hero-content:before{content:"";position:absolute;top:-30px;left:-50px;width:480px;height:400px;background:radial-gradient(circle at 35% 35%,rgba(45,139,122,.18) 0%,rgba(45,139,122,.04) 55%,transparent 75%);filter:blur(40px);pointer-events:none;z-index:-1}.eyebrow{display:inline-flex;align-items:center;gap:.55rem;padding:.38rem .95rem;border-radius:var(--r-pill);background:#2d8b7a14;border:1px solid rgba(45,139,122,.22);color:var(--primary-700);font-weight:600;font-size:.86rem;letter-spacing:.02em;margin-bottom:1.25rem;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 2px 8px #2d8b7a0f}.eyebrow-dot{width:8px;height:8px;border-radius:50%;background:var(--primary);box-shadow:0 0 #2d8b7a99;animation:pulse-dot 2.4s infinite}@keyframes pulse-dot{0%{box-shadow:0 0 #2d8b7a99}70%{box-shadow:0 0 0 8px #2d8b7a00}to{box-shadow:0 0 #2d8b7a00}}.hero h1{font-size:clamp(3.2rem,5.8vw,5.2rem);font-weight:800;color:#101b17;margin-bottom:.28em;line-height:1.06;letter-spacing:-.04em;text-wrap:balance}.hero h1 .accent-word{background:linear-gradient(135deg,#0ea584,#2d8b7a 45%,#165b4d);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;position:relative;display:inline-block;filter:drop-shadow(0 4px 18px rgba(45,139,122,.24))}.hero-en{font-family:var(--font-heading);font-weight:600;font-size:clamp(1.2rem,1.85vw,1.45rem);color:var(--primary-700);letter-spacing:-.01em;margin-bottom:1.15rem;display:flex;align-items:center;gap:.65rem}.hero-en:before{content:"";display:inline-block;width:24px;height:2.5px;background:var(--primary);border-radius:2px;opacity:.85}.hero-desc{font-size:clamp(1rem,1.15vw,1.12rem);color:var(--muted);line-height:1.7;max-width:34rem;margin-bottom:1.9rem;text-wrap:balance}.hero-cta{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;margin-bottom:1.8rem}.hero-cta .btn{min-height:52px;padding:0 1.75rem;font-size:1rem}.hero-cta .btn-primary{box-shadow:0 10px 28px -6px #2d8b7a7a,0 2px 6px #2d8b7a33}.hero-cta .btn-primary:hover{box-shadow:0 14px 34px -6px #2d8b7a94,0 4px 10px #2d8b7a40;transform:translateY(-2px)}.hero-btn-download{display:inline-flex;align-items:center;gap:.6rem}.hero-btn-badge{display:inline-block;padding:.12rem .5rem;background:#ffffff38;border:1px solid rgba(255,255,255,.38);color:#fff;font-size:.76rem;border-radius:var(--r-pill);font-weight:700;margin-left:.2rem;letter-spacing:.02em}.hero-subhint{margin-top:-.85rem;margin-bottom:1.5rem;font-size:.82rem;color:var(--muted);letter-spacing:.01em;display:flex;align-items:center;gap:.4rem}.hero-meta{display:flex;flex-wrap:wrap;gap:1.3rem;align-items:center;font-size:.85rem;color:var(--muted);padding-top:.2rem}.hero-meta-item{display:inline-flex;align-items:center;gap:.4rem;font-weight:500}.hero-meta-item svg{color:var(--primary);flex-shrink:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:46px;padding:0 1.4rem;border-radius:var(--r-btn);font-family:var(--font-heading);font-weight:600;font-size:.94rem;border:1px solid transparent;transition:transform .15s cubic-bezier(.2,.8,.3,1),box-shadow .18s ease,background .18s ease,border-color .18s ease;-webkit-user-select:none;user-select:none}.btn:active{transform:scale(.97)}.btn-primary{background:var(--primary);color:#fff;box-shadow:0 8px 24px -6px #2d8b7a7a}.btn-primary:hover{background:var(--primary-600);transform:translateY(-2px);box-shadow:0 12px 28px -6px #2d8b7a8f}.btn-secondary{background:var(--surface);border-color:var(--line);color:var(--primary-700);box-shadow:0 1px 3px #0e1f190a}.btn-secondary:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:var(--shadow-card)}.phone-wrap{position:relative;display:flex;justify-content:center}.phone-wrap:before{content:"";position:absolute;left:50%;top:6%;transform:translate(-50%);width:min(480px,90vw);height:420px;background:radial-gradient(ellipse 55% 55% at 50% 45%,rgba(45,139,122,.15),transparent 70%);pointer-events:none;z-index:1}.phone{width:min(300px,74vw);aspect-ratio:9 / 19.2;border-radius:44px;background:#111d19;padding:12px;box-shadow:var(--shadow-lift),0 0 0 1px #ffffff1a inset;position:relative;z-index:2}.phone-island{position:absolute;top:20px;left:50%;transform:translate(-50%);width:86px;height:20px;background:#0b1411;border-radius:12px;z-index:6}.phone-screen{border-radius:34px;background:var(--bg);height:100%;overflow:hidden;position:relative;display:flex;flex-direction:column;font-family:var(--font-sans);-webkit-user-select:none;user-select:none}.ph-status{display:flex;justify-content:space-between;align-items:center;padding:9px 16px 4px;font-size:11px;font-weight:700;color:var(--text)}.ph-status .icons{display:flex;gap:4px;align-items:center}.ph-app{flex:1;display:flex;flex-direction:column;padding:4px 12px 10px;overflow:hidden}.ph-view{display:none;flex-direction:column;flex:1;animation:fadeInView .2s cubic-bezier(.2,.8,.3,1)}.ph-view.active{display:flex}@keyframes fadeInView{0%{opacity:0;transform:scale(.98)}to{opacity:1;transform:scale(1)}}.ph-view-head{display:flex;justify-content:space-between;align-items:center;padding:5px 2px 8px}.ph-view-head h6{margin:0;font-size:13.5px;font-weight:700;color:var(--text)}.ph-badge{font-size:9px;font-weight:600;color:var(--primary-700);background:var(--primary-100);padding:.2rem .5rem;border-radius:var(--r-pill)}.ph-sched{display:grid;grid-template-columns:18px repeat(5,1fr);gap:3px;padding:2px}.ph-dow{font-size:8.5px;text-align:center;color:var(--muted);font-weight:700;padding-bottom:3px}.ph-slot{font-size:8px;color:var(--faint);font-weight:600;display:flex;align-items:center;justify-content:center}.ph-cell{min-height:27px;border-radius:5px;background:#fff;box-shadow:0 1px 2px #0e1f190d;display:flex;flex-direction:column;justify-content:center;padding:2px;font-size:7px;line-height:1.15;color:#fff}.ph-cell.c-teal{background:var(--primary)}.ph-cell.c-lake{background:var(--accent-lake)}.ph-cell.c-warm{background:var(--accent-warm)}.ph-cell.c-olive{background:var(--accent-olive)}.ph-cell.empty{background:#fff9;box-shadow:none;border:1px dashed var(--hairline)}.ph-cell.tall{min-height:56px}.ph-dorm-box{background:#fff;border-radius:11px;padding:9px;box-shadow:0 1px 3px #0e1f190f;margin-bottom:7px}.ph-dorm-meter{display:flex;align-items:baseline;justify-content:space-between;margin-top:3px}.ph-dorm-val{font-family:var(--font-heading);font-size:21px;font-weight:700;color:var(--primary-700)}.ph-dorm-status{font-size:9px;font-weight:700;color:var(--success);background:#e8f5e9;padding:2px 5px;border-radius:4px}.ph-laundry-item{display:flex;justify-content:space-between;align-items:center;font-size:9.5px;padding:5px 0;border-bottom:1px solid var(--hairline)}.ph-laundry-item:last-child{border-bottom:0}.ph-gpa-hero{background:linear-gradient(135deg,var(--primary),var(--primary-600));color:#fff;border-radius:11px;padding:9px 11px;margin-bottom:7px}.ph-gpa-num{font-family:var(--font-heading);font-size:23px;font-weight:800;line-height:1}.ph-score-row{display:flex;justify-content:space-between;background:#fff;padding:6px 8px;border-radius:7px;margin-bottom:4px;font-size:9px;box-shadow:0 1px 2px #0e1f190a}.ph-score-bold{font-weight:700;color:var(--primary-700);font-family:var(--font-heading)}.ph-tabbar{margin-top:auto;display:flex;justify-content:space-between;gap:4px;padding-top:5px}.ph-tab-btn{flex:1;text-align:center;font-size:9.5px;font-weight:600;color:var(--muted);padding:7px 0;border-radius:9px;background:#fff;box-shadow:0 1px 3px #0e1f190f;transition:all .16s ease}.ph-tab-btn.active{color:#fff;background:var(--primary);box-shadow:0 3px 8px -1px #2d8b7a66}.float-chip{position:absolute;z-index:4;background:#ffffffe6;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--hairline);border-radius:var(--r-card);box-shadow:var(--shadow-card);padding:.6rem .9rem;font-size:.8rem;font-weight:700;color:var(--text);pointer-events:none;animation:floatChip 4s infinite ease-in-out}.float-chip small{display:block;font-weight:600;color:var(--muted);font-size:.68rem;margin-bottom:2px}.fc-left{top:18%;left:-8%;animation-delay:0s}.fc-right{bottom:22%;right:-8%;animation-delay:2s}@keyframes floatChip{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.vals{position:relative;border-block:1px solid var(--hairline);background:var(--surface)}.vals-inner{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--hairline)}.val{padding:1.5rem 1.4rem;display:flex;gap:.9rem;align-items:flex-start;background:var(--surface);transition:background .2s ease}.val:hover{background:var(--primary-50)}.val .ic{flex:0 0 auto;width:40px;height:40px;border-radius:10px;display:grid;place-items:center;color:var(--primary);background:var(--primary-50);border:1px solid var(--primary-100)}.val h4{margin:0 0 .25rem;font-size:.98rem;font-weight:700;color:var(--text)}.val p{margin:0;color:var(--muted);font-size:.88rem;line-height:1.5}section.block{padding:clamp(3.5rem,7vw,5.5rem) 0;position:relative}.sec-head{max-width:40rem;margin-bottom:2.6rem}.sec-kicker{color:var(--primary-700);font-family:var(--font-heading);font-weight:700;font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;margin-bottom:.45rem;display:inline-block}.sec-head h2{font-size:var(--size-h1);color:var(--text);margin-bottom:.35em}.sec-head p{color:var(--muted);font-size:var(--size-body);line-height:1.6;margin:0}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:1.15rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:1.4rem;box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:.75rem;transition:transform .2s cubic-bezier(.2,.8,.3,1),box-shadow .2s ease,border-color .2s ease}.card:hover{transform:translateY(-4px);border-color:#2d8b7a5c;box-shadow:var(--shadow-lift)}.card .ic{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;color:#fff}.ic-teal{background:var(--primary)}.ic-lake{background:var(--accent-lake)}.ic-warm{background:var(--accent-warm)}.ic-olive{background:var(--accent-olive)}.ic-deep{background:var(--primary-700)}.card h4{margin:0;font-size:1.02rem;font-weight:700}.card p{margin:0;color:var(--muted);font-size:.88rem;line-height:1.55}.card .tag{margin-top:auto;font-size:.72rem;font-weight:600;color:var(--primary-700);background:var(--primary-50);align-self:flex-start;padding:.2rem .55rem;border-radius:var(--r-badge);border:1px solid var(--primary-100)}.spotlight{background:linear-gradient(180deg,var(--surface) 0%,var(--primary-50) 100%);border-block:1px solid var(--hairline)}.spotlight-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2rem,5vw,4rem);align-items:center}.spot-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:1.6rem;box-shadow:var(--shadow-card)}.spot-interactive-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.spot-tabs{display:flex;gap:4px;background:var(--surface-100);padding:3px;border-radius:var(--r-pill)}.spot-tab-btn{font-size:.78rem;font-weight:600;padding:.3rem .68rem;border-radius:var(--r-pill);background:transparent;color:var(--muted);transition:all .16s ease}.spot-tab-btn.active{background:#fff;color:var(--primary-700);box-shadow:0 2px 6px #0e1f1914}.spot-slots-grid{display:grid;gap:.55rem;margin:1rem 0}.spot-slot-row{display:grid;grid-template-columns:68px 1fr 1fr 94px;align-items:center;gap:.45rem;padding:.55rem .75rem;border-radius:9px;background:var(--surface-100);font-size:.8rem}.spot-slot-time{font-weight:600;color:var(--muted);font-size:.76rem}.spot-person{padding:.28rem .55rem;border-radius:5px;font-weight:600;text-align:center;font-size:.76rem}.person-busy{background:var(--primary-100);color:var(--primary-700)}.person-free{background:#fff;color:var(--muted);border:1px dashed var(--line)}.spot-verdict{text-align:center;font-weight:700;font-size:.78rem;border-radius:var(--r-pill);padding:.25rem .45rem}.verdict-match{background:var(--accent-warm-soft);color:var(--accent-warm);border:1px solid rgba(217,123,80,.3)}.verdict-none{background:#fff;color:var(--muted)}.spot-list{list-style:none;margin:1.4rem 0 0;padding:0;display:grid;gap:.85rem}.spot-list li{display:flex;gap:.7rem;align-items:flex-start;color:var(--muted);font-size:.92rem}.spot-list svg{color:var(--primary);flex:0 0 auto;margin-top:3px}.spot-subcards{display:grid;grid-template-columns:repeat(3,1fr);gap:1.15rem;margin-top:2.2rem}.spot-subcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:1.25rem;display:flex;gap:.95rem;align-items:flex-start;box-shadow:var(--shadow-card);transition:transform .2s cubic-bezier(.2,.8,.3,1),box-shadow .2s ease,border-color .2s ease}.spot-subcard:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift);border-color:#2d8b7a59}.spot-subcard-icon{width:40px;height:40px;border-radius:10px;background:var(--primary-50);border:1px solid var(--primary-100);color:var(--primary);display:grid;place-items:center;flex-shrink:0}.spot-subcard h5{margin:0 0 .25rem;font-size:.98rem;font-weight:700;color:var(--text)}.spot-subcard p{margin:0;font-size:.84rem;color:var(--muted);line-height:1.55}.dorm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}.dorm-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:1.5rem;box-shadow:var(--shadow-card);display:flex;flex-direction:column;gap:.85rem;transition:transform .2s ease,box-shadow .2s ease}.dorm-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lift)}.dorm-card-badge{display:inline-flex;align-items:center;gap:.35rem;align-self:flex-start;padding:.22rem .58rem;border-radius:var(--r-badge);font-size:.74rem;font-weight:700}.badge-warm{background:var(--accent-warm-soft);color:var(--accent-warm)}.badge-lake{background:var(--accent-lake-soft);color:var(--accent-lake)}.badge-olive{background:var(--accent-olive-soft);color:var(--accent-olive)}.dorm-meter-box{background:var(--surface-100);border-radius:11px;padding:1rem;margin:.25rem 0}.dorm-meter-head{display:flex;justify-content:space-between;align-items:baseline}.dorm-meter-num{font-family:var(--font-heading);font-size:2rem;font-weight:800;color:var(--primary-700)}.dorm-meter-bar{height:7px;border-radius:4px;background:#e0e8e4;overflow:hidden;margin-top:.7rem}.dorm-meter-fill{height:100%;border-radius:4px;background:var(--primary);width:68%}.laundry-status-box{display:grid;gap:.5rem;margin:.25rem 0}.laundry-room{display:flex;justify-content:space-between;align-items:center;background:var(--surface-100);padding:.65rem .85rem;border-radius:9px;font-size:.85rem}.laundry-stat{font-weight:700;color:var(--success)}.security{background:radial-gradient(120% 90% at 15% -20%,rgba(45,139,122,.22),transparent 55%),#131f1b;color:#f3f6f5;border-radius:var(--r-card);padding:clamp(2rem,4.5vw,3.2rem);display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.6rem,4vw,3rem);border:1px solid rgba(255,255,255,.08);box-shadow:var(--shadow-lift)}.security h2{color:#fff}.security .sub{color:#c3d1cd;line-height:1.6;margin-bottom:0}.sec-list{list-style:none;margin:0;padding:0;display:grid;gap:.95rem}.sec-list li{display:flex;gap:.75rem;align-items:flex-start;color:#dce8e4}.sec-list svg{color:var(--primary-100);flex:0 0 auto;margin-top:3px}.sec-list strong{color:#fff;display:block;margin-bottom:.15rem;font-size:.95rem}.sec-list span{font-size:.86rem;color:#a9bcb6;line-height:1.5}.final-cta{text-align:center;position:relative}.final-card{background:radial-gradient(120% 160% at 50% 0%,var(--primary-50) 0%,var(--surface) 65%);border:1px solid var(--line);border-radius:calc(var(--r-card) + 8px);padding:clamp(2.2rem,4.5vw,3.8rem) var(--gutter);box-shadow:var(--shadow-card);position:relative}.download-eyebrow{display:inline-flex;align-items:center;gap:.5rem;padding:.35rem .9rem;border-radius:var(--r-pill);background:var(--primary-50);border:1px solid var(--primary-100);color:var(--primary-700);font-size:.82rem;font-weight:600;margin-bottom:1rem}.final-card h2{font-size:clamp(1.8rem,3.5vw,2.5rem);margin-bottom:.2em;text-wrap:balance}.final-card .en-sub{font-family:var(--font-heading);font-weight:600;color:var(--primary-700);font-size:1.05rem;margin-bottom:.8rem}.final-desc{color:var(--muted);max-width:36rem;margin-inline:auto;margin-bottom:2.2rem;font-size:.98rem;line-height:1.65;text-wrap:balance}.download-hub{display:grid;grid-template-columns:1.35fr .95fr;gap:1.6rem;text-align:left;max-width:960px;margin-inline:auto;align-items:stretch}.download-primary-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:clamp(1.4rem,2.5vw,2rem);box-shadow:0 4px 18px -3px #0e1f190d;display:flex;flex-direction:column}.dl-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.25rem;padding-bottom:.85rem;border-bottom:1px solid var(--hairline)}.dl-badge-wrap{display:flex;align-items:center;gap:.55rem}.platform-tag{display:inline-flex;align-items:center;gap:.4rem;font-weight:700;font-size:.95rem;color:var(--text)}.platform-tag svg{color:var(--primary)}.version-pill{display:inline-block;padding:.12rem .5rem;background:var(--primary-50);border:1px solid var(--primary-100);color:var(--primary-700);font-size:.78rem;font-weight:700;border-radius:var(--r-pill)}.release-date{font-size:.82rem;color:var(--muted);font-weight:500}.dl-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1.5rem}.btn-dl-main{flex:1 1 200px;background:var(--primary);color:#fff;font-size:.96rem;box-shadow:0 8px 24px -6px #2d8b7a7a}.btn-dl-main:hover{background:var(--primary-600);box-shadow:0 12px 28px -6px #2d8b7a94}.btn-copy{background:var(--surface-100);border-color:var(--line);color:var(--text);font-size:.9rem}.btn-copy:hover{background:var(--surface);border-color:var(--primary);color:var(--primary-700)}.btn-copied{background:var(--primary-50)!important;border-color:var(--primary)!important;color:var(--primary-700)!important}.dl-highlights{margin-bottom:1.4rem}.dl-hl-title{font-size:.86rem;font-weight:700;color:var(--text);margin-bottom:.55rem}.dl-hl-list{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}.dl-hl-list li{display:flex;align-items:flex-start;gap:.45rem;font-size:.86rem;color:var(--muted);line-height:1.45}.dl-hl-list svg{color:var(--primary);flex-shrink:0;margin-top:2px}.dl-tip-box{margin-top:auto;display:flex;gap:.6rem;padding:.8rem .95rem;background:var(--surface-100);border:1px solid var(--hairline);border-radius:var(--r-badge);font-size:.79rem;color:var(--muted);line-height:1.5}.dl-tip-box svg{color:var(--accent-warm);flex-shrink:0;margin-top:2px}.dl-tip-text strong{color:var(--text)}.download-side-col{display:flex;flex-direction:column;gap:1.1rem}.qr-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-card);padding:1.5rem 1.3rem;text-align:center;box-shadow:0 4px 18px -3px #0e1f190d;display:flex;flex-direction:column;align-items:center;justify-content:center}.qr-wrapper{background:#fff;padding:.55rem;border-radius:12px;border:1px solid var(--line);box-shadow:0 2px 8px #0000000a;margin-bottom:.85rem;display:inline-block}.qr-wrapper img{display:block;width:140px;height:140px}.qr-info strong{display:block;font-size:.92rem;color:var(--text);margin-bottom:.25rem}.qr-info p{font-size:.8rem;color:var(--muted);margin:0;line-height:1.45}.ios-status-card{background:#ffffffb3;border:1px dashed var(--line);border-radius:var(--r-card);padding:1.25rem 1.3rem;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.ios-header{display:flex;align-items:center;gap:.7rem;margin-bottom:.5rem}.ios-icon{width:36px;height:36px;border-radius:10px;background:var(--surface-100);border:1px solid var(--line);display:grid;place-items:center;color:var(--text);flex-shrink:0}.ios-title{font-size:.9rem;font-weight:700;color:var(--text);line-height:1.2}.ios-badge{display:inline-block;font-size:.73rem;color:var(--muted);background:var(--surface-100);padding:.08rem .42rem;border-radius:var(--r-pill);font-weight:500;margin-top:.15rem}.ios-desc{font-size:.8rem;color:var(--muted);margin:0;line-height:1.45}.anchor-target{position:relative;top:-80px;display:block;visibility:hidden;height:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.footer{border-top:1px solid var(--hairline);background:var(--surface);padding:2.6rem 0 2rem;color:var(--muted);font-size:.86rem}.footer-inner{display:flex;flex-wrap:wrap;gap:1.5rem;justify-content:space-between;align-items:flex-start}.footer-brand-col{max-width:26rem}.footer .brand{font-size:1rem;margin-bottom:.4rem}.footer-slogan{font-family:var(--font-heading);color:var(--primary-700);font-size:.82rem;font-weight:600;margin-bottom:.5rem}.footer small{display:block;line-height:1.6;color:var(--faint)}.footer-links{display:flex;gap:1.4rem}.footer-links a:hover{color:var(--primary-700)}.reveal{opacity:0;transform:translateY(18px);transition:opacity .5s cubic-bezier(.2,.8,.3,1),transform .5s cubic-bezier(.2,.8,.3,1)}.reveal.in{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}.card:hover,.btn:hover,.nav-cta:hover,.dorm-card:hover{transform:none}.float-chip{animation:none}}@media(max-width:1024px){.cards{grid-template-columns:repeat(2,1fr)}.dorm-grid{grid-template-columns:1fr}}@media(max-width:980px){.hero-grid{grid-template-columns:1fr}.vals-inner{grid-template-columns:1fr;gap:0}.val{border-bottom:1px solid var(--hairline)}.spotlight-grid,.spot-subcards,.security{grid-template-columns:1fr}.nav-links,.nav-cta{display:none}.nav-menu-btn{display:grid}.fc-left{left:0%}.fc-right{right:0%}.download-hub{grid-template-columns:1fr}}@media(max-width:560px){.cards{grid-template-columns:1fr}.phone{width:min(260px,80vw)}.hero-cta{flex-direction:column;align-items:stretch}.hero-cta .btn{width:100%}.spot-slot-row{grid-template-columns:56px 1fr 1fr}.spot-slot-row .spot-verdict{grid-column:1 / -1;margin-top:3px}.dl-actions{flex-direction:column}.dl-actions .btn{width:100%}.dl-card-header{flex-direction:column;align-items:flex-start;gap:.5rem}}
