:root{
    --dsh-bg:#0a0e1a;
    --dsh-panel:#121826;
    --dsh-panel2:#1a2136;
    --dsh-ink:#e7ecf5;
    --dsh-mute:#8a94ab;
    --dsh-faint:#5c667d;
    --dsh-line:#232a3d;
    --dsh-blue:#3d7dff;
    --dsh-green:#22e06b;
    --dsh-amber:#ffb62e;
    --dsh-red:#ff5a6a;
    --dsh-rad:10px;
    --dsh-rad-sm:6px;
    font-family:'Inter','Noto Sans Thai',sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
a{color:inherit;text-decoration:none}
img,mip-img{max-width:100%;display:block}
body,.dsh-body{background:var(--dsh-bg);color:var(--dsh-ink);font-family:'Inter','Noto Sans Thai',sans-serif;font-size:14px;line-height:1.6;
    background-image:linear-gradient(var(--dsh-line) 1px,transparent 1px),linear-gradient(90deg,var(--dsh-line) 1px,transparent 1px);background-size:64px 64px;background-position:-1px -1px;background-attachment:fixed}
.dsh-body::before{content:'';position:fixed;inset:0;background:radial-gradient(circle at 50% 0,rgba(61,125,255,.08),transparent 60%);pointer-events:none;z-index:0}

.dsh-hd,.dsh-main,.dsh-ft{position:relative;z-index:1}

/* HEADER */
.dsh-hd{background:var(--dsh-panel);border-bottom:1px solid var(--dsh-line);position:sticky;top:0;z-index:40;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.dsh-hd__inner{max-width:1400px;margin:0 auto;padding:12px 24px;display:flex;align-items:center;gap:18px}
.dsh-logo{display:flex;align-items:center;gap:10px;font-family:'IBM Plex Mono',monospace;font-size:15px;font-weight:600;letter-spacing:-.2px}
.dsh-logo__dot{width:10px;height:10px;border-radius:2px;background:var(--dsh-blue);box-shadow:0 0 12px var(--dsh-blue)}
.dsh-logo__env{font-family:'IBM Plex Mono',monospace;font-weight:500;font-size:12.5px;color:var(--dsh-faint);margin-left:6px}
.dsh-burger{display:none;width:38px;height:38px;border:1px solid var(--dsh-line);border-radius:8px;background:var(--dsh-panel2);flex-direction:column;gap:3px;align-items:center;justify-content:center;cursor:pointer}
.dsh-burger i{width:16px;height:1.6px;background:var(--dsh-ink);display:block}
.dsh-nav{display:flex;gap:2px;margin-left:14px}
.dsh-nav__a{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;border-radius:var(--dsh-rad-sm);font-family:'IBM Plex Mono',monospace;font-size:12.5px;color:var(--dsh-mute);transition:.2s}
.dsh-nav__i{font-weight:600;color:var(--dsh-faint)}
.dsh-nav__a:hover{color:var(--dsh-ink);background:var(--dsh-panel2)}
.dsh-nav__a:hover .dsh-nav__i{color:var(--dsh-blue)}
.dsh-nav__a.is-cur{background:var(--dsh-panel2);color:var(--dsh-ink);box-shadow:inset 0 -2px 0 var(--dsh-blue)}
.dsh-nav__a.is-cur .dsh-nav__i{color:var(--dsh-blue)}
.dsh-hd__cta{margin-left:auto;display:flex;gap:12px;align-items:center}
.dsh-status{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;background:rgba(34,224,107,.1);color:var(--dsh-green);font-family:'IBM Plex Mono',monospace;font-size:11.5px;font-weight:600;letter-spacing:.6px;border:1px solid rgba(34,224,107,.3)}
.dsh-status__dot{width:6px;height:6px;border-radius:50%;background:var(--dsh-green);animation:dshBlink 1.8s infinite}
@keyframes dshBlink{50%{opacity:.35}}

.dsh-btn{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border-radius:var(--dsh-rad-sm);font-family:'IBM Plex Mono',monospace;font-size:12.5px;font-weight:600;letter-spacing:.5px;border:1px solid var(--dsh-line);background:var(--dsh-panel2);color:var(--dsh-ink);transition:.2s;cursor:pointer}
.dsh-btn:hover{border-color:var(--dsh-blue);color:var(--dsh-blue)}
.dsh-btn--pri{background:var(--dsh-blue);color:#fff;border-color:var(--dsh-blue);box-shadow:0 6px 18px rgba(61,125,255,.3)}
.dsh-btn--pri:hover{background:#5190ff;color:#fff}
.dsh-btn--lg{padding:12px 22px;font-size:13px}

/* MAIN */
.dsh-main{max-width:1400px;margin:0 auto;padding:28px 24px 60px}

/* HERO */
.dsh-hero{display:grid;grid-template-columns:1.2fr 1fr;gap:22px;margin-bottom:32px}
.dsh-crumb{display:flex;gap:8px;align-items:center;font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--dsh-faint);letter-spacing:.8px;margin-bottom:14px}
.dsh-crumb em{font-style:normal;color:var(--dsh-line)}
.dsh-crumb strong{color:var(--dsh-blue);font-weight:600}
.dsh-crumb a:hover{color:var(--dsh-ink)}
.dsh-hero__l{background:var(--dsh-panel);border:1px solid var(--dsh-line);border-radius:var(--dsh-rad);padding:36px 34px;display:flex;flex-direction:column}
.dsh-hero__h{font-family:'Inter',sans-serif;font-weight:800;font-size:44px;line-height:1.08;letter-spacing:-1.2px;margin-bottom:16px}
.dsh-hero__accent{background:linear-gradient(135deg,var(--dsh-blue),var(--dsh-green));-webkit-background-clip:text;color:transparent}
.dsh-hero__p{color:var(--dsh-mute);font-size:15px;max-width:480px;margin-bottom:24px;flex:1}
.dsh-hero__btns{display:flex;gap:10px;flex-wrap:wrap}
.dsh-hero__r{background:var(--dsh-panel);border:1px solid var(--dsh-line);border-radius:var(--dsh-rad);padding:24px 26px}
.dsh-spark__hd{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:16px}
.dsh-spark__k{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--dsh-mute);letter-spacing:.6px}
.dsh-spark__v{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--dsh-mute)}
.dsh-spark__v b{color:var(--dsh-green);font-weight:600}
.dsh-spark__svg{width:100%;height:120px;display:block}
.dsh-spark__axis{display:flex;justify-content:space-between;font-family:'IBM Plex Mono',monospace;font-size:10.5px;color:var(--dsh-faint);margin-top:8px;letter-spacing:.6px}

/* SECTION */
.dsh-sec{margin-bottom:32px}
.dsh-sec__hd{display:flex;align-items:center;gap:16px;margin-bottom:18px;padding-bottom:10px;border-bottom:1px solid var(--dsh-line)}
.dsh-sec__k{font-family:'IBM Plex Mono',monospace;font-size:11.5px;font-weight:600;color:var(--dsh-blue);letter-spacing:1px}
.dsh-sec__h{font-family:'Inter',sans-serif;font-weight:700;font-size:22px;letter-spacing:-.4px}
.dsh-sec__sub{margin-left:auto;font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--dsh-faint);letter-spacing:.6px}

/* KPI */
.dsh-kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.dsh-kpi__c{background:var(--dsh-panel);border:1px solid var(--dsh-line);border-radius:var(--dsh-rad);padding:20px 22px;position:relative;overflow:hidden;transition:.2s}
.dsh-kpi__c:hover{border-color:var(--dsh-blue)}
.dsh-kpi__hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.dsh-kpi__k{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--dsh-mute);letter-spacing:1.2px}
.dsh-kpi__trend{font-family:'IBM Plex Mono',monospace;font-size:11px;font-weight:600;letter-spacing:.4px}
.dsh-kpi__trend--up{color:var(--dsh-green)}
.dsh-kpi__trend--dn{color:var(--dsh-red)}
.dsh-kpi__trend--flat{color:var(--dsh-amber)}
.dsh-kpi__v{font-family:'IBM Plex Mono',monospace;font-weight:600;font-size:30px;letter-spacing:-.5px;margin-bottom:12px}
.dsh-kpi__v em{font-style:normal;font-size:16px;color:var(--dsh-mute);margin-left:4px}
.dsh-kpi__mini{width:100%;height:30px;display:block}

/* MATRIX */
.dsh-mat{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.dsh-mat__c{background:var(--dsh-panel);border:1px solid var(--dsh-line);border-radius:var(--dsh-rad);padding:20px 22px;display:flex;flex-direction:column;gap:10px;min-height:120px;transition:.2s;position:relative}
.dsh-mat__c:hover{border-color:var(--dsh-blue);background:var(--dsh-panel2)}
.dsh-mat__k{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--dsh-blue);letter-spacing:1px;font-weight:600}
.dsh-mat__h{font-family:'Inter',sans-serif;font-weight:600;font-size:18px;line-height:1.3}
.dsh-mat__arr{position:absolute;right:22px;bottom:20px;color:var(--dsh-faint);font-size:18px;transition:.2s}
.dsh-mat__c:hover .dsh-mat__arr{color:var(--dsh-blue);transform:translateX(4px)}

/* REPORTS 2 列大卡 */
.dsh-rep{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.dsh-rep__c{background:var(--dsh-panel);border:1px solid var(--dsh-line);border-radius:var(--dsh-rad);overflow:hidden;display:flex;flex-direction:column;transition:.2s}
.dsh-rep__c:hover{border-color:var(--dsh-blue);transform:translateY(-2px);box-shadow:0 18px 40px rgba(61,125,255,.15)}
.dsh-rep__fig{position:relative;aspect-ratio:16/9;overflow:hidden;display:block;border-bottom:1px solid var(--dsh-line)}
.dsh-rep__tag{position:absolute;top:12px;left:12px;padding:5px 10px;background:rgba(10,14,26,.85);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:var(--dsh-blue);font-family:'IBM Plex Mono',monospace;font-size:11px;font-weight:600;letter-spacing:.6px;border:1px solid var(--dsh-line);border-radius:var(--dsh-rad-sm)}
.dsh-rep__body{padding:20px 24px 22px;display:flex;flex-direction:column;gap:10px;flex:1}
.dsh-rep__meta{display:flex;gap:10px;align-items:center;font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--dsh-mute)}
.dsh-rep__id{color:var(--dsh-blue);font-weight:600}
.dsh-dot{width:3px;height:3px;border-radius:50%;background:var(--dsh-faint)}
.dsh-rep__h{font-family:'Inter',sans-serif;font-weight:700;font-size:19px;line-height:1.3}
.dsh-rep__p{color:var(--dsh-mute);font-size:13.5px;line-height:1.65;flex:1}
.dsh-rep__more{display:inline-flex;align-items:center;gap:8px;padding-top:12px;border-top:1px dashed var(--dsh-line);margin-top:auto;font-family:'IBM Plex Mono',monospace;font-size:12px;font-weight:600;color:var(--dsh-blue);align-self:stretch}
.dsh-rep__more em{font-style:normal;transition:.2s}
.dsh-rep__more:hover em{transform:translateX(4px)}

/* TABLE */
.dsh-tbl{background:var(--dsh-panel);border:1px solid var(--dsh-line);border-radius:var(--dsh-rad);overflow:hidden}
.dsh-tbl__hd{display:grid;grid-template-columns:60px 1fr 120px 100px;padding:12px 22px;background:var(--dsh-panel2);font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--dsh-faint);letter-spacing:1.2px;border-bottom:1px solid var(--dsh-line)}
.dsh-tbl__cell--c{text-align:center}
.dsh-tbl__cell--r{text-align:right}
.dsh-tbl__row{display:grid;grid-template-columns:60px 1fr 120px 100px;padding:14px 22px;border-bottom:1px solid var(--dsh-line);align-items:center;transition:.15s}
.dsh-tbl__row:last-child{border-bottom:none}
.dsh-tbl__row:hover{background:var(--dsh-panel2)}
.dsh-tbl__no{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--dsh-blue);font-weight:600}
.dsh-tbl__h{font-size:14px;font-weight:500;color:var(--dsh-ink)}
.dsh-pill{display:inline-flex;align-items:center;padding:3px 10px;font-family:'IBM Plex Mono',monospace;font-style:normal;font-size:10.5px;font-weight:600;letter-spacing:.6px;border-radius:4px}
.dsh-pill--ok{background:rgba(34,224,107,.12);color:var(--dsh-green);border:1px solid rgba(34,224,107,.25)}
.dsh-tbl__row .dsh-tbl__cell--r{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--dsh-mute);text-align:right}

/* ABOUT */
.dsh-about{background:var(--dsh-panel);border:1px solid var(--dsh-line);border-radius:var(--dsh-rad);padding:30px 34px;display:grid;grid-template-columns:1fr 1.6fr;gap:40px}
.dsh-about__l .dsh-sec__h{font-size:26px;margin-top:8px}
.dsh-about__body{color:var(--dsh-mute);font-size:14.5px;line-height:1.8}
.dsh-about__body p{margin-bottom:12px}

/* CATEGORY */
.dsh-cat__hd{margin-bottom:24px}
.dsh-cat__h{font-family:'Inter',sans-serif;font-weight:800;font-size:38px;letter-spacing:-1px;margin:10px 0 10px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.dsh-cat__tag{font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--dsh-blue);font-weight:600;letter-spacing:.8px}
.dsh-cat__p{color:var(--dsh-mute);max-width:720px;font-size:15px}
.dsh-cat__grid{display:grid;grid-template-columns:1fr 310px;gap:24px;align-items:start}
.dsh-row{display:grid;grid-template-columns:240px 1fr;gap:22px;padding:18px;background:var(--dsh-panel);border:1px solid var(--dsh-line);border-radius:var(--dsh-rad);margin-bottom:14px;transition:.2s}
.dsh-row:hover{border-color:var(--dsh-blue)}
.dsh-row__fig{display:block;overflow:hidden;border-radius:var(--dsh-rad-sm);border:1px solid var(--dsh-line);aspect-ratio:16/10}
.dsh-row__body{display:flex;flex-direction:column;gap:8px;padding:4px 0}
.dsh-row__meta{display:flex;gap:10px;align-items:center;font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--dsh-mute);flex-wrap:wrap}
.dsh-row__id{color:var(--dsh-blue);font-weight:600}
.dsh-row__h{font-family:'Inter',sans-serif;font-weight:700;font-size:18px;line-height:1.3}
.dsh-row__p{color:var(--dsh-mute);font-size:13.5px;line-height:1.65;flex:1}
.dsh-row__more{display:inline-flex;align-items:center;gap:8px;font-family:'IBM Plex Mono',monospace;font-size:11.5px;font-weight:600;color:var(--dsh-blue);margin-top:auto;padding-top:10px;align-self:flex-start}
.dsh-row__more em{font-style:normal;transition:.2s}
.dsh-row__more:hover em{transform:translateX(3px)}
.dsh-page{margin-top:22px;display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
.dsh-page a,.dsh-page span{padding:8px 14px;border-radius:var(--dsh-rad-sm);background:var(--dsh-panel);border:1px solid var(--dsh-line);font-family:'IBM Plex Mono',monospace;font-size:12.5px;color:var(--dsh-ink)}
.dsh-page .current{background:var(--dsh-blue);border-color:var(--dsh-blue);color:#fff}
.dsh-cat__side{display:flex;flex-direction:column;gap:16px;position:sticky;top:80px}
.dsh-side{background:var(--dsh-panel);border:1px solid var(--dsh-line);border-radius:var(--dsh-rad);padding:22px 24px}
.dsh-side__hd{margin-bottom:16px}
.dsh-side__k{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--dsh-blue);letter-spacing:1px;display:block;margin-bottom:4px}
.dsh-side__h{font-family:'Inter',sans-serif;font-weight:700;font-size:17px}
.dsh-side__list{list-style:none;display:flex;flex-direction:column;gap:12px}
.dsh-side__list li{display:grid;grid-template-columns:32px 1fr;gap:10px;align-items:start;padding-bottom:12px;border-bottom:1px dashed var(--dsh-line);font-size:13.5px;line-height:1.5}
.dsh-side__list li:last-child{border-bottom:none;padding-bottom:0}
.dsh-side__list em{font-style:normal;font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--dsh-blue);font-weight:600}
.dsh-side__stat{display:flex;flex-direction:column;gap:12px;margin-top:14px}
.dsh-side__kv{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:var(--dsh-panel2);border:1px solid var(--dsh-line);border-radius:var(--dsh-rad-sm);font-family:'IBM Plex Mono',monospace;font-size:12px}
.dsh-side__kv em{font-style:normal;color:var(--dsh-mute);letter-spacing:.6px}
.dsh-side__kv b{color:var(--dsh-green);font-weight:600}

/* POST */
.dsh-post{max-width:840px;margin:0 auto;padding-top:8px}
.dsh-post__badge{display:inline-block;font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--dsh-blue);letter-spacing:1.4px;font-weight:600;margin:12px 0 14px}
.dsh-post__h{font-family:'Inter',sans-serif;font-weight:800;font-size:36px;line-height:1.15;letter-spacing:-.8px;margin-bottom:18px}
.dsh-post__meta{display:flex;gap:10px;flex-wrap:wrap;padding:14px 0;border-top:1px solid var(--dsh-line);border-bottom:1px solid var(--dsh-line);margin-bottom:30px}
.dsh-kv{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--dsh-panel2);border:1px solid var(--dsh-line);border-radius:var(--dsh-rad-sm);font-family:'IBM Plex Mono',monospace;font-size:11.5px}
.dsh-kv em{font-style:normal;color:var(--dsh-faint);letter-spacing:.6px}
.dsh-kv b{color:var(--dsh-ink);font-weight:600}
.dsh-post__cover{margin:0 0 30px;border:1px solid var(--dsh-line);border-radius:var(--dsh-rad);overflow:hidden}
.dsh-post__body{font-size:15.5px;line-height:1.85;color:#cfd6e7}
.dsh-post__body p{margin-bottom:16px}
.dsh-post__body h2,.dsh-post__body h3{font-family:'Inter';font-weight:700;margin:28px 0 12px;color:var(--dsh-ink)}
.dsh-post__body a{color:var(--dsh-blue);border-bottom:1px solid rgba(61,125,255,.4)}
.dsh-post__body img{border-radius:var(--dsh-rad-sm);margin:18px 0;border:1px solid var(--dsh-line)}
.dsh-post__body blockquote{border-left:3px solid var(--dsh-blue);background:var(--dsh-panel);padding:16px 22px;margin:20px 0;border-radius:0 var(--dsh-rad-sm) var(--dsh-rad-sm) 0;font-style:italic;color:var(--dsh-mute)}
.dsh-post__body code{background:var(--dsh-panel2);border:1px solid var(--dsh-line);padding:2px 6px;border-radius:4px;font-family:'IBM Plex Mono',monospace;font-size:13px;color:var(--dsh-green)}
.dsh-post__tags{margin:30px 0;padding:16px 20px;background:var(--dsh-panel);border:1px solid var(--dsh-line);border-radius:var(--dsh-rad);display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.dsh-post__tags-k{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--dsh-blue);letter-spacing:1px;font-weight:600}
.dsh-tag{padding:5px 12px;background:var(--dsh-panel2);border:1px solid var(--dsh-line);border-radius:var(--dsh-rad-sm);font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--dsh-ink)}
.dsh-tag:hover{border-color:var(--dsh-blue);color:var(--dsh-blue)}
.dsh-post__nav{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:34px 0}
.dsh-post__nav-c{padding:18px 22px;background:var(--dsh-panel);border:1px solid var(--dsh-line);border-radius:var(--dsh-rad);display:flex;flex-direction:column;gap:6px;transition:.2s}
.dsh-post__nav-c:hover{border-color:var(--dsh-blue)}
.dsh-post__nav-c--r{text-align:right}
.dsh-post__nav-k{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--dsh-blue);letter-spacing:1px;font-weight:600}
.dsh-post__nav-h{font-family:'Inter',sans-serif;font-weight:600;font-size:14.5px;line-height:1.4;color:var(--dsh-ink)}

/* RELATED */
.dsh-related{margin-top:40px}
.dsh-related__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.dsh-related__c{background:var(--dsh-panel);border:1px solid var(--dsh-line);border-radius:var(--dsh-rad);overflow:hidden;display:flex;flex-direction:column;transition:.2s}
.dsh-related__c:hover{border-color:var(--dsh-blue);transform:translateY(-2px)}
.dsh-related__c mip-img{border-bottom:1px solid var(--dsh-line)}
.dsh-related__in{padding:12px 16px 14px}
.dsh-related__k{font-family:'IBM Plex Mono',monospace;font-size:10.5px;color:var(--dsh-blue);letter-spacing:.8px;font-weight:600;display:block;margin-bottom:6px}
.dsh-related__h{font-family:'Inter',sans-serif;font-weight:600;font-size:13.5px;line-height:1.4}

/* 404 */
.dsh-404{min-height:60vh;display:grid;place-items:center;padding:60px 20px}
.dsh-404__panel{background:var(--dsh-panel);border:1px solid var(--dsh-line);border-radius:var(--dsh-rad);padding:50px 42px;max-width:520px;width:100%}
.dsh-404__status{display:flex;gap:10px;align-items:center;font-family:'IBM Plex Mono',monospace;font-size:12px;margin-bottom:16px}
.dsh-404__status-k{color:var(--dsh-faint);letter-spacing:1.2px}
.dsh-404__status-v{color:var(--dsh-red);font-weight:700;font-size:15px}
.dsh-404__status-t{color:var(--dsh-red);letter-spacing:1px}
.dsh-404__h{font-family:'Inter';font-weight:800;font-size:28px;letter-spacing:-.6px;margin-bottom:12px}
.dsh-404__p{color:var(--dsh-mute);font-size:14.5px;line-height:1.7;margin-bottom:24px}
.dsh-404__logs{background:#06090f;border:1px solid var(--dsh-line);border-radius:var(--dsh-rad-sm);padding:14px 16px;margin-bottom:24px;font-family:'IBM Plex Mono',monospace;font-size:12px;line-height:1.8}
.dsh-log{color:var(--dsh-mute)}
.dsh-log:nth-child(1){color:var(--dsh-red)}
.dsh-log:nth-child(2){color:var(--dsh-amber)}
.dsh-log:nth-child(3){color:var(--dsh-green)}

/* FOOTER */
.dsh-ft{background:var(--dsh-panel);border-top:1px solid var(--dsh-line);margin-top:40px;padding:40px 24px 24px}
.dsh-ft__grid{max-width:1400px;margin:0 auto;display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:40px;padding-bottom:28px;border-bottom:1px solid var(--dsh-line)}
.dsh-ft__logo{display:flex;align-items:center;gap:10px;font-family:'IBM Plex Mono',monospace;font-size:17px;font-weight:600;margin-bottom:14px;color:var(--dsh-ink)}
.dsh-ft__desc{color:var(--dsh-mute);font-size:13.5px;line-height:1.7;margin-bottom:18px;max-width:440px}
.dsh-ft__meta{display:flex;gap:8px;flex-wrap:wrap}
.dsh-ft__h{font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--dsh-blue);letter-spacing:1.4px;margin-bottom:14px;font-weight:600}
.dsh-ft__list{list-style:none;display:flex;flex-direction:column;gap:10px;font-size:13.5px}
.dsh-ft__list a{color:var(--dsh-mute);display:flex;align-items:center;gap:6px}
.dsh-ft__list em{font-style:normal;color:var(--dsh-blue)}
.dsh-ft__list a:hover{color:var(--dsh-ink)}
.dsh-ft__bot{max-width:1400px;margin:0 auto;padding-top:20px;display:flex;gap:24px;flex-wrap:wrap;font-family:'IBM Plex Mono',monospace;font-size:11.5px;color:var(--dsh-faint);letter-spacing:.6px}
.dsh-ft__host{margin-left:auto;color:var(--dsh-blue)}

/* RESPONSIVE */
@media (max-width:1100px){
    .dsh-hero{grid-template-columns:1fr}
    .dsh-hero__h{font-size:34px}
    .dsh-kpi{grid-template-columns:repeat(2,1fr)}
    .dsh-mat{grid-template-columns:repeat(2,1fr)}
    .dsh-rep{grid-template-columns:repeat(2,1fr)}
    .dsh-cat__grid{grid-template-columns:1fr}
    .dsh-about{grid-template-columns:1fr;gap:22px}
    .dsh-related__grid{grid-template-columns:repeat(2,1fr)}
    .dsh-ft__grid{grid-template-columns:1fr 1fr;gap:24px}
}
@media (max-width:760px){
    .dsh-hd__inner{padding:10px 14px;gap:12px;flex-wrap:wrap}
    .dsh-burger{display:inline-flex}
    .dsh-nav{display:none;width:100%;order:5;flex-direction:column;gap:4px;margin-left:0;padding-top:8px;border-top:1px solid var(--dsh-line)}
    .dsh-nav.is-open{display:flex}
    .dsh-hd__cta .dsh-btn--pri{display:none}
    .dsh-main{padding:18px 14px 50px}
    .dsh-hero__l{padding:24px 22px}
    .dsh-hero__h{font-size:28px}
    .dsh-kpi{grid-template-columns:1fr 1fr}
    .dsh-mat{grid-template-columns:1fr}
    .dsh-rep{grid-template-columns:1fr;gap:14px}
    .dsh-tbl__hd,.dsh-tbl__row{grid-template-columns:44px 1fr 80px;padding:12px 14px}
    .dsh-tbl__cell--c,.dsh-tbl__hd span:nth-child(3){display:none}
    .dsh-row{grid-template-columns:1fr;padding:14px}
    .dsh-post__h{font-size:26px}
    .dsh-post__nav{grid-template-columns:1fr}
    .dsh-related__grid{grid-template-columns:1fr 1fr;gap:12px}
    .dsh-ft__grid{grid-template-columns:1fr;padding-bottom:22px}
}
/* Universal logo */
.tpl-logo-img,.tpl-logo-img img{display:inline-block !important;vertical-align:middle;max-width:180px;width:auto;height:48px;margin-right:6px;object-fit:contain}
mip-img.tpl-logo-img{width:auto;max-width:180px;height:48px}

/* === Unified online hero buttons (added by batch script) === */
[data-tpl-online]{position:relative;color:#fff !important;border:none !important}
[data-tpl-online="play"]{background:linear-gradient(135deg,#10b981,#059669) !important;box-shadow:0 4px 14px rgba(16,185,129,.4) !important}
[data-tpl-online="enter"]{background:linear-gradient(135deg,#3b82f6,#1d4ed8) !important;box-shadow:0 4px 14px rgba(59,130,246,.4) !important}
[data-tpl-online="download"]{background:linear-gradient(135deg,#a855f7,#7c3aed) !important;box-shadow:0 4px 14px rgba(168,85,247,.4) !important}
[data-tpl-online="register"]{background:linear-gradient(135deg,#f59e0b,#d97706) !important;box-shadow:0 4px 14px rgba(245,158,11,.4) !important}
[data-tpl-online]:hover{filter:brightness(1.1);transform:translateY(-2px)}
.tpl-online-btns{display:flex !important;flex-wrap:wrap;gap:10px;margin:14px 0;justify-content:center;align-items:center}
.tpl-online-btns [data-tpl-online]{display:inline-block;padding:10px 18px;border-radius:25px;font-size:14px;font-weight:700;text-decoration:none;white-space:nowrap;cursor:pointer;color:#fff !important}
