/* Upstream styles.css is unmodified. Only added routes and project disclosure are styled here. */
.template-project-menu{position:relative;align-self:center}.template-project-menu summary{list-style:none;padding:12px 16px;border:1px solid transparent;border-radius:999px;cursor:pointer}.template-project-menu summary::-webkit-details-marker{display:none}.template-project-menu summary:hover{background:rgba(255,255,255,.3)}.template-submenu{position:absolute;top:calc(100% + 9px);left:0;width:245px;padding:10px;background:#f0e6da;border:1px solid #ffffff88;border-radius:22px;box-shadow:0 18px 55px #3d2f2a29;z-index:30}.site-nav .template-submenu a{display:block;font-size:14px;padding:11px 15px}.template-album{padding:40px;margin-bottom:40px}.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.photo-grid:empty{display:none}.photo-button{padding:0;border:0;width:100%;aspect-ratio:4/5;overflow:hidden;border-radius:22px;cursor:zoom-in;background:#e8e2d6}.photo-button img{width:100%;height:100%;object-fit:cover}.photo-caption{display:flex;justify-content:space-between;font-size:13px;gap:12px;margin-top:12px}dialog{max-width:90vw;max-height:90vh;border:0;border-radius:22px;background:#efe6da;padding:20px}dialog::backdrop{background:#191716cc}dialog img{max-height:72vh;object-fit:contain}dialog p{margin:12px 0 0}.dialog-close{position:absolute;right:24px;top:24px;width:38px;height:38px;border:0;border-radius:50%;background:#efe6da;font-size:25px;cursor:pointer}
.tool-surface{--field:rgba(255,255,255,.35);--soft:#d8c4ad}.tool-surface .btn.primary,.tool-surface .draw-tab.active{background:rgba(25,23,22,.88);color:white;border-color:transparent}.tool-surface .glass-card{background:linear-gradient(145deg,rgba(255,255,255,.36),rgba(255,255,255,.08)),rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.38);border-radius:34px;box-shadow:var(--soft-shadow);backdrop-filter:blur(28px)}
.tool-surface .tool-hero{padding:50px 0 20px}.tool-surface .tool-title{font-size:42px;line-height:1.3;font-weight:550;letter-spacing:-1px;margin-bottom:15px}.tool-surface .tool-desc,.tool-surface .meta,.tool-surface .map-note{font-size:12px;line-height:1.8;color:var(--muted)}.tool-surface .glass-card{padding:24px;background:var(--glass);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow)}.tool-surface .ip-layout{display:grid;grid-template-columns:1.1fr 1fr;gap:22px}.tool-surface .ip-stack,.tool-surface .map-grid{display:grid;gap:22px;align-content:start}.tool-surface .ip-card h2{font-size:21px;margin-bottom:10px}.tool-surface .info-row{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid #84998722;padding:9px 0;font-size:12px}.tool-surface .info-row strong{text-align:right;overflow-wrap:anywhere;min-width:0;max-width:72%;font-weight:500}.tool-surface .info-row>span{flex-shrink:0;color:var(--muted)}.tool-surface .form-row{display:flex;gap:8px;flex-wrap:wrap}.tool-surface .input,.tool-surface textarea{width:100%;border:1px solid #94a28d55;background:var(--field);color:var(--ink);border-radius:11px;padding:11px 13px;font-size:12px}.tool-surface .input{min-width:0}.tool-surface .form-row .input{flex-basis:100%}.tool-surface .btn{border:1px solid #94a28d55;background:var(--glass);color:var(--ink);padding:9px 14px;border-radius:20px;font-size:11px;cursor:pointer}.tool-surface .btn.primary{background:var(--accent);color:var(--paper);border-color:var(--accent)}.tool-surface .map-panel h3{font-size:15px}.tool-surface .map-frame{border:0;border-radius:12px;width:100%;height:240px;background:var(--soft)}.tool-surface .map-note{margin-bottom:0}.tool-surface .draw-shell{display:grid;grid-template-columns:1.2fr 1fr;gap:24px}.tool-surface .draw-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:25px}.tool-surface .draw-tab{font-size:11px;padding:9px 12px;background:transparent;border:1px solid #94a28d44;border-radius:20px}.tool-surface .draw-tab.active{background:var(--accent);color:var(--paper)}.tool-surface .draw-mode{display:none}.tool-surface .draw-mode.active{display:block}.tool-surface .section-kicker{font-size:12px;display:block;margin-bottom:10px}.tool-surface textarea{min-height:200px;resize:vertical;line-height:1.8}.tool-surface .switch-row{display:flex;flex-wrap:wrap;align-items:center;gap:9px;font-size:11px;margin:15px 0}.tool-surface .switch-row input{accent-color:var(--accent)}.tool-surface .option-row{display:flex;gap:12px}.tool-surface .action-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:23px}.tool-surface .draw-stage{display:flex;flex-direction:column}.tool-surface .draw-output{font-size:30px;text-align:center;display:grid;place-content:center;min-height:170px;overflow-wrap:anywhere}.tool-surface .mini-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:20px 0;border-top:1px solid #94a28d44;border-bottom:1px solid #94a28d44}.tool-surface .stat-card strong,.tool-surface .stat-card span{display:block;text-align:center}.tool-surface .stat-card strong{font-size:25px;font-weight:400}.tool-surface .stat-card span{font-size:10px;color:var(--muted)}.tool-surface .history-box{padding-top:22px}.tool-surface .history-box h3{font-size:14px}.tool-surface .history-box>.btn{margin-top:18px}.tool-surface .rolling{opacity:.65}
.tool-surface .query-workbench{margin-bottom:24px;padding:25px 28px}.tool-surface .query-workbench h2{font-size:21px;margin-bottom:18px}.tool-surface .query-workbench .form-row{align-items:center}.tool-surface .query-workbench .form-row .input{flex:1 1 260px}.tool-surface .query-workbench .tool-desc{margin:12px 0 0}.tool-surface .query-details{margin-top:12px}.tool-surface .query-details>summary{font-size:11px;display:list-item;list-style:disclosure-closed;color:var(--muted)}.tool-surface .query-details[open]>summary{list-style:disclosure-open}.tool-surface .query-columns{display:grid;grid-template-columns:1fr 1fr;gap:25px;margin-top:15px}.tool-surface .ip-layout{grid-template-columns:1fr 1fr;align-items:start}.tool-surface .ip-result{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}.tool-surface .info-row{flex-direction:column;gap:2px;padding:9px 0}.tool-surface .info-row strong{text-align:left;max-width:100%;font-size:12px}.tool-surface .info-row>span{font-size:10px}.tool-surface .ip-card>.map-frame{margin-top:21px;height:215px}.tool-surface .query-columns .map-frame{height:260px}.tool-surface .info-row strong{word-break:break-word}

.tool-surface .btn.primary,.tool-surface .draw-tab.active{background:#191716;color:#fff}.tool-surface .input,.tool-surface textarea{color:#191716}.tool-surface .draw-output{font-family:inherit;line-height:1.5}.tool-surface .query-workbench h2{font-size:25px;line-height:1.4}.tool-surface .ip-card h2{line-height:1.4}.template-project-menu summary:focus-visible,a:focus-visible,button:focus-visible{outline:2px solid #705449;outline-offset:4px}
@media(max-width:680px){.template-project-menu summary{padding:9px 10px}.template-submenu{left:-50px}.template-album{padding:24px}.photo-grid{grid-template-columns:1fr}.tool-surface .ip-layout,.tool-surface .query-columns,.tool-surface .draw-shell{grid-template-columns:1fr}.tool-surface .query-workbench{padding:22px}.tool-surface .query-workbench .form-row .input{flex-basis:100%}.tool-surface .draw-tabs{gap:5px}.tool-surface .draw-tab{padding:8px 10px;font-size:11px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.snapshot-carousel *{transition:none!important}}
/* Fit the upstream three-column header on narrow phones, without changing desktop design. */
@media(max-width:440px){.site-header{gap:10px;padding:12px}.brand{gap:9px}.brand-mark{width:40px;height:40px}.brand strong{font-size:1rem}.brand small{font-size:.68rem}.lang-switch{min-width:64px;height:40px;padding:3px;font-size:.75rem}.lang-switch span{min-width:26px;height:32px}.nav-cta{width:40px;height:40px}.site-nav{gap:4px}}
.tool-surface .glass-card{background:linear-gradient(145deg,rgba(255,255,255,.36),rgba(255,255,255,.08)),rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.38);border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:blur(28px) saturate(1.22)}.tool-surface .tags{display:flex;flex-wrap:wrap;gap:8px}.tool-surface .tag{padding:5px 11px;border:1px solid #ffffff66;border-radius:999px;font-size:12px}

/* Personal identity: original uploaded illustration, template geometry preserved. */
.photo-mark img { object-fit: contain; object-position: center; transform: none; background: #fff; }
.personal-mascot img { object-fit: contain; object-position: center 36%; background: #fff; filter: none; padding: 0 8px 90px; }
.personal-mascot .portrait-caption { background: rgba(28, 62, 78, .88); }
.contact-actions .button:has([data-i18n="contact.address"]) { flex-basis: 100%; }
.contact-actions [data-i18n="contact.address"] { overflow-wrap: anywhere; min-width: 0; }

/* Sky blue into mint: a soft backdrop for the globe-cat identity. */
body {
  background:
    radial-gradient(ellipse at 90% 8%, rgba(224, 255, 239, .72), transparent 42%),
    linear-gradient(155deg, #91c7ed 0%, #b6e3ee 28%, #bcebdc 61%, #e6f5e8 100%);
}
body::before {
  background:
    radial-gradient(ellipse at 22% 18%, rgba(241, 251, 255, .55), transparent 42%),
    radial-gradient(ellipse at 80% 76%, rgba(139, 219, 181, .22), transparent 50%);
}
.dune {
  background: linear-gradient(180deg, rgba(204, 244, 230, .64), rgba(93, 178, 182, .22));
}
.site-header { background: rgba(240, 251, 251, .48); }
.template-submenu { background: #e6f4ef; }
