@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@500;600;700;800;900&display=swap');
:root{--bg:#F4F4F2;--surface:#FFF;--ink:#16161A;--ink-soft:#6B6B72;--ink-dim:#ACACB2;--line:#ECECE8;--accent:#16161A;--accent-deep:#16161A;--warn:#6B6B72;--accent-bg:#F4F4F2}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,.scroll{scrollbar-width:none;-ms-overflow-style:none}html::-webkit-scrollbar,body::-webkit-scrollbar,.scroll::-webkit-scrollbar{display:none}html,body{height:100%;background:var(--bg);color:var(--ink)}body{font-family:'Manrope',-apple-system,BlinkMacSystemFont,sans-serif;display:flex;justify-content:center;min-height:100dvh}button{font:inherit;cursor:pointer}a{color:inherit;text-decoration:none}.screen{width:100%;max-width:480px;height:100dvh;display:flex;flex-direction:column;background:var(--bg);overflow:hidden}.scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:env(safe-area-inset-top,22px) 16px calc(112px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:14px}.scroll>*{flex-shrink:0}.header{display:flex;align-items:center;justify-content:flex-start;padding:6px 6px 10px}.brand{font-size:27px;font-weight:900;line-height:1;letter-spacing:-.045em}.page{display:none;flex-direction:column;gap:14px}.page.active{display:flex}
/* NUNCHI card row */.card-row{background:var(--surface);border-radius:18px;padding:10px 12px;display:flex;align-items:center;gap:10px}.card-row.compact{padding:9px 11px}.date-badge{width:38px;height:38px;border-radius:50%;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;flex-shrink:0;line-height:1}.date-badge .num{font-size:11px;font-weight:900;color:var(--ink)}.date-badge .unit{font-size:8px;font-weight:700;color:var(--ink-dim)}.card-row-text{flex:1;min-width:0}.card-row-title{font-size:15px;font-weight:700;color:var(--ink)}.card-row-sub{font-size:12.5px;font-weight:600;color:var(--ink-dim);margin-top:1px;display:flex;align-items:center;gap:5px}.pill-btn{background:var(--accent);color:#fff;border:0;font-size:13px;font-weight:800;padding:10px 20px;border-radius:100px;flex-shrink:0}.pill-btn.ghost{background:var(--ink)}
/* NUNCHI hero */.hero-card{background:#E4E4E1;border-radius:26px;padding:16px 18px 14px;position:relative;overflow:hidden;display:flex;flex-direction:column;min-height:285px;touch-action:pan-y;user-select:none}.hero-card:active,.card-row:active,.ad-card:active,.upcoming-row:active,.rank-row:active,.story-item-head:active{transform:scale(.985)}.hero-content{position:relative;z-index:2;display:flex;flex-direction:column;min-height:255px}.hero-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.hero-title{font-size:30px;font-weight:900;letter-spacing:-.02em;color:var(--ink);line-height:1.1;min-width:0}.hero-title span{display:block;font-size:12px;font-weight:700;letter-spacing:.01em;color:rgba(0,0,0,.45);margin-top:3px}.hero-timer{flex-shrink:0;min-width:68px;text-align:right;padding-top:3px}.hero-timer .time{display:block;font-size:16px;font-weight:800;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}.hero-timer .label{display:block;margin-top:4px;font-size:10px;font-weight:700;color:rgba(0,0,0,.42)}.hero-art{flex:1;display:flex;align-items:center;justify-content:center;font-size:76px;font-weight:900;letter-spacing:-.08em;color:rgba(0,0,0,.12)}.hero-action{height:48px;border-radius:15px;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 17px;font-size:14px;font-weight:800}.media{display:block}.hero-card>.media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hero-card.has-media:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.08),rgba(0,0,0,.56));z-index:1}.hero-card.has-media .hero-title,.hero-card.has-media .hero-timer .time{color:#fff}.hero-card.has-media .hero-title span,.hero-card.has-media .hero-timer .label{color:rgba(255,255,255,.68)}.hero-card.has-media .hero-art{opacity:0}
/* NUNCHI result */.result-card{background:var(--surface);border-radius:22px;overflow:hidden}.result-top{display:flex;align-items:center;gap:11px;padding:14px 16px}.result-icon{width:42px;height:42px;border-radius:14px;background:var(--bg);display:block;flex-shrink:0}.card-result-text{flex:1;min-width:0}.card-result-title{font-size:13.5px;font-weight:700}.card-result-sub{font-size:12px;font-weight:600;color:var(--ink-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.result-date{text-align:right;flex-shrink:0;line-height:1}.result-date .big{font-size:22px;font-weight:800}.result-date .small{font-size:10px;font-weight:700;color:var(--ink-dim);margin-top:4px}.result-board{background:var(--ink);padding:22px 16px;display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.result-cell{text-align:center}.result-cell .label{font-size:10px;font-weight:700;color:rgba(255,255,255,.45);margin-bottom:5px;letter-spacing:.03em}.result-cell .value{font-size:15px;font-weight:800;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.result-cell .value.accent{color:var(--accent)}
/* NUNCHI distribution */.dist-card{background:var(--surface);border-radius:22px;padding:16px 16px 18px}.dist-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:22px}.dist-title{font-size:14px;font-weight:800;color:var(--ink)}.dist-bars{display:flex;align-items:stretch;gap:6px;height:72px}.dist-track{flex:1;background:var(--line);border-radius:5px 5px 2px 2px;position:relative;overflow:hidden}.dist-fill{position:absolute;left:0;right:0;bottom:0;background:var(--ink);border-radius:5px 5px 2px 2px}.dist-labels{display:flex;gap:6px;margin-top:7px}.dist-labels span{flex:1;text-align:center;font-size:9px;font-weight:700;color:var(--ink-dim)}.dist-foot{margin-top:12px;font-size:12px;font-weight:600;color:var(--ink-dim)}.dist-foot b{color:var(--ink);font-weight:800}
/* NUNCHI streak */.streak-card{background:var(--ink);border-radius:18px;padding:14px 16px;display:flex;align-items:center;gap:12px}.streak-flame{width:40px;height:40px;border-radius:50%;background:rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;color:#fff}.streak-text{flex:1;min-width:0}.streak-title{font-size:14px;font-weight:800;color:#fff}.streak-sub{font-size:11.5px;font-weight:600;color:rgba(255,255,255,.5);margin-top:1px}.streak-days{display:flex;gap:4px;flex-shrink:0}.streak-day{width:7px;height:22px;border-radius:4px;background:rgba(255,255,255,.14)}.streak-day.filled{background:var(--accent)}
/* NUNCHI sponsored -> featured story */.ad-card{background:var(--surface);border:0;border-radius:16px;padding:10px 12px;display:flex;align-items:center;gap:10px}.ad-card-inner{display:flex;align-items:center;gap:12px;width:100%;position:relative}.ad-icon{width:38px;height:38px;border-radius:11px;background:var(--bg);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:17px;overflow:hidden}.ad-icon img{width:100%;height:100%;object-fit:cover}.ad-text{flex:1;min-width:0;padding-right:4px}.ad-title{font-size:13px;font-weight:700}.ad-sub{font-size:11px;font-weight:600;color:var(--ink-dim);margin-top:1px}.ad-cta{background:var(--bg);color:var(--ink);border:1px solid var(--line);font-size:11.5px;font-weight:800;padding:7px 13px;border-radius:100px;flex-shrink:0}
/* NUNCHI upcoming */.upcoming-card{background:var(--surface);border-radius:20px;padding:14px 14px 6px}.upcoming-head{font-size:14px;font-weight:800;padding:0 2px 10px}.upcoming-row{display:flex;align-items:center;gap:12px;padding:10px 2px;border-top:1px solid var(--line)}.upcoming-row:first-of-type{border-top:0}.upcoming-icon{width:36px;height:36px;border-radius:11px;background:var(--bg);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:900;flex-shrink:0}.upcoming-icon.gold,.upcoming-icon.duo{background:var(--bg)}.upcoming-text{flex:1;min-width:0}.upcoming-title{font-size:13px;font-weight:700}.upcoming-sub{font-size:11px;font-weight:600;color:var(--ink-dim);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upcoming-time{font-size:11.5px;font-weight:800;color:var(--ink-soft);flex-shrink:0}
/* NUNCHI ranking -> archive */.rank-card{background:var(--surface);border-radius:22px;padding:16px}.rank-row{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding:11px 0}.rank-row:first-of-type{border-top:0}.rank-left{display:flex;align-items:center;gap:10px;min-width:0}.rank-num{width:30px;height:30px;border-radius:50%;background:var(--bg);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;flex-shrink:0}.rank-value{font-size:11.5px;font-weight:800;color:var(--ink-soft);flex-shrink:0}.rank-switch{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:var(--bg);border-radius:14px;padding:5px;margin:14px 0 12px}.rank-switch-btn{border:0;min-height:38px;border-radius:11px;background:transparent;color:var(--ink-soft);font-size:13px;font-weight:900}.rank-switch-btn.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.06)}
/* NUNCHI stories */.story-cat-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;width:100%}.story-cat-btn{width:100%;min-width:0;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:6px 0;font-size:12px;font-weight:800;color:var(--ink-soft);white-space:nowrap}.story-cat-btn.active{background:var(--ink);color:#fff;border-color:var(--ink)}.story-list{display:grid;gap:10px}.story-item{background:var(--surface);border-radius:18px;overflow:hidden}.story-item-head{padding:14px 16px 12px;display:grid;gap:7px}.story-item-meta{display:flex;align-items:center;gap:8px}.story-cat-chip{font-size:10px;font-weight:900;padding:3px 8px;border-radius:999px;letter-spacing:.03em}.story-cat-chip.news,.story-cat-chip.devlog,.story-cat-chip.notes,.story-cat-chip.updates{background:var(--bg);color:var(--ink-soft)}.story-date{font-size:11px;font-weight:600;color:var(--ink-dim)}.story-expand-icon{font-size:12px;color:var(--ink-dim);margin-left:auto}.story-title{font-size:15px;font-weight:800;line-height:1.3}.story-preview{font-size:13px;font-weight:600;color:var(--ink-soft);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.story-thumb{display:block;padding:0 16px 16px}.story-thumb img{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:14px}.empty{font-size:13px;font-weight:600;color:var(--ink-dim);padding:12px 6px}
/* NUNCHI profile -> About */.profile-card{padding:16px}.profile-name{font-size:21px;font-weight:900;line-height:1.2;letter-spacing:-.03em}.profile-copy{font-size:13px;font-weight:600;color:var(--ink-soft);line-height:1.65;margin-top:10px}.profile-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.profile-stat{background:var(--bg);border-radius:16px;padding:14px}.profile-stat .k{font-size:10px;font-weight:800;color:var(--ink-dim);text-transform:uppercase}.profile-stat .v{font-size:20px;font-weight:900;margin-top:4px}.pattern-card{background:var(--ink);border-radius:18px;padding:15px 16px}.pattern-card .dist-title{color:#fff}.motto{font-size:27px;font-weight:900;line-height:1.04;letter-spacing:-.04em;color:#fff;margin-top:22px}footer{padding:2px 6px 0;font-size:12px;font-weight:600;color:var(--ink-dim);line-height:1.6}
/* NUNCHI bottom nav */.tabbar-wrap{position:fixed;left:50%;bottom:0;z-index:15;width:100%;max-width:480px;transform:translateX(-50%);padding:0 16px calc(18px + env(safe-area-inset-bottom,0px));background:transparent!important;pointer-events:none;display:flex;justify-content:center}.tabbar{width:100%;background:var(--ink);display:flex;align-items:center;justify-content:center;min-height:66px;padding:0 16px;border-radius:24px;box-shadow:0 14px 34px rgba(0,0,0,.13);pointer-events:auto}.tabs{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:center}.tab{min-width:0;text-align:center;font-size:13px;font-weight:800;color:rgba(255,255,255,.38);white-space:nowrap;background:transparent;border:0}.tab.active{color:#fff}

.standalone{width:100%;max-width:480px;min-height:100dvh;margin:0 auto;background:var(--bg);padding:env(safe-area-inset-top,22px) 16px 48px}.standalone .header{padding:6px 6px 10px}.standalone-body{display:flex;flex-direction:column;gap:14px}.standalone-body h1{font-size:30px;font-weight:900;line-height:1;letter-spacing:-.045em;padding:0 6px}.standalone-body .lead,.standalone-body .copy{font-size:13px;font-weight:600;line-height:1.7;color:var(--ink-soft);padding:0 6px}.standalone-body .hero{width:100%;max-height:440px;object-fit:cover;border-radius:26px}.standalone-body .facts{background:var(--surface);border-radius:18px;padding:2px 14px}.standalone-body .facts span{display:grid;grid-template-columns:105px 1fr;gap:8px;padding:12px 0;border-bottom:1px solid var(--line);font-size:12px;color:var(--ink-dim);font-weight:700}.standalone-body .facts span:last-child{border:0}.standalone-body .facts b{color:var(--ink);font-weight:800}.standalone-body .links{display:grid;gap:8px;padding:0 6px}.standalone-body .links a{height:50px;display:flex;align-items:center;justify-content:center;background:var(--ink);color:#fff;border-radius:15px;font-size:14px;font-weight:800}.date{font-size:11px;font-weight:600;color:var(--ink-dim);padding:0 6px}
.content-error{width:min(448px,calc(100% - 32px));margin:32px auto;padding:18px;border-radius:18px;background:#fff;font:800 13px/1.4 Manrope,sans-serif;color:#16161A}
/* v1.6 unified public detail system */
.detail-screen{width:100%;max-width:480px;height:100dvh;overflow:hidden;background:var(--bg);position:relative}.detail-scroll{height:100%;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:env(safe-area-inset-top,22px) 16px calc(132px + env(safe-area-inset-bottom,0px));display:block}.detail-header{display:flex;align-items:center;justify-content:space-between;padding:6px 6px 10px;margin-bottom:14px}.detail-back{font-size:13px;font-weight:800;color:var(--ink-soft)}.detail-article{display:flex;flex-direction:column;gap:14px;margin-bottom:14px}.detail-title-block,.story-detail{background:var(--surface);border-radius:22px;padding:18px}.detail-title-block h1,.story-detail h1{font-size:30px;font-weight:900;line-height:1.08;letter-spacing:-.045em}.detail-kicker{font-size:10px;font-weight:900;color:var(--ink-dim);letter-spacing:.04em;margin-bottom:7px}.detail-lead{font-size:13px;font-weight:650;line-height:1.55;color:var(--ink-soft);margin-top:8px}.detail-app-hero{position:relative;overflow:hidden;border-radius:26px;background:var(--surface);aspect-ratio:4/3}.detail-app-hero img{width:100%;height:100%;object-fit:cover;display:block}.detail-app-overlay{position:absolute;left:12px;right:12px;bottom:12px;background:var(--ink);color:#fff;border-radius:15px;padding:12px 14px;display:flex;justify-content:space-between;font-size:11px;font-weight:900}.detail-facts{background:var(--ink);border-radius:18px;padding:6px 16px}.detail-facts>div{display:grid;grid-template-columns:1fr auto;gap:12px;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.09)}.detail-facts>div:last-child{border:0}.detail-facts span{font-size:11px;font-weight:700;color:rgba(255,255,255,.45)}.detail-facts b{font-size:12px;font-weight:800;color:#fff}.detail-copy,.story-copy{background:var(--surface);border-radius:22px;padding:18px;font-size:14px;font-weight:600;line-height:1.78;color:var(--ink-soft)}.detail-copy p+p,.story-copy p+p{margin-top:16px}.detail-links{display:grid;gap:8px}.detail-links a{min-height:52px;background:var(--ink);color:#fff;border-radius:16px;padding:0 17px;display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:900}.detail-meta{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;color:var(--ink-dim);margin-bottom:2px}.story-detail .detail-hero{width:calc(100% + 36px);margin:4px -18px 0;max-height:520px;object-fit:cover;display:block}.story-detail .story-copy{padding:4px 0 0;background:transparent;border-radius:0;color:var(--ink);font-size:15px;line-height:1.82}.related-link{background:var(--bg);border-radius:16px;padding:14px;display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:800;margin-top:4px}.detail-footer{display:block;flex:none;padding:6px;color:var(--ink-dim);font-size:11px;font-weight:600;line-height:1.6;margin:0 0 14px}

/* v1.8 monochrome release polish */
[hidden]{display:none!important}.hero-card:not(.has-media){background:#E4E4E1}.result-cell .value.accent{color:#fff}.streak-day.filled{background:#fff}.ad-icon:empty,.upcoming-icon:empty{background:#E4E4E1}.detail-app-hero.no-media{background:#E4E4E1}.detail-app-hero.no-media::after{content:"";display:block;width:100%;height:100%}.story-cat-chip{background:var(--bg)!important;color:var(--ink-soft)!important}.story-cat-btn.active{background:var(--ink);color:#fff}.detail-placeholder{width:100%;aspect-ratio:4/3;border-radius:26px;background:#E4E4E1}.detail-section-label{font-size:10px;font-weight:900;color:var(--ink-dim);letter-spacing:.04em;padding:0 6px}.detail-related{background:var(--surface);border-radius:18px;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.detail-related span{font-size:11px;font-weight:700;color:var(--ink-dim)}.detail-related b{font-size:13px;font-weight:800}.detail-copy,.story-copy{overflow-wrap:anywhere}.detail-links a:active,.hero-action:active,.tab:active{transform:scale(.985)}

/* v1.8.1 story body: exact whitespace + native YouTube embeds */
.story-detail .story-copy{display:flex;flex-direction:column;gap:0}
.story-text{white-space:pre-wrap;overflow-wrap:anywhere}.story-space{display:block;height:1.82em;flex:none}
.story-youtube{width:100%;margin:0;overflow:hidden;background:#000;border-radius:18px}
.story-youtube iframe{display:block;width:100%;height:100%;border:0}
.story-youtube.is-wide{aspect-ratio:16/9}
.story-youtube.is-short{aspect-ratio:9/16;max-height:680px;margin-left:auto;margin-right:auto}
@media (min-width:420px){.story-youtube.is-short{width:min(78%,360px)}}

/* v1.9.0 render performance */
#projectMix,#buildStatus,#featuredStory,#comingUp,#archiveCard,#about .rank-card,#about .pattern-card,#about .upcoming-card,.story-item{content-visibility:auto;contain-intrinsic-size:1px 220px}
.media,.detail-hero,.detail-app-hero img{content-visibility:auto}
/* v1.9.1 content navigation */
.app-category-switch{grid-template-columns:repeat(4,1fr)}
.app-category-switch .rank-switch-btn{min-width:0;padding-inline:6px;font-size:12px}
.make-link{width:100%;border:0;background:transparent;text-align:left;font:inherit;color:inherit;cursor:pointer;padding-left:0;padding-right:0}
.make-link .upcoming-text{flex:1}
.make-arrow{font-size:18px;font-weight:800}

/* v2.1.3 — long detail pages: preserve full content height inside the scroll container */
.detail-scroll>*{flex-shrink:0}
.detail-article{flex:0 0 auto;min-height:min-content;overflow:visible}
.story-detail,.story-detail .story-copy,.story-text{flex-shrink:0;overflow:visible}

/* v2.2.1 — app category tabs: strict four-column containment */
.app-category-switch{
  width:100%;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:2px;
  overflow:hidden;
}
.app-category-switch .rank-switch-btn{
  width:100%;
  min-width:0;
  max-width:100%;
  padding-inline:2px;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:clip;
  letter-spacing:-.025em;
}
