/* Journal and publishing tools, sharing the Editorial Engineering design tokens. */
.desktop-nav a{padding-inline:11px}
.blog-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.blog-card{border:1px solid #e5e7e5;border-radius:8px;overflow:hidden;background:#fff;display:flex;flex-direction:column;min-width:0;transition:box-shadow .2s}.blog-card:hover{box-shadow:0 8px 28px #1f4e7910}.blog-card-media{aspect-ratio:16/9;background:#edf1f4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;overflow:hidden}.blog-card-media img{width:100%;height:100%;object-fit:cover}.blog-card-symbol{color:#1f4e79}.blog-card-symbol .icon{width:46px;height:46px}.blog-card-media .eyebrow{font-size:10px;color:#1f4e79}.blog-card-copy{padding:25px;display:flex;flex:1;flex-direction:column;align-items:flex-start}.blog-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12px;color:#72777f;line-height:1.6}.blog-card :is(h2,h3){font-size:21px;line-height:1.4;margin:15px 0 12px;letter-spacing:-.03em;overflow-wrap:anywhere}.blog-card :is(h2,h3) a:hover{color:#1f4e79}.blog-card-copy>p{font-size:14px;line-height:1.85;margin-bottom:14px;overflow-wrap:anywhere}.blog-card-copy>.text-link{margin-top:auto}.blog-tags{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0 14px}.blog-tags a{font-size:12px;background:#edf1f4;border-radius:4px;color:#1f4e79;padding:5px 9px;min-height:30px;display:inline-flex;align-items:center;overflow-wrap:anywhere;max-width:100%}.blog-tags a:hover{background:#dfe8ef}.blog-tools{display:flex;justify-content:space-between;align-items:center;gap:20px;border-block:1px solid #e5e7e5;padding:20px 0;margin-bottom:35px}.blog-search{display:flex;gap:10px;max-width:550px;flex:1}.blog-search input{background:#fff;border:1px solid #dce1e4;border-radius:6px;min-height:46px;padding:10px 14px;min-width:0;flex:1;font-size:16px}.blog-search input:focus{outline:2px solid #1f4e79;outline-offset:2px}.rss-link{font-size:13px}.blog-search-context{display:flex;align-items:center;gap:20px;font-size:16px;margin-bottom:25px}.blog-empty{padding:70px 25px;text-align:center;border:1px dashed #d4dce2;border-radius:8px;background:#fff}.blog-empty>.icon{height:40px;width:40px;color:#1f4e79;margin-bottom:20px}.blog-empty h2{font-size:26px;max-width:600px;margin:0 auto 16px}.blog-empty p{max-width:580px;margin:auto;font-size:16px}.blog-empty .text-link{margin-top:14px}.blog-pagination{display:flex;align-items:center;justify-content:center;gap:22px;margin-top:40px}.blog-pagination>span{font-size:14px;color:#72777f}
.article-shell{padding-top:35px;padding-bottom:70px}.article-header{max-width:870px;margin:30px auto 40px}.article-header h1{font-size:clamp(2.2rem,4vw,3.6rem);line-height:1.18;margin:17px 0 24px;overflow-wrap:anywhere}.article-header .lead{font-size:19px;max-width:800px}.article-byline{display:flex;gap:13px;align-items:center;margin-top:28px}.author-avatar{display:grid;place-items:center;flex-shrink:0;width:44px;height:44px;border-radius:50%;background:#1f4e79;color:#fff;font:600 16px 'Plus Jakarta Sans',sans-serif}.article-author{display:block;font-size:14px;font-weight:600;margin-bottom:3px}.article-header>.blog-tags{margin-top:23px}.article-cover{max-width:1040px;margin:0 auto 50px;border-radius:9px;overflow:hidden;background:#edf1f4}.article-cover img{width:100%;height:auto;max-height:600px;object-fit:contain}.article-layout{display:grid;grid-template-columns:240px minmax(0,760px);gap:70px;max-width:1070px;margin:auto;align-items:start}.article-aside{position:sticky;top:120px}.article-toc{display:flex;flex-direction:column;gap:12px;padding-bottom:28px;border-bottom:1px solid #e5e7e5;margin-bottom:27px}.article-toc a{font-size:14px;line-height:1.7;color:#555b61;overflow-wrap:anywhere}.article-toc a:hover{color:#1f4e79}.article-toc .eyebrow{margin-bottom:7px}.article-share .btn{margin-top:14px}.share-feedback{font-size:13px;margin-top:10px;min-height:20px}.article-main{min-width:0}.article-prose{font-size:18px;line-height:1.9;color:#333b43;overflow-wrap:anywhere}.article-prose p{color:inherit;margin-bottom:24px}.article-prose h2{font-size:29px;margin:42px 0 22px;scroll-margin-top:120px}.article-prose h3{font-size:22px;margin:30px 0 16px;scroll-margin-top:120px}.article-prose h2:first-child{margin-top:0}.article-prose ul,.article-prose ol{padding-left:25px;margin-bottom:26px;list-style:disc}.article-prose ol{list-style:decimal}.article-prose li{margin-bottom:9px}.article-prose strong{font-weight:600;color:#1a1c1b}.article-prose a{color:#1f4e79;text-decoration:underline;text-underline-offset:4px}.article-prose blockquote{border-left:3px solid #1f4e79;padding:18px 22px;background:#edf1f4;border-radius:0 6px 6px 0;margin:28px 0;color:#1f4e79}.article-prose code{font-family:Consolas,monospace;background:#edf1f4;padding:2px 5px;border-radius:3px;font-size:.85em;overflow-wrap:anywhere}.article-prose pre{background:#172a3a;color:#eef4fa;border-radius:7px;padding:22px;overflow:auto;font-size:16px;line-height:1.8;margin:28px 0;max-width:100%}.article-prose pre code{background:none;padding:0;color:inherit;overflow-wrap:normal;white-space:pre}.article-updated{font-size:13px;margin-top:25px}.article-source{margin-bottom:15px}.article-author-box{display:flex;gap:20px;border-top:1px solid #e5e7e5;border-bottom:1px solid #e5e7e5;padding:30px 0;margin-top:35px}.article-author-box h2{font-size:19px;margin-bottom:10px}.article-author-box p{font-size:16px}.article-author-box .text-link{margin-top:7px}.article-project{background:#edf1f4;border-radius:8px;padding:27px;margin-top:30px}.article-project h2{font-size:24px;margin:12px 0}.article-project p{font-size:16px}
.admin-header-actions{display:flex;align-items:center;gap:22px}.admin-header-actions form{margin:0}.admin-main{padding-block:50px 85px}.admin-main h1{font-size:36px;margin:12px 0}.admin-main .section-heading>div>p{font-size:16px}.admin-notice{border:1px solid #b5d0c6;background:#eff7f3;color:#20583f;border-radius:7px;font-size:16px;line-height:1.7;padding:15px 20px;margin-bottom:25px}.admin-error{background:#fff3f0;border-color:#efc4b9;color:#8b3027}.admin-login{max-width:570px;margin:35px auto;background:white;border:1px solid #e5e7e5;border-radius:9px;padding:38px}.admin-login>p{font-size:16px;margin:15px 0}.admin-login form{margin-top:28px}.admin-login form>.btn{margin-top:22px;width:100%}.admin-login pre{background:#edf1f4;border-radius:6px;padding:15px;font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere}.admin-login p code{font-size:14px}.admin-label{display:block;font-size:14px;color:#303b45;font-weight:600;line-height:1.7;margin:19px 0 8px}.admin-input{display:block;width:100%;max-width:100%;min-width:0;min-height:46px;padding:12px 13px;background:#fff;border:1px solid #dce1e4;border-radius:5px;font-size:16px;line-height:1.7;color:#1a1c1b}.admin-input:focus{outline:2px solid #1f4e79;outline-offset:2px}.admin-input[readonly],.admin-input:disabled{background:#f0f1ee;color:#63686c}.admin-input::placeholder{color:#8a9097}.admin-help{font-size:13px;line-height:1.7;margin-top:9px;color:#72777f}.admin-empty{text-align:center;background:#fff;border:1px dashed #c2c7d0;border-radius:8px;padding:65px 25px}.admin-empty h2{font-size:27px;margin-bottom:15px}.admin-empty p{font-size:16px}.admin-empty .btn{margin-top:25px}.admin-post-list{display:flex;flex-direction:column;gap:16px}.admin-post-row{display:flex;align-items:center;justify-content:space-between;gap:25px;background:#fff;border:1px solid #e5e7e5;border-radius:8px;padding:25px}.admin-post-row h2{font-size:21px;margin:8px 0;overflow-wrap:anywhere}.admin-post-row p{font-size:13px}.admin-row-actions{display:flex;gap:17px;align-items:center;flex-shrink:0}.editor-columns{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:35px;align-items:start}.editor-content{min-width:0}.editor-sidebar{min-width:0}.editor-content>.admin-label:first-child{margin-top:0}.title-input{font-family:'Plus Jakarta Sans',sans-serif;font-size:22px;letter-spacing:-.025em;padding:17px}.editor-pair{display:grid;grid-template-columns:1fr 1.5fr;gap:20px}.editor-panel{background:#fff;border:1px solid #e5e7e5;border-radius:7px;padding:23px;margin-bottom:22px}.editor-panel h2{font-size:18px;letter-spacing:-.02em;margin-bottom:10px}.editor-panel .admin-label{font-size:13px}.save-post{width:100%;margin-top:20px}.editor-toolbar{display:flex;flex-wrap:wrap;gap:6px;background:#edf1f4;border:1px solid #dce1e4;border-radius:5px 5px 0 0;padding:8px}.editor-toolbar button{font-size:12px;padding:8px 10px;background:#fff;border:1px solid #dce1e4;border-radius:4px;min-height:36px}.body-input{border-radius:0 0 5px 5px;font-size:16px;line-height:1.9;min-height:500px;resize:vertical}.admin-details{background:#edf1f4;border-radius:6px;padding:20px;margin-top:25px;font-size:14px;color:#555b61}.admin-details summary{font-weight:600;color:#1f4e79;cursor:pointer;min-height:30px}.admin-details ul{list-style:disc;padding-left:20px;margin-top:15px}.admin-details li{margin-bottom:10px}.admin-cover{max-width:100%;height:auto;max-height:200px;object-fit:contain;background:#edf1f4;border-radius:5px;margin:16px auto}.admin-check{display:flex;align-items:center;gap:9px;font-size:13px;margin-top:12px;min-height:36px}.admin-check input{width:18px;height:18px}.file-input{font-size:13px;padding:10px}.search-preview{padding:15px;background:#f9f9f7;border:1px solid #e5e7e5;border-radius:5px;margin-top:18px;overflow-wrap:anywhere}.search-preview small{font-size:11px;color:#63686c}.search-preview strong{display:block;color:#1f4e79;font-size:17px;line-height:1.5;margin:7px 0;font-weight:500}.search-preview p{font-size:13px;line-height:1.8}
@media(max-width:1100px){.article-layout{grid-template-columns:180px minmax(0,1fr);gap:40px}.blog-grid{gap:18px}.blog-card-copy{padding:22px}.editor-columns{grid-template-columns:minmax(0,1fr) 300px;gap:25px}.editor-panel{padding:20px}}
@media(max-width:767px){.blog-grid{grid-template-columns:1fr;gap:22px}.blog-card-copy{padding:24px}.blog-card :is(h2,h3){font-size:24px;margin-top:14px}.blog-card-copy>p{font-size:16px}.blog-tools{flex-direction:column;align-items:stretch;gap:12px;padding-block:16px;margin-bottom:25px}.blog-search{max-width:none}.blog-tools .rss-link{align-self:flex-start}.blog-search input{font-size:14px}.blog-empty{padding:40px 22px}.blog-empty h2{font-size:24px}.blog-empty p{font-size:16px}.blog-pagination{gap:12px}.blog-pagination .btn{padding:10px 12px;font-size:13px}.blog-pagination>span{font-size:12px}.article-shell{padding-top:23px;padding-bottom:45px}.article-header{margin:23px 0 30px}.article-header h1{font-size:36px;margin-block:13px 20px}.article-header .lead{font-size:17px}.article-byline{margin-top:22px}.blog-meta{font-size:12px}.article-layout{display:flex;flex-direction:column-reverse;gap:25px}.article-main{width:100%}.article-aside{position:static;width:100%}.article-toc{display:none}.article-share{border-top:1px solid #e5e7e5;padding-top:25px}.article-cover{margin-bottom:28px}.article-prose{font-size:18px;line-height:1.9}.article-prose h2{font-size:26px;margin-top:32px}.article-prose h3{font-size:21px}.article-prose pre{padding:17px;font-size:13px}.article-prose blockquote{padding:15px 18px}.article-author-box{padding:25px 0;gap:15px}.article-author-box h2{font-size:18px}.article-author-box p{font-size:14px}.article-project{padding:23px}.admin-main{padding-block:30px 55px}.admin-main h1{font-size:30px}.admin-header-actions{gap:12px}.admin-header-actions .text-link{font-size:12px}.admin-header-actions .btn{min-height:40px;padding:8px 13px}.admin-login{padding:28px 23px;margin:15px auto}.admin-login h1{font-size:30px}.admin-login>p{font-size:16px}.admin-post-row{flex-direction:column;align-items:flex-start;gap:12px;padding:22px}.admin-post-row h2{font-size:21px}.admin-row-actions{width:100%;justify-content:space-between}.editor-columns{grid-template-columns:1fr;gap:25px}.editor-pair{grid-template-columns:1fr;gap:0}.title-input{font-size:20px;padding:15px}.body-input{min-height:400px;font-size:16px}.editor-toolbar{gap:4px;padding:6px}.editor-toolbar button{font-size:12px;padding-inline:8px}.editor-panel{padding:24px}.editor-panel h2{font-size:21px}.admin-input{font-size:18px}.editor-panel .admin-input{font-size:16px}.admin-label{font-size:16px}.admin-notice{padding:14px 17px;font-size:14px}.save-post{min-height:49px}}
@media(prefers-reduced-motion:reduce){.blog-card{transition:none}}
@media print{.article-aside,.article-author-box,.article-project,.article-source,.admin-notice{display:none!important}.article-layout{display:block}.article-header{max-width:none}.article-prose{font-size:11pt}.article-prose p{font-size:11pt}.article-cover img{max-height:300px}}

.blog-language{display:inline-flex;font-size:11px;color:#1f4e79;background:#edf1f4;border:1px solid #dce1e4;border-radius:4px;padding:3px 7px;margin-top:13px}.blog-home-empty{padding:25px 28px;border:1px dashed #d4dce2;border-radius:8px;background:#fff}.blog-home-empty p{font-size:16px}.blog-home .section-heading>div>p{max-width:650px}.blog-home .blog-card-copy>p{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}

/* readability-pass-2026-10-28 */

/* Local flag assets keep the language selector consistent across operating systems. */
.language-switch a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:32px;min-height:46px;padding:6px;line-height:1}.language-flag{display:block;width:20px;height:14px;object-fit:cover;border-radius:2px;box-shadow:0 0 0 1px #1a1c1b12}.language-code{font-size:12px;line-height:1;font-weight:600}@media(max-width:767px){.language-switch a{min-width:30px;padding:5px}.language-code{font-size:11px}}
/* Native project captures and responsive app screenshots. */
.project-media.website-capture img{object-position:center top}
.website-capture.media-large{aspect-ratio:auto;display:block}
.media-zoom{display:block;width:100%;padding:0;border:0;background:transparent;cursor:zoom-in}
.website-capture.media-large .media-zoom img{display:block;width:100%;height:auto}
.app-preview-media{background:linear-gradient(135deg,#e7efff,#f5f8ff);position:relative}
.media-bichano.app-preview-media{background:linear-gradient(135deg,#daf0e4,#f2f8ed)}
.app-preview{display:flex;align-items:center;justify-content:center;gap:4%;width:100%;height:100%;padding:5% 7%;box-sizing:border-box;aspect-ratio:16/10}
.preview-frame{width:26%;flex:0 0 26%;border-radius:12px;overflow:hidden;box-shadow:0 12px 28px #17294326;transform:translateY(3%);background:#fff}
.preview-frame:nth-child(2){transform:translateY(-3%)}
.project-media .preview-frame img{display:block;width:100%;height:auto;object-fit:contain}
.app-preview-media.media-large{aspect-ratio:16/9}
.app-preview-media.media-large .app-preview{padding:4% 12%;aspect-ratio:16/9}
.app-preview-media.media-large .preview-frame{max-width:240px}
@media(max-width:767px){.preview-frame{border-radius:7px}.app-preview-media.media-large{aspect-ratio:16/11}.app-preview-media.media-large .app-preview{padding:6% 7%}}

/* AI editorial assistant */
.ai-editor-panel{padding:24px;margin-bottom:32px;background:#edf3f8;border:1px solid #d5e1ec;border-radius:12px}
.ai-editor-panel h2{font-size:26px;margin:8px 0 14px}.ai-editor-panel p{margin:12px 0;line-height:1.65}
.ai-editor-panel .button-row{flex-wrap:wrap}.ai-editor-panel button:disabled{opacity:.6;cursor:wait}
#ai-feedback{font-weight:600;color:#204f72}#ai-sources{padding-left:20px;overflow-wrap:anywhere}#ai-sources li{margin:8px 0}
#ai-sources a{color:#204f72;text-decoration:underline}#ai-search-widget{width:100%;height:150px;border:0;background:#fff;border-radius:8px;margin-top:12px}
#ai-undo{border:0;background:transparent;cursor:pointer}#ai-undo[hidden],#ai-research[hidden],#ai-search-widget[hidden]{display:none}
@media(max-width:600px){.ai-editor-panel{padding:18px}.ai-editor-panel .button-row{align-items:stretch;flex-direction:column}.ai-editor-panel h2{font-size:23px}}

#ai-title-options[hidden]{display:none}#ai-title-list{display:grid;gap:10px;margin-top:16px}
.ai-title-choice{display:grid;grid-template-columns:30px 1fr;gap:5px 12px;text-align:left;background:#fff;border:1px solid #cedce8;border-radius:9px;padding:16px;color:#223d52;cursor:pointer;font:inherit;width:100%}
.ai-title-choice strong{font-weight:600;line-height:1.5}.ai-title-choice small{grid-column:2;color:#47657d}.ai-title-number{grid-row:1/3;font-weight:700;color:#52748f}
.ai-title-choice:hover,.ai-title-choice[aria-pressed=true]{background:#e0edf8;border-color:#285c85}.ai-title-choice:focus-visible{outline:3px solid #285c85;outline-offset:3px}
