/* developer portfolio pages (dp1107a, 7 Nov 2026) */
.dpprof{padding:clamp(28px,5vw,56px) 0 0}
.dpp{display:grid;grid-template-columns:minmax(0,180px) minmax(0,1fr);gap:clamp(18px,3vw,40px);align-items:start;padding:clamp(20px,3vw,36px)}
.dpp h2{margin:0 0 10px}.dpp .lead{margin:0 0 18px}
.dpl{display:flex;align-items:center;justify-content:center;min-height:120px;border-radius:18px;background:rgba(255,255,255,.55);padding:18px}
html[data-theme=night] .dpl{background:rgba(255,255,255,.06)}
.dpl img{max-width:140px;max-height:70px;width:auto;height:auto;filter:brightness(0) invert(.14)}
html[data-theme=night] .dpl img{filter:brightness(0) invert(1)}
.dpf{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:10px 22px;margin:0}
.dpf dt{font-weight:600;white-space:nowrap;color:var(--gtext,#53605a)}.dpf dd{margin:0;overflow-wrap:anywhere}
.dpf a{text-decoration:underline;text-underline-offset:3px}
.dps{margin:16px 0 0;font-size:12.5px;opacity:.75}
.dpfilt{padding:clamp(24px,4vw,40px) 0 0}.dpfilt .eyebrow{margin-bottom:10px}
.dpchips{display:flex;flex-wrap:wrap;gap:8px}
.dpchip{font:600 14px/1 Montserrat,"Montserrat Fallback",system-ui,sans-serif;min-height:44px;padding:0 16px;border-radius:999px;white-space:nowrap;cursor:pointer;
 color:#11161A;background:rgba(255,255,255,.74);border:1px solid rgba(17,22,26,.13);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}
.dpchip b{font-weight:700;margin-left:6px;opacity:.6}
.dpchip[aria-pressed=true]{background:#11161A;color:#fff;border-color:#11161A}
html[data-theme=night] .dpchip{color:#F2F5F3;background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.17)}
html[data-theme=night] .dpchip[aria-pressed=true]{background:#F2F5F3;color:#0B1014;border-color:#F2F5F3}
.dpchip:focus-visible{outline:2px solid #5DC974;outline-offset:2px}
.dtog a{min-height:44px}
.hero .dtog{flex-wrap:wrap;row-gap:8px;overflow:visible;max-width:100%}
.dpsec{padding:clamp(32px,5vw,64px) 0 0}.dpsec[hidden]{display:none}
.dpg{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:clamp(14px,2vw,22px)}
.dpcard{display:flex;flex-direction:column;min-width:0}.dpcard[hidden]{display:none}
.dpcard .pph{position:relative;aspect-ratio:16/10;border-radius:16px;overflow:hidden;margin:0 0 14px}
.dpcard .pph>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.dpcard .pph .pills{position:absolute;left:10px;top:10px;display:flex;gap:6px;flex-wrap:wrap;max-width:calc(100% - 20px)}
.dpcard .pph .pills span{white-space:nowrap}
.dpcard .pph .dpc{position:absolute;left:auto;right:10px;bottom:10px;z-index:2;text-transform:none;letter-spacing:.02em;text-shadow:none;font:600 11px/1 Montserrat,"Montserrat Fallback",system-ui,sans-serif;padding:6px 9px;border-radius:999px;white-space:nowrap;
 color:#11161A;background:rgba(255,255,255,.82);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
html[data-theme=night] .dpcard .pph .dpc{color:#fff;background:rgba(12,16,20,.68)}
.dpcard h3{margin:0 0 4px;overflow-wrap:anywhere}.dpcard .where{margin:0 0 10px}
.dpcard dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px 14px;margin:0 0 14px}
.dpcard dt{white-space:nowrap}.dpcard dd{margin:0;overflow-wrap:anywhere}
.dpcard .dpn{margin:0 0 14px;opacity:.7}
.dpcard .act{margin-top:auto}
@media (max-width:640px){.dpp{grid-template-columns:minmax(0,1fr)}.dpl{min-height:90px;justify-content:flex-start;background:none;padding:0}
 html[data-theme=night] .dpl{background:none}.dpf{grid-template-columns:minmax(0,1fr);gap:2px}.dpf dd{margin-bottom:10px}}
