:root{--bg:#080d0a;--surface:#0e1712;--ink:#f5f3ee;--muted:#b0b8be;--gold:#e8c782;--cyan:#bdd3b5;--line:#e8c7822e}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;background:var(--bg);color:var(--ink);font-family:'Noto Sans Thai',sans-serif;line-height:1.65}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--cyan);outline-offset:4px}button:active,.primary:active,.launch:active{transform:translateY(1px)}img{max-width:100%;display:block}p,h1,h2,h3,figure{margin:0}.shell{width:min(1200px,calc(100% - 72px));margin-inline:auto}.skip{position:fixed;top:-100px;left:16px;padding:12px 20px;background:var(--gold);color:#16130d;z-index:50}.skip:focus{top:12px}.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}[hidden]{display:none!important}.site-header{border-bottom:1px solid var(--line);background:#080d0af5;position:sticky;top:0;z-index:10}.header-inner{display:flex;justify-content:space-between;align-items:center;gap:32px;min-height:88px}.brand{display:flex;align-items:center;gap:12px;font-weight:700;letter-spacing:.055em;font-size:1rem}.brand img{border-radius:50%}.brand small{display:block;font-size:.7rem;color:var(--muted);font-weight:400;letter-spacing:.03em}.header-inner nav{display:flex;gap:30px}.header-inner nav a{display:flex;align-items:center;min-height:44px;font-size:.9375rem;color:var(--muted);border-bottom:2px solid transparent}.header-inner nav a:hover,.header-inner nav a[aria-current]{color:var(--gold);border-color:var(--gold)}.intro{padding-block:52px 56px;display:grid;grid-template-columns:1.08fr 1fr;gap:60px;align-items:center}.intro>*{min-width:0}.eyebrow{font-size:.75rem;letter-spacing:.16em;color:var(--gold);font-weight:600}.intro h1{font-size:clamp(2.7rem,4.6vw,4rem);line-height:1.3;letter-spacing:-.045em;margin-top:20px;font-weight:700}.intro h1 em{font-style:normal;color:var(--gold);font-weight:500}.lead{font-size:1.125rem;color:var(--muted);margin-top:24px}.primary{display:inline-flex;align-items:center;justify-content:center;gap:24px;min-height:52px;padding:12px 22px;color:#19160e;background:var(--gold);border:1px solid var(--gold);font-weight:600;transition:background .2s}.primary:hover{background:#f3dca8}.intro-copy .primary{margin-top:28px}.intro-note{color:#bac5cc;font-size:.8125rem;margin-top:12px}.demo-window{border:1px solid #bdd3b548;background:#0e1812;box-shadow:18px 18px 0 #25302555}.window-top{padding:14px 18px;display:flex;align-items:center;gap:14px;border-bottom:1px solid #bdd3b530;color:#c2d5da;font-size:.8125rem}.window-mark{display:flex;gap:4px}.window-mark i{width:5px;height:5px;background:#c7c7a0;border-radius:50%;opacity:.6}.window-top button{background:transparent;border:0;color:var(--cyan);padding:6px 0 6px 6px;min-height:44px;font-size:.75rem;margin-left:auto;text-decoration:underline;text-underline-offset:4px}.demo-stage{padding:32px 28px 22px;position:relative;min-height:260px;background:linear-gradient(0deg,#192b1d33,#192b1d33),repeating-linear-gradient(90deg,transparent 0 34px,#bdd3b504 35px 36px)}.demo-icons{display:flex;justify-content:space-between;gap:18px;max-width:330px;margin:auto}.demo-icons img{width:calc((100% - 36px)/3);height:auto;filter:brightness(.8);transition:filter .6s,transform .6s}.demo-stage[data-scene='0'] .demo-icons img:first-child,.demo-stage[data-scene='1'] .demo-icons img:nth-child(2),.demo-stage[data-scene='2'] .demo-icons img:nth-child(3){filter:brightness(1.2);transform:translateY(-5px)}.demo-selection{height:28px;width:calc(100% - 56px);max-width:330px;margin:0 auto;position:relative}.demo-cursor{position:absolute;left:8%;font-size:30px;color:var(--cyan);transform:translateY(-17px);transition:left .65s ease}.demo-stage[data-scene='1'] .demo-cursor{left:46%}.demo-stage[data-scene='2'] .demo-cursor{left:83%}.demo-instruction{display:flex;gap:16px;align-items:center;min-height:80px;border-top:1px solid #bdd3b520;padding-top:18px}.demo-instruction>span{font-size:2rem;color:var(--cyan);line-height:1.2;font-weight:500}.demo-instruction strong{font-size:1rem;font-weight:500}.demo-instruction p{font-size:.8125rem;color:#adc0c6;margin-top:3px}.scene-controls{display:flex;gap:8px;margin-top:18px}.scene-controls button{min-width:44px;height:44px;background:transparent;color:#adbcc4;border:1px solid #c7c7a040;font-size:.75rem}.scene-controls button[aria-pressed=true]{background:#bdd3b5;color:#0d171b;border-color:var(--cyan)}.demo-caption{font-size:.6875rem;color:#a3b6c0;padding:8px 18px;border-top:1px solid #bdd3b520}.directory{padding-block:40px 58px;border-top:1px solid var(--line)}.section-heading{display:flex;justify-content:space-between;gap:32px;align-items:end}.section-heading h2{font-size:2.2rem;letter-spacing:-.035em;margin-top:8px;font-weight:500}.section-heading>p{font-size:.875rem;color:var(--muted)}.directory-tools{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:30px;align-items:end;margin-top:30px}.search-field label{font-size:.8125rem;display:block;color:#cdd6dc;margin-bottom:8px}.search-field input{display:block;width:100%;font-size:16px;background:#0f1913;color:var(--ink);border:1px solid #b6c4ce55;padding:12px 15px;min-height:50px;border-radius:0;appearance:none}.search-field input::placeholder{color:#8f9da8}.filters{display:flex;gap:8px}.filters button{background:transparent;border:1px solid var(--line);color:var(--muted);padding:12px 15px;min-height:50px;font-size:.875rem}.filters button:hover{border-color:var(--gold)}.filters button[aria-pressed=true]{color:var(--gold);background:#e8c78215;border-color:var(--gold)}.filter-status{margin-block:20px 14px;font-size:.8125rem;color:#9daeb8}.apps-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.app-card{padding:26px 24px 24px;background:var(--surface);border:1px solid #b0c1cb24;min-width:0;display:flex;flex-direction:column;transition:border-color .2s,background .2s}.app-card:hover{background:#131e17;border-color:#e8c78266}.app-heading{display:flex;align-items:center;gap:16px;min-width:0}.app-heading>div{min-width:0}.app-icon{width:68px;height:68px;flex-shrink:0;transition:transform .25s}.app-card:hover .app-icon{transform:translateY(-3px)}.app-name{font-size:1.2rem;letter-spacing:-.025em;font-weight:600}.app-purpose{font-size:.8125rem;color:var(--muted);font-weight:400;line-height:1.7;margin-top:3px}.app-desc{font-size:.9375rem;color:#c6cdd2;margin-top:20px;flex:1}.app-status{display:inline-flex;align-items:center;gap:7px;font-size:.6875rem;margin-top:24px;align-self:start;letter-spacing:.015em}.app-status:before{content:'';width:5px;height:5px;border:1px solid currentColor;transform:rotate(45deg)}.app-status.green{color:#92dfac}.app-status.gold{color:var(--gold)}.app-status.cyan{color:var(--cyan)}.app-actions{display:flex;gap:10px;margin-top:16px}.launch{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px;padding:10px 14px;border:1px solid #e8c78277;color:var(--gold);font-size:.875rem;flex:1;font-weight:500}.launch:hover{background:#e8c78218;border-color:var(--gold)}.howto{font-size:.8125rem;min-height:48px;padding:10px 12px;color:#c9d5da;background:transparent;border:1px solid #a9c0cc44}.howto:hover{border-color:var(--cyan);color:var(--cyan)}.empty-state{padding:44px 20px;border:1px dashed #a9c0cc44;text-align:center}.empty-state h3{font-size:1.4rem;font-weight:500}.empty-state p{margin-top:10px;color:var(--muted)}.empty-state button{margin-top:24px}.data-note{display:flex;align-items:start;gap:16px;padding:24px 28px;margin-top:24px;background:#bdd3b507;border-left:2px solid #bdd3b566}.data-note svg{color:var(--cyan);flex-shrink:0;margin-top:2px}.data-note strong{font-size:.9375rem;font-weight:500}.data-note p{font-size:.8125rem;color:var(--muted);margin-top:6px;max-width:75em}.collection-link{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:44px 48px;background:#1a1813;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-block:30px 60px}.collection-link h2{font-size:1.8rem;font-weight:400;line-height:1.5;margin-top:10px}.footer{display:flex;justify-content:space-between;gap:24px;align-items:center;padding-block:24px 40px;border-top:1px solid var(--line);font-size:.8125rem}.footer>a:first-child{font-weight:600;letter-spacing:.08em}.footer p{color:var(--muted)}.footer>a:last-child{color:var(--gold);min-height:44px;display:flex;align-items:center}
dialog{background:#101a14;color:var(--ink);border:1px solid #bdd3b566;padding:0;width:min(920px,calc(100% - 40px));max-height:calc(100dvh - 40px);overflow:auto;box-shadow:0 20px 90px #0009}dialog::backdrop{background:#020604dc;backdrop-filter:blur(5px)}.guide-head{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:24px 28px;border-bottom:1px solid #bdd3b530;position:sticky;top:0;background:#101a14f9;z-index:2}.guide-identity{display:flex;gap:16px;align-items:center;min-width:0}.guide-identity h2{font-size:1.5rem;font-weight:500;line-height:1.45;overflow-wrap:anywhere}.guide-identity .eyebrow{font-size:.65rem;margin-bottom:3px}.guide-head button{background:transparent;border:1px solid #a9c0cc66;color:var(--ink);padding:10px 16px;font-size:.875rem;min-height:44px;flex-shrink:0}.guide-head button span{margin-left:10px}.guide-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:30px;padding:28px}.guide-body figure{background:#080e0a;border:1px solid #a9c0cc26;min-width:0;align-self:start}.guide-body figure img{width:100%;height:350px;object-fit:contain;padding:12px}.guide-body figcaption{border-top:1px solid #a9c0cc26;font-size:.6875rem;color:#a9b8c1;padding:10px 14px}.guide-content ol{list-style:none;counter-reset:step;padding:0;margin:0}.guide-content li{counter-increment:step;padding:0 0 20px 42px;position:relative}.guide-content li:before{content:'0'counter(step);position:absolute;left:0;top:2px;color:var(--cyan);font-size:1rem;font-weight:500}.guide-content li strong{font-weight:500;font-size:1rem}.guide-content li p{color:var(--muted);font-size:.875rem;margin-top:4px}.guide-note{border-top:1px solid var(--line);padding-top:16px;font-size:.75rem;color:#c3cdd3;margin-bottom:22px}.guide-content .primary{width:100%;font-size:.875rem}.no-js-note{color:var(--muted);font-size:.75rem}
@media(max-width:1080px){.shell{width:calc(100% - 48px)}.intro{gap:34px}.directory-tools{grid-template-columns:1fr}.filters{flex-wrap:wrap}.apps-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.intro h1{font-size:3.05rem}}
@media(max-width:700px){html{scroll-padding-top:138px}.shell{width:calc(100% - 32px)}.header-inner{padding-block:12px 0;flex-wrap:wrap;gap:8px;min-height:0}.brand{font-size:.875rem}.brand img{width:36px;height:36px}.brand small{font-size:.625rem}.header-inner nav{width:100%;justify-content:space-between;gap:16px;border-top:1px solid #e8c78220}.header-inner nav a{font-size:.8125rem;min-height:43px}.intro{grid-template-columns:minmax(0,1fr);gap:28px;padding-block:34px 44px}.intro h1{font-size:2.5rem;margin-top:16px}.lead{font-size:1rem;margin-top:18px}.lead br{display:none}.intro-copy .primary{margin-top:22px}.intro-note{font-size:.75rem}.demo-window{box-shadow:7px 7px 0 #25302555}.window-top{padding:10px 12px;gap:10px;font-size:.75rem}.window-top button{font-size:.6875rem}.demo-stage{padding:24px 20px 18px;min-height:240px}.demo-instruction{gap:13px}.demo-instruction strong{font-size:.9375rem}.demo-instruction p{font-size:.75rem}.directory{padding-block:32px 30px}.section-heading{display:block}.section-heading h2{font-size:1.8rem}.section-heading>p{font-size:.8125rem;margin-top:12px}.section-heading>p br{display:none}.directory-tools{gap:16px;margin-top:24px}.filters{gap:6px}.filters button{padding:9px 10px;font-size:.75rem;min-height:44px;flex:1 1 auto}.apps-grid{grid-template-columns:minmax(0,1fr);gap:16px}.app-card{padding:22px 20px}.app-name{font-size:1.15rem}.app-icon{width:64px;height:64px}.app-desc{margin-top:16px;font-size:.9375rem}.app-status{margin-top:20px}.data-note{padding:20px 18px;gap:12px}.data-note p{font-size:.8125rem}.collection-link{display:block;padding:28px 24px;margin-block:24px 36px}.collection-link h2{font-size:1.5rem}.collection-link .primary{margin-top:24px;font-size:.875rem;gap:16px}.footer{display:block;font-size:.75rem;padding-block:24px}.footer p{margin-top:10px}.footer>a:last-child{margin-top:8px;display:inline-flex}dialog{width:calc(100% - 24px);max-height:calc(100dvh - 24px)}.guide-head{padding:16px;gap:10px}.guide-identity{gap:10px}.guide-identity img{width:42px;height:42px}.guide-identity h2{font-size:1.125rem}.guide-head button{padding:8px 12px;font-size:.75rem}.guide-head button span{margin-left:6px}.guide-body{grid-template-columns:minmax(0,1fr);padding:18px;gap:24px}.guide-body figure img{height:240px}.guide-content li{padding-left:35px}.guide-content li strong{font-size:.9375rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}.demo-cursor{display:none}}
body.motion-paused .demo-icons img,body.motion-paused .demo-cursor{transition:none}
.app-viewer{height:100dvh;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden}.viewer-bar{display:flex;justify-content:space-between;gap:24px;align-items:center;padding:10px 22px;border-bottom:1px solid var(--line);background:#080d0a}.viewer-identity{display:flex;gap:10px;align-items:center;min-width:0}.viewer-identity img{width:34px;height:34px;flex-shrink:0}.viewer-identity strong{font-size:.9375rem;line-height:1.4;font-weight:500;display:block}.viewer-identity span{font-size:.625rem;color:#b1bec8;display:block;line-height:1.5}.viewer-bar nav{display:flex;gap:10px;align-items:center;min-width:0}.viewer-bar nav a,.viewer-bar nav button{min-height:44px;font-size:.8125rem;padding:8px 12px;display:flex;align-items:center;justify-content:center;background:transparent;color:#cbd7db;border:1px solid #a9c0cc44;white-space:nowrap}.viewer-bar nav .viewer-back{color:var(--gold);border-color:#e8c78244}.viewer-bar nav a:hover,.viewer-bar nav button:hover{border-color:var(--cyan)}.viewer-bar nav button:disabled{opacity:.4;cursor:default}.viewer-stage{min-height:0;min-width:0;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}#app-frame{display:block;width:100%;height:100%;border:0;background:#080d0a}.viewer-empty{padding:40px 24px;align-self:center;justify-self:center;text-align:center}.viewer-empty h1{font-size:1.7rem;font-weight:500;margin-top:16px}.viewer-empty p:not(.eyebrow){margin-top:12px;color:var(--muted)}.viewer-empty .primary{margin-top:24px}.app-viewer dialog{position:fixed}
@media(max-width:650px){.viewer-bar{padding:9px 12px 8px;gap:7px;flex-wrap:wrap}.viewer-identity{width:100%}.viewer-identity strong{font-size:.8125rem}.viewer-identity img{width:30px;height:30px}.viewer-bar nav{width:100%;gap:6px}.viewer-bar nav a,.viewer-bar nav button{min-height:44px;padding:8px 10px;font-size:.75rem}.viewer-bar nav .viewer-back{flex:1}}
.arrow-icon{display:inline-block;vertical-align:middle;flex-shrink:0}.footer>a:last-child,.viewer-bar nav a{gap:8px}

/* App collection: matte forest surfaces, readable actions and optional guidance. */
body:not(.app-viewer){background:radial-gradient(ellipse at 85% 0,#17341e44,transparent 40%),var(--bg)}
.brand img{border-radius:0}.intro h1{font-weight:600}.intro h1 em{font-weight:500}
.demo-details{min-width:0;border:1px solid #e8c78240;border-radius:14px;overflow:hidden;background:#101a14}
.demo-details>summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;min-height:56px;cursor:pointer;color:var(--gold);font-weight:500}
.demo-details>summary::-webkit-details-marker{display:none}.demo-details>summary small{color:var(--muted);font-size:.75rem;font-weight:400;margin-left:12px}
.demo-details>summary svg{flex-shrink:0;transition:transform .2s}.demo-details[open]>summary svg{transform:rotate(180deg)}
summary:focus-visible{outline:3px solid var(--gold);outline-offset:-4px}.demo-details[open]>summary{border-bottom:1px solid var(--line)}
.demo-window{border:0;box-shadow:none;background:transparent}.window-top{border-bottom:0}.window-mark{display:none}.window-top button{font-size:.75rem}
.demo-stage{background:linear-gradient(135deg,#e8c78205,transparent),repeating-linear-gradient(90deg,transparent 0 48px,#bdd3b505 49px 50px);padding-top:22px}
.demo-caption{font-size:.75rem}.demo-instruction>span{color:var(--gold)}.scene-controls button{border-radius:5px;min-width:44px}
.scene-controls button[aria-pressed=true]{background:var(--gold);border-color:var(--gold);color:#15170e}
.app-card{border-radius:14px;padding:26px;background:linear-gradient(145deg,#14221966,transparent 45%),var(--surface)}
.app-name{font-size:1.125rem;line-height:1.5}.app-purpose{font-size:.8125rem;color:var(--muted);font-weight:400;margin-top:4px;line-height:1.6}
.app-desc{line-height:1.75}.app-status{font-size:.75rem}.launch{background:#e8c7820a;border-radius:6px}.howto{border-radius:6px;color:#d6ded2}
.primary{border-radius:6px}.search-field input{border-radius:7px}.filters button{border-radius:7px}.app-card:hover{box-shadow:0 12px 32px #0003}
.data-note{display:block;background:transparent;border:1px solid var(--line);border-radius:8px;padding:0}
.data-note>summary{cursor:pointer;padding:18px 20px;color:#d3dccc;font-size:.9375rem;font-weight:500;min-height:56px}
.data-note>p{padding:0 20px 20px;max-width:80em;margin:0;line-height:1.8;font-size:.875rem}
.collection-link{border-radius:14px;background:linear-gradient(110deg,#17231a,#171610)}.collection-link h2{font-weight:500}
dialog{border-color:#e8c78266;border-radius:14px}.guide-head{background:#101a14fa;border-bottom-color:var(--line)}
.guide-head button{border-radius:6px}.guide-content li:before{color:var(--gold)}.guide-body figure{border-radius:8px;overflow:hidden}
.viewer-bar{background:#080d0a}.viewer-bar nav a,.viewer-bar nav button{border-radius:6px}.viewer-back{background:#e8c7820a!important}
.viewer-stage{position:relative}.viewer-loading{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px;padding:32px;background:var(--bg)}
.viewer-loading h1{font-size:1.35rem;font-weight:500}.viewer-loading p{color:var(--muted);font-size:.9375rem;max-width:35em}
.loading-mark{display:block;width:34px;height:34px;border:1px solid #e8c78244;border-top-color:var(--gold);border-radius:50%;animation:app-loading 1s linear infinite}
@keyframes app-loading{to{transform:rotate(360deg)}}
#viewer-recovery{margin-top:10px;display:flex;gap:18px;flex-wrap:wrap;align-items:center;justify-content:center}#viewer-recovery>a{display:flex;align-items:center;min-height:44px;color:var(--gold);text-decoration:underline;text-underline-offset:5px}
@media(max-width:700px){.intro{gap:22px;padding-block:30px 36px}.intro h1{font-size:2.4rem}.demo-details>summary{padding:14px 16px}.demo-window{box-shadow:none}.app-card{padding:22px 20px}.guide-content{order:-1}.guide-body figure img{height:210px}.directory{padding-top:28px}.data-note>summary{padding:16px}.data-note>p{padding:0 16px 16px}.viewer-bar nav{flex-wrap:wrap}.viewer-bar nav .viewer-back{flex:1 1 auto}.viewer-bar nav a,.viewer-bar nav button{font-size:.75rem;white-space:normal;line-height:1.4}.viewer-identity span{font-size:.6875rem}}
@media(max-width:360px){.viewer-bar nav{gap:5px}.viewer-bar nav a,.viewer-bar nav button{padding:8px}.viewer-bar nav .viewer-back{font-size:.6875rem}.intro h1{font-size:2.1rem}.brand{letter-spacing:.02em}.filters button{font-size:.75rem}}
@media(prefers-reduced-motion:reduce){.loading-mark{animation:none}.demo-details>summary svg{transition:none}.app-card:hover .app-icon{transform:none}}

/* Search portal navigation stays readable when labels or text sizes grow. */
.header-inner nav{flex-wrap:wrap;gap:8px 24px}.header-inner nav .nav-search{color:var(--gold);min-height:44px}
@media(max-width:700px){.header-inner nav{justify-content:flex-start;gap:4px 18px}.header-inner nav a{min-height:44px}.viewer-bar nav{flex-wrap:wrap}.viewer-bar nav .viewer-search{color:var(--gold)}}

/* Help headers and numbered steps reflow when text is enlarged. */
.guide-content li{padding-left:calc(2ch + 14px)}
@media(max-width:700px){.guide-head{flex-wrap:wrap}.guide-identity{flex:1 1 180px}.guide-head button{margin-left:auto}.guide-content li{padding-left:calc(2ch + 14px)}}
