/*
Theme Name: Bulan Portfolio
Author: Custom theme for Bulan
Description: Custom English-language portfolio theme for bulan.pro.
Version: 0.5.6
Requires at least: 6.4
Requires PHP: 8.2
Text Domain: bulan-portfolio
*/
:root{color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#000;color:#fff;font:16px/1.5 Arial,sans-serif}a{color:inherit}.bulan-wrap{max-width:900px;margin:auto}.bulan-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.bulan-tile{position:relative;min-height:450px;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#282828}.bulan-tile--photo{background-color:#494949;background-position:center;background-size:cover}.bulan-tile--identity{background:rgba(0,0,0,.55);flex-direction:column;padding:40px;text-align:center}.bulan-mark{font-size:48px;line-height:1;font-weight:100;letter-spacing:.09em;margin:0 0 15px}.bulan-subtitle{font-size:16px;font-weight:100;max-width:300px}.bulan-social{position:absolute;bottom:25px;font-size:12px}.bulan-about-photo{background:#353535 center/cover no-repeat}.bulan-about{padding:65px 60px;background:#282828;color:#eee;font-size:14px;line-height:1.45}.bulan-about p{margin-top:0}.bulan-heading{font-size:56px;font-weight:100;margin:25px 0 0}.bulan-project{min-height:450px;position:relative;display:flex;background-color:#333;background-position:center;background-size:cover;cursor:pointer}.bulan-project:nth-child(even){justify-content:flex-end}.bulan-project:before{content:"";position:absolute;inset:0;background:rgba(0,0,0,.5);transition:background .25s}.bulan-project:hover:before{background:rgba(0,0,0,.3)}.bulan-project__body{position:relative;z-index:1;width:50%;min-height:450px;display:flex;flex-direction:column;justify-content:center;padding:50px 65px}.bulan-project:nth-child(even) .bulan-project__body{margin-left:auto}.bulan-project h2{font-size:30px;line-height:1.1;font-weight:100;margin:0 0 10px}.bulan-project p{font-size:15px;line-height:1.3;margin:0}.bulan-project__button{position:absolute;inset:0;width:100%;border:0;background:transparent;color:transparent;cursor:pointer;z-index:2}.bulan-footer{display:flex;justify-content:space-between;align-items:center;padding:22px 0 35px;font-size:12px;color:#bbb}.bulan-footer button{background:transparent;border:1px solid #777;color:#fff;padding:6px 10px;cursor:pointer}.bulan-modal[hidden]{display:none}.bulan-modal{position:fixed;z-index:9999;inset:0;background:rgba(0,0,0,.95);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 75px 55px}.bulan-modal img{max-width:100%;max-height:calc(100vh - 150px);object-fit:contain}.bulan-modal__desc{margin-top:12px;text-align:center;max-width:740px;font-size:14px}.bulan-modal button{position:absolute;border:0;background:none;color:#fff;font:30px Arial;cursor:pointer;padding:10px}.bulan-modal__close{top:12px;right:25px}.bulan-modal__prev{left:12px;top:47%}.bulan-modal__next{right:12px;top:47%}.bulan-modal__count{position:absolute;bottom:15px;color:#aaa;font-size:12px}.bulan-empty{padding:70px 30px;text-align:center;color:#aaa}
@media(max-width:700px){.bulan-wrap{width:100%}.bulan-grid{grid-template-columns:1fr}.bulan-tile{min-height:340px}.bulan-tile--identity{min-height:400px}.bulan-about{padding:45px 30px}.bulan-about-photo{min-height:240px}.bulan-project,.bulan-project__body{min-height:330px}.bulan-project__body{width:100%;padding:60px 32px}.bulan-project h2{font-size:28px}.bulan-footer{padding:20px}.bulan-modal{padding:65px 20px}.bulan-modal__prev{left:0}.bulan-modal__next{right:0}}

/* Fidelity refinements based on the original 2015 templates */
.bulan-tile--identity{background:rgba(0,0,0,.60)}
.bulan-grid .bulan-tile--photo{background:linear-gradient(90deg,#454545,#494949)}
.bulan-tile--logo{font-weight:100;letter-spacing:.07em}
.bulan-about .bulan-heading{font-size:63px;line-height:1.1;margin-top:32px}
.bulan-year{display:block;font-size:14px;line-height:1.5;font-weight:100;letter-spacing:0;margin-top:5px}
.bulan-project__body{background:rgba(0,0,0,.55)}
.bulan-project:before{background:transparent}
.bulan-project:hover:before{background:rgba(0,0,0,.1)}
.bulan-project__button:focus-visible{outline:3px solid white;outline-offset:-5px}
.bulan-modal:focus{outline:none}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}
@media(max-width:700px){.bulan-about .bulan-heading{font-size:48px}.bulan-project__body{background:rgba(0,0,0,.50)}.bulan-project{background-position:center}}

/* Original visual assets restored from the 2015 site. No remote image dependencies. */
.bulan-grid .bulan-tile--photo{background:#494949 url('assets/original/bulan.png') right top / auto 100% no-repeat!important;}
.bulan-grid .bulan-tile--photo-empty{background:#494949 url('assets/original/bulan.png') right top / auto 100% no-repeat;}
.bulan-tile--identity{position:absolute;inset:0;background:rgba(0,0,0,.6);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:28px 32px;}
.bulan-original-logo{display:block;width:120px;height:120px;margin:0 auto 26px;}
.bulan-original-logo img{display:block;width:100%;height:100%;object-fit:contain;}
.bulan-subtitle{font-size:16px;line-height:1.1;color:#d8d8d8;max-width:300px;font-weight:100;}
.bulan-about-photo{background:#282828 url('assets/original/portf.png') right center / auto 100% no-repeat;}
.bulan-about{padding:60px 65px 40px;background:#171717;font-size:14px;}
.bulan-heading{font-size:63px;font-weight:100;line-height:1.1;}
.bulan-heading:before{content:'';display:inline-block;width:29px;height:34px;vertical-align:middle;margin-right:12px;background:url('assets/original/arr_btm.png') center / contain no-repeat}
.bulan-year{display:inline-block;vertical-align:top;font-size:14px;padding-top:6px;margin-left:-9px;}
.bulan-project{background-size:cover;background-repeat:no-repeat;}
@media(min-width:701px){.bulan-grid{grid-template-columns:repeat(2,450px)}.bulan-tile{height:450px}.bulan-about{padding:68px 45px 35px 65px}}
@media(max-width:700px){.bulan-grid .bulan-tile--photo-empty{display:none}.bulan-grid .bulan-tile--photo{min-height:360px}.bulan-grid .bulan-tile--identity{min-height:360px}.bulan-about-photo{min-height:300px}.bulan-heading{font-size:48px}.bulan-about{padding:38px 35px 42px}}

/* 0.3.1 — One continuous portrait across the top section. Darken only the left half. */
@media (min-width:701px) {
  #photo.bulan-grid {
    background: url('assets/original/bulan.png') right top / auto 450px no-repeat, linear-gradient(90deg,#454545,#494949);
  }
  #photo .bulan-tile--photo,
  #photo .bulan-tile--photo-empty { background: transparent !important; }
  #photo .bulan-tile--identity { background: rgba(0,0,0,.6); }
}
@media (max-width:700px) {
  #photo .bulan-tile--photo {
    background: url('assets/original/bulan.png') right center / auto 100% no-repeat, linear-gradient(90deg,#454545,#494949) !important;
  }
}

/* 0.4: Original project artwork orientation, editable hero and Roboto Thin */
body,.bulan-subtitle,.bulan-about,.bulan-project,.bulan-heading,.bulan-project h2,.bulan-project p,.bulan-footer{font-family:'Roboto',Arial,sans-serif}
.bulan-heading,.bulan-project h2{font-weight:100}
.bulan-about,.bulan-project p,.bulan-subtitle{font-weight:100}
@media(min-width:701px){#photo.bulan-grid{background-image:var(--bulan-portrait),linear-gradient(90deg,#454545,#494949);background-position:right top;background-size:auto 450px;background-repeat:no-repeat}}
@media(max-width:700px){#photo .bulan-tile--photo{background-image:var(--bulan-portrait),linear-gradient(90deg,#454545,#494949)!important;background-size:auto 100%;background-position:right center;}}
.bulan-project--left .bulan-project__body{margin-left:auto}
.bulan-project--right .bulan-project__body{margin-left:0}
.bulan-project--left,.bulan-project--right{justify-content:stretch}
.bulan-project__body{flex:0 0 50%;width:50%;background:rgba(0,0,0,.68);min-height:450px}
.bulan-project{background-position:center center;background-size:cover}
@media(max-width:700px){.bulan-project--left .bulan-project__body,.bulan-project--right .bulan-project__body{margin-left:0}.bulan-project__body{flex:0 0 100%;width:100%;min-height:330px;background:linear-gradient(90deg,rgba(0,0,0,.8),rgba(0,0,0,.32))}.bulan-project{background-size:cover}}

/* v0.4.1: position-driven alternating composition, starting with artwork on right. */
@media (min-width:701px) {
 .bulan-project--right .bulan-project__body { margin-left:0; margin-right:auto; }
 .bulan-project--left .bulan-project__body { margin-left:auto; margin-right:0; }
}

/* v0.4.2 — unified Roboto Thin typography. */
body, button, input, textarea, select, .bulan-wrap {
  font-family: 'Roboto', Arial, sans-serif;
  font-weight: 100;
}
.bulan-wrap *, .bulan-modal * {font-weight:100;}
.bulan-project h2 {font-size:40px;line-height:1.1;font-weight:100;}
.bulan-about, .bulan-about p, .bulan-project p, .bulan-subtitle,
.bulan-year, .bulan-modal__desc {font-size:16px;line-height:1.5;font-weight:100;}
@media (max-width:700px) {
  .bulan-project h2 {font-size:36px;line-height:1.1;}
}

/* v0.4.3: editable project type and description, preserving original compact hierarchy. */
.bulan-project__body {align-items:stretch;}
.bulan-project__type {margin:0 0 14px!important;font-size:16px;line-height:1.5;font-weight:100;}
.bulan-project__description {margin:0!important;font-size:16px;line-height:1.5;font-weight:100;}
.bulan-project h2 {margin-bottom:7px;}
/* Fixed desktop-only back-to-top aligned to the site edge, appearing after one viewport. */
@media (min-width:701px) {
  #bulan-to-top {position:fixed;bottom:28px;right:max(16px,calc((100vw - 900px)/2 - 48px));z-index:90;width:36px;height:36px;padding:0;border:0;background:#fff url('assets/original/Up_active.png') center/32px no-repeat;color:transparent;font-size:0;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(9px);transition:opacity .2s ease,transform .2s ease,visibility .2s;}
  #bulan-to-top.bulan-to-top--visible {opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0);}
}
@media (max-width:700px) {
  /* Remove mosaic entirely; all remaining homepage blocks share square dimensions. */
  #photo.bulan-grid {display:grid;grid-template-columns:minmax(0,1fr);}
  #photo .bulan-tile--photo-empty,#photo .bulan-about-photo {display:none!important;}
  #photo .bulan-tile--photo,#photo .bulan-about {box-sizing:border-box;aspect-ratio:1/1;height:auto;min-height:0;width:100%;}
  #photo .bulan-tile--photo {background-size:auto 100%;}
  #photo .bulan-about {padding:clamp(18px,7vw,38px);display:flex;align-items:center;overflow:auto;}
  #photo .bulan-about p {font-size:16px;line-height:1.5;}
  #photo .bulan-about .bulan-heading {font-size:clamp(38px,11vw,48px);}
  #portf .bulan-project {aspect-ratio:1/1;height:auto;min-height:0;overflow:hidden;}
  #portf .bulan-project__body {box-sizing:border-box;flex:1 1 100%;width:100%;height:100%;min-height:0;padding:clamp(22px,8vw,45px);display:flex;justify-content:center;background:rgba(0,0,0,.6);overflow:auto;}
  #portf .bulan-project--right .bulan-project__body {text-align:left;align-items:flex-start;}
  #portf .bulan-project--left .bulan-project__body {text-align:right;align-items:flex-end;}
  #portf .bulan-project--right .bulan-project__body p {text-align:left;}
  #portf .bulan-project--left .bulan-project__body p {text-align:right;}
  #bulan-to-top {display:none;}
}


/* v0.4.4: One responsive sizing system for all homepage rows. */
@media (min-width:701px) {
  .bulan-wrap {width:100%;max-width:900px;}
  #photo.bulan-grid {grid-template-columns:repeat(2,minmax(0,1fr));background-size:auto 50%;}
  #photo .bulan-tile {height:auto;min-height:0;aspect-ratio:1/1;}
  #photo .bulan-about-photo {background-size:auto 100%;}
  #portf .bulan-project {height:auto;min-height:0;aspect-ratio:2/1;}
  #portf .bulan-project__body {min-height:0;width:50%;flex-basis:50%;}
  #portf .bulan-project--right .bulan-project__body {margin-left:0;margin-right:auto;}
  #portf .bulan-project--left .bulan-project__body {margin-left:auto;margin-right:0;}
  /* Keep overlays aligned on the exact 50% division at every viewport width. */
  #photo .bulan-tile--identity {inset:0;}
}
/* Use pure CSS circular button/arrow rather than an image asset or a white square. */
@media (min-width:701px) {
  #bulan-to-top {background:transparent!important;color:#fff!important;font-size:0!important;
    border:1px solid rgba(255,255,255,.75)!important;border-radius:50%!important;
    width:38px;height:38px;display:flex;align-items:center;justify-content:center;}
  #bulan-to-top::before {content:'';display:block;width:10px;height:10px;
    border-top:2px solid #fff;border-left:2px solid #fff;transform:translateY(3px) rotate(45deg);}
  #bulan-to-top:hover {background:rgba(255,255,255,.16)!important;}
}
/* Preserve rectangular mobile proportions from v0.4.1, and unify ALL tile heights. */
@media (max-width:700px) {
  :root {--bulan-mobile-row-height:clamp(280px, 78vw, 390px);}
  #photo .bulan-tile--photo,#photo .bulan-about,#portf .bulan-project {
    aspect-ratio:auto!important;height:var(--bulan-mobile-row-height)!important;
    min-height:0!important;max-height:none;width:100%;overflow:hidden;
  }
  #photo .bulan-tile--identity {min-height:0;height:100%;}
  #photo .bulan-tile--photo-empty,#photo .bulan-about-photo {display:none!important;}
  #photo .bulan-about {overflow-y:auto;}
  #portf .bulan-project__body {height:100%;min-height:0;overflow-y:auto;}
  #portf .bulan-project--right .bulan-project__body {text-align:left;align-items:flex-start;}
  #portf .bulan-project--left .bulan-project__body {text-align:right;align-items:flex-end;}
}

/* v0.4.5 — original site gallery controls and shared thin white icon treatment. */
.bulan-modal button.bulan-modal__close,.bulan-modal button.bulan-modal__prev,.bulan-modal button.bulan-modal__next{width:52px;height:52px;padding:0;display:flex;align-items:center;justify-content:center;background:transparent;border:0;border-radius:50%;line-height:1;z-index:2;}
.bulan-modal button.bulan-modal__close img,.bulan-modal button.bulan-modal__prev img,.bulan-modal button.bulan-modal__next img{display:block;width:52px;height:52px;object-fit:contain;max-width:none;max-height:none;}
.bulan-modal button:hover{opacity:.8}
.bulan-modal button:focus-visible,#bulan-to-top:focus-visible{outline:2px solid #fff;outline-offset:4px}
@media(min-width:701px){#bulan-to-top{border:2px solid rgba(255,255,255,.9)!important;}#bulan-to-top::before{border-width:2px;}}
/* Portrait-only, timed orientation cue in gallery. Google Material screen_rotation_alt. */
.bulan-rotate-hint{position:absolute;bottom:42px;left:50%;transform:translate(-50%,8px);display:flex;align-items:center;justify-content:center;gap:10px;max-width:calc(100vw - 35px);padding:10px 13px;background:rgba(40,40,40,.88);color:#ededed;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .28s,transform .28s,visibility .28s;font-size:14px;line-height:1.35;text-align:center;z-index:5;}
.bulan-rotate-hint svg{height:26px;width:26px;flex:none;color:#eee;}
@media(max-width:700px) and (orientation:portrait){.bulan-modal .bulan-rotate-hint.is-visible{opacity:1;visibility:visible;transform:translate(-50%,0)}}
@media(min-width:701px), (orientation:landscape){.bulan-rotate-hint{display:none!important}}
/* Only genuine cookie-consent plugin revisit controls are relocated. */
.bulan-cookie-footer:empty{display:none}
.bulan-cookie-footer{margin-left:auto;margin-right:20px;display:flex;align-items:center;}
.bulan-cookie-footer .bulan-relocated-cookie{position:static!important;inset:auto!important;transform:none!important;margin:0!important;background:#282828!important;border:1px solid #555!important;box-shadow:none!important;border-radius:4px!important;display:flex!important;align-items:center;justify-content:center;padding:5px 9px!important;min-width:36px;min-height:34px;width:auto!important;height:auto!important;cursor:pointer;opacity:1!important;visibility:visible!important;}
.bulan-cookie-footer .bulan-relocated-cookie:hover{background:#3b3b3b!important;}
.bulan-cookie-footer .bulan-relocated-cookie img,.bulan-cookie-footer .bulan-relocated-cookie svg{width:21px!important;height:21px!important;max-width:21px;}
.bulan-cookie-footer .bulan-relocated-cookie [class*="revisit"]{background:transparent!important;box-shadow:none!important;}
@media(max-width:700px){.bulan-cookie-footer{margin-right:12px}.bulan-footer{padding-left:12px;padding-right:12px}}


/* v0.4.6 — mobile project preview dimming (text remains fully opaque). */
@media (max-width:700px) {
  #portf .bulan-project__body {background:rgba(0,0,0,.75)!important;}
}

/* Uniform 38px hit targets and original thin-outline gallery icons. */
.bulan-modal button.bulan-modal__close,
.bulan-modal button.bulan-modal__prev,
.bulan-modal button.bulan-modal__next {
  width:38px!important;height:38px!important;min-width:38px;min-height:38px;
  padding:0!important;
}
.bulan-modal button.bulan-modal__close img,
.bulan-modal button.bulan-modal__prev img,
.bulan-modal button.bulan-modal__next img {
  width:38px!important;height:38px!important;
}
/* Preserve positioning of navigation when screen space is tight. */
@media (max-width:700px) {
  .bulan-modal .bulan-modal__close {right:12px;top:12px;}
  .bulan-modal .bulan-modal__prev {left:5px;}
  .bulan-modal .bulan-modal__next {right:5px;}
}

/* Consent plugin revisit button: style the ACTUAL coloured inner controls, not only the wrapper. */
#bulan-cookie-footer .bulan-relocated-cookie,
#bulan-cookie-footer .cky-btn-revisit,
#bulan-cookie-footer .cky-btn-revisit-wrapper,
#bulan-cookie-footer .cky-btn-revisit-wrapper button,
#bulan-cookie-footer [class*="cky-btn-revisit"],
#bulan-cookie-footer .cmplz-manage-consent,
#bulan-cookie-footer button,
#bulan-cookie-footer .ot-floating-button__front,
#bulan-cookie-footer .ot-floating-button__back,
#bulan-cookie-footer .ot-floating-button {
  background-color:#282828!important;
  background-image:none!important;
  box-shadow:none!important;
  color:#fff!important;
}
#bulan-cookie-footer .cky-btn-revisit-wrapper > div,
#bulan-cookie-footer .cky-btn-revisit-wrapper > button,
#bulan-cookie-footer .cky-btn-revisit-wrapper > div > button {
  background-color:#282828!important;
  background-image:none!important;
}
#bulan-cookie-footer .cky-btn-revisit-wrapper:hover,
#bulan-cookie-footer .cky-btn-revisit-wrapper:hover button,
#bulan-cookie-footer .cmplz-manage-consent:hover {background-color:#3b3b3b!important;}
#bulan-cookie-footer .cky-btn-revisit-wrapper,
#bulan-cookie-footer .cky-btn-revisit-wrapper button {position:static!important;inset:auto!important;transform:none!important;}
/* Some consent plugins set a blue colour using an SVG fill; keep their symbol visible. */
#bulan-cookie-footer .cky-btn-revisit-wrapper svg,
#bulan-cookie-footer .cky-btn-revisit-wrapper svg path {fill:#fff!important;}


/* v0.4.7 — mobile Back to Top, same 38px outlined control as desktop. */
#bulan-to-top {box-sizing:border-box;border:2px solid rgba(255,255,255,.9)!important;}
@media(max-width:700px){
  #bulan-to-top {
    position:fixed!important;bottom:22px;right:16px;z-index:90;
    display:flex!important;align-items:center;justify-content:center;
    width:38px!important;height:38px!important;padding:0!important;
    background:rgba(40,40,40,.75)!important;color:transparent!important;font-size:0!important;
    border:2px solid rgba(255,255,255,.9)!important;border-radius:50%!important;
    opacity:0;visibility:hidden;pointer-events:none;transform:translateY(9px);
    transition:opacity .2s ease,transform .2s ease,visibility .2s;
  }
  #bulan-to-top::before {content:'';display:block;width:10px;height:10px;border-top:2px solid #fff;border-left:2px solid #fff;transform:translateY(3px) rotate(45deg);}
  #bulan-to-top.bulan-to-top--visible {opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0);}
}
/* Disabled gallery navigation is absent visually and from keyboard focus. */
.bulan-modal .bulan-modal__prev[hidden],.bulan-modal .bulan-modal__next[hidden]{display:none!important;}
/* Actual consent launcher remains owned by its plugin; footer is a separate proxy. */
#bulan-cookie-footer {min-height:38px;margin-left:auto;margin-right:20px;}
#bulan-cookie-footer[hidden]{display:none!important;}
#bulan-cookie-footer .bulan-cookie-settings {
  display:flex;align-items:center;justify-content:center;min-width:38px;width:38px;height:38px;
  padding:0;border:0!important;border-radius:0;background:#282828!important;color:#fff!important;
  box-shadow:none!important;cursor:pointer;
}
#bulan-cookie-footer .bulan-cookie-settings:hover {background:#3b3b3b!important;}
#bulan-cookie-footer .bulan-cookie-settings svg {width:26px!important;height:26px!important;display:block;fill:none!important;stroke:currentColor!important;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;}
#bulan-cookie-footer .bulan-cookie-settings:focus-visible {outline:2px solid #fff;outline-offset:4px;}
/* Applied only to confirmed native plugin revisit launchers. */
.bulan-native-cookie-hidden {opacity:0!important;visibility:hidden!important;pointer-events:none!important;}
@media(max-width:700px){#bulan-cookie-footer{margin-right:10px;}}

/* v0.4.8: visually align the mobile SELECTED heading with its chevrons. */
@media (max-width:700px) {
  #photo .bulan-about .bulan-heading {font-size:56px;line-height:1.1;}
}
/* CookieAdmin's own black re-consent icon, when moved inside our footer.
   Its original DOM and click handlers stay intact. */
#bulan-cookie-footer .bulan-cookieadmin-relocated,
#bulan-cookie-footer .bulan-cookieadmin-relocated * {box-shadow:none!important;}
#bulan-cookie-footer .bulan-cookieadmin-relocated {
  position:relative!important;top:auto!important;right:auto!important;bottom:auto!important;left:auto!important;
  inset:auto!important;transform:none!important;float:none!important;
  margin:0!important;visibility:visible!important;opacity:1!important;pointer-events:auto!important;
  z-index:auto!important;
}
#bulan-cookie-footer .bulan-cookieadmin-relocated button,
#bulan-cookie-footer .bulan-cookieadmin-relocated [role="button"] {
  cursor:pointer;
}
#bulan-cookie-footer:not([hidden]){display:flex;align-items:center;min-height:38px;}

/* v0.4.9: Two unobtrusive 24px contact links in the portrait square.
   Links remain at the bottom on both desktop and mobile; no visible labels. */
#photo .bulan-tile--photo .bulan-tile--identity {position:relative;width:100%;height:100%;}
#photo .bulan-hero-contacts {
  position:absolute;left:50%;bottom:22px;transform:translateX(-50%);
  display:flex;gap:16px;align-items:center;justify-content:center;z-index:3;
}
#photo .bulan-hero-contacts__link {
  width:38px;height:38px;display:flex;align-items:center;justify-content:center;
  text-decoration:none;color:#fff;background:transparent;border:0;opacity:.9;
  transition:opacity .15s ease;
}
#photo .bulan-hero-contacts__link svg {width:24px;height:24px;flex-shrink:0;stroke-width:1.5;}
#photo .bulan-hero-contacts__link:hover,#photo .bulan-hero-contacts__link:focus-visible {opacity:1;}
#photo .bulan-hero-contacts__link:focus-visible {outline:2px solid #fff;outline-offset:1px;}
@media(max-width:700px){#photo .bulan-hero-contacts{bottom:12px;}}

/* Native CookieAdmin launcher in the actual footer, with no added grey disk.
   Keep the vendor-owned SVG and click handling intact. */
.bulan-footer {position:relative;min-height:82px;justify-content:center;}
#bulan-cookie-footer {
  position:absolute;left:0;bottom:22px;margin:0!important;
  width:38px;height:38px;min-height:38px;align-items:center;justify-content:center;
}
#bulan-cookie-footer .bulan-cookieadmin-relocated {
  display:flex!important;align-items:center!important;justify-content:center!important;
  width:38px!important;height:38px!important;max-width:38px!important;max-height:38px!important;
  border:0!important;outline:0;box-shadow:none!important;
  background:transparent!important;background-color:transparent!important;background-image:none!important;
  border-radius:0!important;padding:0!important;
}
#bulan-cookie-footer .bulan-cookieadmin-relocated :is(button,[role="button"],a,div,span) {
  background:transparent!important;background-color:transparent!important;
  background-image:none!important;border-color:transparent!important;
  box-shadow:none!important;
}
#bulan-cookie-footer .bulan-cookieadmin-relocated :is(img,svg) {
  display:block;max-width:30px!important;max-height:30px!important;
  width:30px!important;height:30px!important;object-fit:contain;
}
@media(max-width:700px){#bulan-cookie-footer{left:12px;bottom:22px;}}

/* v0.5.0: provided SVG artwork for hero contacts (25 x 25px). */
#photo .bulan-hero-contacts__link img {display:block;width:25px;height:25px;max-width:none;flex-shrink:0;}

/* v0.5.1 — Editable horizontal portrait crop on mobile only.
 * The image layer alone shifts; logo, contact links and dark gradient remain in place.
 */
@media (max-width:700px) {
  #photo .bulan-tile--photo {
    background-position: calc(100% + var(--bulan-mobile-portrait-offset, 100px)) center, center center !important;
  }
}

/* v0.5.3: SELECTED panel background, desktop and mobile. */
#photo .bulan-about { background-color: #171717; }

/* Consistent year spacing across desktop and mobile. */
@media (max-width:700px) { .bulan-year { margin-left:-9px; } }
