/* IDEAL V5 — a visual system derived from the existing editorial chassis.
   Real project content, geometric service symbols and one interaction rhythm. */
:root{--ideal-ink:#10131b;--ideal-paper:#f6f7fa;--ideal-accent:#7000ff;--ideal-cyan:#00e5ff;--ideal-ease:cubic-bezier(.35,0,0,1);--ideal-motion:480ms;--ideal-line:clamp(14px,2.1vw,40px)}
#header-logo svg{width:174px;height:47px;overflow:visible}
.ideal-inner-meta,.ideal-overline,.ideal-eyebrow{letter-spacing:.065em}
.ideal-inner-intro .ideal-index{font-size:12px;letter-spacing:.025em}
.ideal-inner-intro .ideal-index i{border-radius:2px;width:8px;height:8px}
.ideal-service-list img{width:64px;height:64px;flex:none;padding:9px;background:#ece7f7;border-radius:15px}
.ideal-service-list>a{transition:color var(--ideal-motion) var(--ideal-ease)}
.ideal-service-list b{transition:transform var(--ideal-motion) var(--ideal-ease)}
.ideal-service-list>a:hover b{transform:translate(5px,-5px)}
/* Match the visual weight of the native home ribbon. */
.ideal-drawn-line{opacity:1}.ideal-drawn-line path{stroke:var(--ideal-accent);stroke-width:var(--ideal-line);stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
/* Each line and each letter has a stable box. A one-letter word is not a special case. */
#end-section-title{--font-size:10vw;max-width:calc(100% - 2 * var(--base-padding-x));width:max-content;line-height:1.1}
#end-section-title-link{white-space:nowrap}
.end-section-title-link-line{height:1.1em!important;white-space:nowrap;line-height:1.1}
.end-section-title-link-word{display:inline-block!important;vertical-align:top;height:1.1em!important;line-height:1.1;white-space:nowrap;overflow:hidden}
.end-section-title-link-word .char-wrapper{display:inline-block!important;vertical-align:top;position:relative;top:0!important;height:1.1em;line-height:1.1;white-space:normal}
.end-section-title-link-word .char-wrapper>.char{display:block!important;float:none!important;clear:none!important;height:1.1em;line-height:1.1}
#end-section-title-top-decoration{top:.97em;left:0;width:100%}
#end-section-title-bottom-left-decoration{bottom:.04em;left:3%;width:12%}
#end-section-title-bottom-right-decoration{bottom:.04em;left:20%;width:77%}
/* Pill controls: same fill, rolling label, arrow and press response everywhere. */
.ideal-action{isolation:isolate;overflow:hidden!important;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:24px;border:0;border-radius:99px;min-height:52px;padding:17px 25px;box-shadow:none!important;font:500 13px/1.2 Aeonik,Arial,sans-serif;text-transform:uppercase;letter-spacing:.015em;cursor:pointer;background:var(--ideal-ink)!important;color:#fff!important;transition:color var(--ideal-motion) var(--ideal-ease),background var(--ideal-motion) var(--ideal-ease),translate var(--ideal-motion) var(--ideal-ease),scale 180ms var(--ideal-ease)!important;-webkit-tap-highlight-color:transparent;transform:none}
.ideal-action::before{content:"";position:absolute;z-index:-1;inset:-1px;background:var(--ideal-accent);border-radius:inherit;transform:translateY(105%);transition:transform var(--ideal-motion) var(--ideal-ease);pointer-events:none}
.ideal-action-label{display:block;position:relative!important;overflow:hidden;line-height:1.2;height:1.2em;white-space:nowrap;z-index:1;transform:none!important}
.ideal-action-label>span{display:block;line-height:1.2;height:1.2em;transition:transform var(--ideal-motion) var(--ideal-ease)}
.ideal-action-label>span+span{position:absolute;top:100%;left:0}
.ideal-action-arrow{display:block!important;position:relative!important;inset:auto!important;width:17px!important;height:17px!important;flex:none;color:inherit!important;transform:none!important;z-index:1}
.ideal-action-arrow svg{display:block;width:100%!important;height:100%!important;transition:transform var(--ideal-motion) var(--ideal-ease)!important}
.ideal-action>[id$="-dot"]{display:none!important}
.ideal-action p{margin:0}
.ideal-action:active{scale:.97}
.ideal-action:focus-visible{outline:2px solid var(--ideal-accent)!important;outline-offset:5px}
.ideal-action:focus-visible::before{transform:translateY(0)}
.ideal-action:focus-visible .ideal-action-label>span{transform:translateY(-100%)}
@media(hover:hover){.ideal-action:hover{translate:0 -2px;transform:none}.ideal-action:hover::before{transform:translateY(0)}.ideal-action:hover .ideal-action-label>span{transform:translateY(-100%)}.ideal-action:hover .ideal-action-arrow svg{transform:translate(2px,-2px)}}
#header-right-talk-btn,#header-right-menu-btn,#header-right-sound-btn,#footer-bottom-up,#end-bottom,#home-reel-video-watch-btn{transition:color var(--ideal-motion) var(--ideal-ease),background var(--ideal-motion) var(--ideal-ease),scale 180ms var(--ideal-ease)!important}
#header-right-talk-btn-text,#header-right-talk-btn-arrow,#header-right-menu-btn-inner,#end-bottom-text-container>div,.end-bottom-arrow,#footer-bottom-up svg{transition-duration:var(--ideal-motion)!important;transition-timing-function:var(--ideal-ease)!important}
#header-right-talk-btn:active,#header-right-menu-btn:active,#header-right-sound-btn:active,#footer-bottom-up:active,#end-bottom:active,#home-reel-video-watch-btn:active{scale:.96}
#header-right-talk-btn:not(.--is-contact-active):hover{background:var(--ideal-accent);color:white}
.ideal-row a,.ideal-menu-services a,.ideal-contact-line a{transition:color var(--ideal-motion) var(--ideal-ease),translate var(--ideal-motion) var(--ideal-ease)}
.ideal-row a:hover,.ideal-menu-services a:hover{color:var(--ideal-accent);translate:4px 0}
/* An actual website inside a minimal browser frame, not a generic illustration. */
.ideal-project-stage{position:relative;display:flex;align-items:center;justify-content:center;min-width:0;width:100%;aspect-ratio:1.22;background:var(--project-paper,#e9ebf0);border:0;border-radius:var(--global-border-radius);padding:11%;cursor:pointer;perspective:1100px;overflow:hidden;color:var(--ideal-ink)}
.ideal-browser{display:block;overflow:hidden;border:1px solid #10131b25;border-radius:9px;box-shadow:0 24px 36px -16px #10131b55;transform:rotateY(-7deg) rotateX(3deg);transition:transform 650ms var(--ideal-ease);width:100%;background:white}
.ideal-browser img{display:block;width:100%;border-radius:0;max-height:none;aspect-ratio:auto}
.ideal-browser-bar{height:25px;background:#fff;display:flex;align-items:center;gap:4px;padding:0 10px;position:relative}
.ideal-browser-bar i{width:4px;height:4px;border-radius:50%;background:#b8bac3}
.ideal-browser-bar>span{margin-left:auto;font:7px/1 IBMPlexMono,monospace;letter-spacing:.06em;color:#60636f}
.ideal-stage-label{position:absolute;bottom:24px;left:28px;right:28px;display:flex;justify-content:space-between;font:10px/1.3 IBMPlexMono,monospace;letter-spacing:.06em}
.ideal-stage-label>span{font:20px/1 Aeonik}
.ideal-project-stage:hover .ideal-browser,.ideal-project-stage:focus-visible .ideal-browser{transform:rotateY(0) rotateX(0) translateY(-5px)}
.ideal-preview-trigger{position:absolute;right:30px;bottom:30px;z-index:2}.ideal-inner-media:has(.ideal-preview-trigger) .ideal-media-caption{bottom:auto;top:25px}
.ideal-case-preview{margin-top:25px;text-align:left;max-width:100%;white-space:nowrap}
/* Full project presentation, native accessible dialog and genuine videos. */
#ideal-project-modal{padding:0;border:0;margin:auto;width:min(1120px,calc(100% - 48px));max-width:none;max-height:90dvh;border-radius:22px;background:var(--ideal-paper);color:var(--ideal-ink);font-family:Aeonik,Arial,sans-serif;overflow:auto;overscroll-behavior:contain;box-shadow:0 32px 120px #0005}
#ideal-project-modal[open]{animation:ideal-dialog-in 420ms var(--ideal-ease)}
#ideal-project-modal::backdrop{background:#10131bb3;backdrop-filter:blur(12px)}
#ideal-project-modal.is-closing{animation:ideal-dialog-out 200ms ease forwards}
.ideal-modal-toolbar{position:sticky;top:0;z-index:4;background:var(--ideal-paper);display:flex;justify-content:space-between;align-items:center;padding:18px 24px;border-bottom:1px solid #10131b1c;gap:20px}
.ideal-modal-toolbar>span{font:10px/1.3 IBMPlexMono,monospace;letter-spacing:.08em}
.ideal-modal-close{width:42px;height:42px;display:grid;place-items:center;border:1px solid #10131b20;background:transparent;color:inherit;border-radius:50%;font:28px/1 Aeonik;cursor:pointer;transition:background var(--ideal-motion) var(--ideal-ease),rotate var(--ideal-motion) var(--ideal-ease)}
.ideal-modal-close:hover{rotate:90deg;background:#e9ebf0}
.ideal-modal-media{position:relative;aspect-ratio:16/9;display:grid;place-items:center;background:var(--project-paper,#e9ebf0);overflow:hidden}
.ideal-modal-media>img{width:100%;height:100%;object-fit:contain}.ideal-modal-media>video{width:100%;height:100%;object-fit:contain;background:#10131b}
.ideal-modal-media [hidden]{display:none!important}
.ideal-modal-switch{display:flex;gap:4px;background:#e7e8ed;border-radius:99px;padding:4px}
.ideal-modal-switch button{font:12px/1 Aeonik;border:0;border-radius:99px;padding:12px 17px;background:transparent;color:#10131b;cursor:pointer;transition:background 200ms var(--ideal-ease),color 200ms var(--ideal-ease)}
.ideal-modal-switch button[aria-pressed="true"]{background:#10131b;color:white}
.ideal-modal-body{display:grid;grid-template-columns:1fr 1fr;gap:40px;padding:36px 40px 42px}
.ideal-modal-body h2{font-size:clamp(30px,3.4vw,54px);line-height:1.02;letter-spacing:-.045em;font-weight:400;margin:15px 0 0}
.ideal-modal-body p{font-size:18px;line-height:1.45;margin:0 0 24px}
.ideal-modal-type{font:10px/1.5 IBMPlexMono,monospace;text-transform:uppercase;letter-spacing:.06em;color:#5d6270}
.ideal-modal-status{position:absolute;inset:0;display:grid;place-items:center;background:#10131b;color:white;font-size:16px;padding:25px;text-align:center}
@keyframes ideal-dialog-in{from{opacity:0;transform:translateY(24px) scale(.98)}to{opacity:1;transform:none}}
@keyframes ideal-dialog-out{to{opacity:0;transform:translateY(16px)}}
@media(min-aspect-ratio:2/1){#end-section-title{--font-size:6.7vw}}
@media(max-width:812px){#header-logo svg{width:136px;height:38px}#end-section-title{--font-size:14.8vw;width:100%;max-width:100%}.end-section-title-link-line{height:1.2em!important}#end-section-subtitle-text{max-width:32ch;margin:auto;font-size:11px;line-height:1.5}.ideal-drawn-line path{stroke-width:var(--ideal-line)}.ideal-service-list img{width:48px;height:48px;padding:7px;border-radius:11px}.ideal-action{min-height:48px;padding:16px 20px;gap:20px;font-size:12px}.ideal-project-stage{aspect-ratio:1.2}.ideal-preview-trigger{right:18px;bottom:18px}.ideal-modal-toolbar{padding:12px 16px;gap:10px}.ideal-modal-toolbar>span{font-size:8px;max-width:9ch}.ideal-modal-switch button{padding:10px 13px;font-size:11px}#ideal-project-modal{width:calc(100% - 20px);border-radius:16px;max-height:92dvh}.ideal-modal-body{grid-template-columns:1fr;gap:24px;padding:26px 24px}.ideal-modal-body h2{font-size:35px}.ideal-modal-body p{font-size:16px}.ideal-modal-media{aspect-ratio:16/10}.ideal-modal-close{width:36px;height:36px;flex:none}.ideal-case-preview{font-size:11px}}
@media(prefers-reduced-motion:reduce){.ideal-action,.ideal-action *,.ideal-action::before,.ideal-browser,.ideal-modal-close{transition:none!important}#ideal-project-modal[open],#ideal-project-modal.is-closing{animation:none!important}.ideal-action:hover{translate:none}.ideal-action:active{scale:1}}

@media(hover:hover){#header-right-talk-btn:hover .ideal-action-label>span{transform:translateY(-100%)}}
#header-right-talk-btn:focus-visible .ideal-action-label>span{transform:translateY(-100%)}
/* Keep the complete presentation and its action visible on ordinary laptop screens. */
.ideal-modal-media{height:clamp(220px,48dvh,540px);aspect-ratio:auto}
.ideal-modal-body{padding:28px 34px 32px;gap:35px}.ideal-modal-body p{font-size:16px;max-width:45ch}.ideal-modal-body h2{font-size:clamp(30px,3vw,48px)}
@media(max-width:812px){.ideal-modal-media{height:auto;aspect-ratio:16/10}.ideal-modal-body{padding:24px;gap:20px}}
.ideal-service-board{position:relative;display:grid;grid-template-columns:1fr 1.2fr;align-items:center;gap:5%;padding:7%;background:#e9ebf0!important;aspect-ratio:16/9;color:var(--ideal-ink)}
.ideal-board-copy{position:relative;z-index:1}.ideal-board-copy>span{font:10px/1.5 IBMPlexMono,monospace;letter-spacing:.06em}.ideal-board-copy h2{font-size:clamp(32px,4.2vw,80px);font-weight:400;line-height:1;letter-spacing:-.05em;margin:22px 0 30px;max-width:10ch}.ideal-board-copy ul{padding:0;margin:0;list-style:none}.ideal-board-copy li{display:flex;align-items:center;gap:12px;font-size:clamp(14px,1.2vw,22px);padding:12px 0;border-top:1px solid #10131b25}.ideal-board-copy li:before{content:'↗';color:var(--ideal-accent);font-size:22px}
.ideal-board-screen{position:relative;transform:perspective(1000px) rotateY(-8deg);border-radius:10px;overflow:hidden;background:white;box-shadow:0 28px 55px -22px #10131b55}.ideal-board-screen>img{display:block;width:100%;height:auto}
.ideal-board-foot{position:absolute;bottom:24px;left:7%;right:7%;display:flex;justify-content:space-between;font:9px/1.3 IBMPlexMono,monospace;letter-spacing:.04em;text-transform:uppercase}
@media(max-width:812px){.ideal-service-board{grid-template-columns:1fr;aspect-ratio:auto;padding:34px 26px 60px;gap:32px}.ideal-board-copy h2{font-size:11vw;max-width:14ch;margin:18px 0 24px}.ideal-board-copy li{font-size:15px;padding:10px 0}.ideal-board-screen{transform:none}.ideal-board-foot{font-size:8px;left:26px;right:26px;bottom:22px}.ideal-board-foot span:last-child{display:none}}
@media(prefers-reduced-motion:reduce){#end-section-title .char,#end-section-title .char-wrapper{transform:none!important}}

/* Shared typography contracts: glyph ink may exceed advance boxes. */
:root{--ideal-text-bleed-x:.12em;--ideal-text-bleed-top:.12em;--ideal-text-bleed-bottom:.24em;--ideal-title-period-gap:.06em;--ideal-title-question-gap:.1em}
.ideal-title-ending{white-space:nowrap}
.ideal-title-punctuation{display:inline-block;margin-inline-start:var(--ideal-title-period-gap)}
.ideal-text-mask{overflow:hidden;padding:var(--ideal-text-bleed-top) var(--ideal-text-bleed-x) var(--ideal-text-bleed-bottom);margin:calc(-1 * var(--ideal-text-bleed-top)) calc(-1 * var(--ideal-text-bleed-x)) calc(-1 * var(--ideal-text-bleed-bottom))}
.ideal-text-mask.is-reveal-complete{overflow:visible}
/* Inverse CTA uses the same dimensions, SVG, rolling label and purple fill. */
.ideal-action.ideal-action-on-dark{background:var(--ideal-paper)!important;color:var(--ideal-ink)!important}
.ideal-action.ideal-action-on-dark:focus-visible{color:#fff!important}
@media(hover:hover){.ideal-action.ideal-action-on-dark:hover{color:#fff!important}}

.ideal-title-punctuation.is-question{margin-inline-start:var(--ideal-title-question-gap)}

/* Hero titles: one regular weight, including inline emphasis and punctuation. */
:is(.ideal-hero-headline,.legal-hero h1,#iv24-title),
:is(.ideal-hero-headline,.legal-hero h1,#iv24-title) :is(span,b,strong){font-weight:400!important;font-synthesis:none}
