/* Mir Ahadul Islam's Shelf - /achievements
   Grey brick wall, an open window on the left, one table, two frames, two awards.
   Everything is CSS + one SVG brick tile. Sizes use --u so the whole scene scales as one piece. */
:root{
  --u:min(1px,.0694vw);              /* 1 design pixel on a 1440px screen */
  --D:200;--P:194;                   /* table depth / space under the feet, in u */
  --ink:#e9e6df;--mute:#a9abad;--light:#e8dcc0;--paper:#e6e3dc;--paper-ink:#2b2c2f;
  --serif:'Cormorant Garamond',Georgia,serif;--sans:'Archivo','Helvetica Neue',Arial,sans-serif;--mono:'Courier Prime','Courier New',monospace;
  --ease:cubic-bezier(.16,1,.3,1);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{overflow-x:clip}
html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;background:#141517;scroll-behavior:smooth}
body{font-family:var(--serif);color:var(--ink);min-height:100vh;overflow-x:hidden;background:#141517 url(/achievements/assets/brick-grey.svg) 0 0/300px auto}
body::before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(60% 55% at 6% 22%,rgba(255,246,224,.20),transparent 70%),radial-gradient(95% 75% at 50% 30%,rgba(10,11,13,.30),rgba(6,7,9,.88) 100%),rgba(8,9,11,.42)}
img{display:block;-webkit-user-drag:none;pointer-events:none}
a,button{font:inherit;color:inherit;-webkit-touch-callout:none}
:focus-visible{outline:2px solid var(--light);outline-offset:4px}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}

/* ---------- nav ---------- */
#nav{position:fixed;inset:0 0 auto;z-index:50;display:flex;justify-content:space-between;align-items:center;padding:1.3rem 2rem;background:linear-gradient(rgba(12,13,15,.85),transparent);transition:background .4s,padding .4s}
#nav.scrolled{background:rgba(14,15,17,.93);padding:.8rem 2rem}
.brand{font:900 .85rem var(--sans);letter-spacing:.3em;text-transform:uppercase;text-decoration:none}
.links{display:flex;gap:1.5rem;list-style:none}
.links a{position:relative;font:.65rem var(--mono);letter-spacing:.2em;text-transform:uppercase;color:#b4b6b8;text-decoration:none;padding-bottom:4px;transition:color .4s}
.links a::after{content:"";position:absolute;left:50%;right:50%;bottom:0;height:1px;background:var(--light);transition:.4s var(--ease)}
.links a:hover,.links a[aria-current=page]{color:var(--light)}
.links a:hover::after,.links a[aria-current=page]::after{left:0;right:0}

/* ---------- hero ---------- */
.hero{position:relative;z-index:1;text-align:center;padding:8.5rem 1rem 1rem}
.hero h1{font:600 clamp(2rem,6vw,4.2rem)/1.05 var(--serif);text-shadow:0 2px 26px rgba(0,0,0,.85);max-width:24ch;margin:auto}

/* ---------- room ---------- */
.room{position:relative;z-index:1;width:calc(1440*var(--u));margin:0 auto;height:calc(770*var(--u))}

/* window on the left */
.window{position:absolute;left:calc(6*var(--u));top:calc(34*var(--u));width:calc(236*var(--u));height:calc(400*var(--u));z-index:0}
.w-frame{position:absolute;inset:0 0 calc(18*var(--u)) 0;padding:calc(13*var(--u));border-radius:2px 2px 0 0;
  background:linear-gradient(90deg,#e3e2dd,#c6c5c0);box-shadow:0 0 0 calc(3*var(--u)) #82837f,0 0 calc(90*var(--u)) calc(14*var(--u)) rgba(255,244,214,.34),inset 0 0 0 1px rgba(255,255,255,.6),inset -3px -3px 6px rgba(0,0,0,.25)}
.w-glass{position:relative;width:100%;height:100%;overflow:hidden;background:linear-gradient(#dfeaf3,#f6f8f7 48%,#fffdf5);box-shadow:inset 0 0 0 calc(3*var(--u)) rgba(0,0,0,.28),inset 0 6px 14px rgba(0,0,0,.25)}
.w-glass::before{content:"";position:absolute;left:-20%;top:-18%;width:90%;height:70%;background:radial-gradient(closest-side,rgba(255,255,255,1),rgba(255,255,255,0));}
.w-glass::after{content:"";position:absolute;left:-5%;right:-5%;bottom:-6%;height:34%;filter:blur(7px);opacity:.85;
  background:radial-gradient(38% 60% at 14% 80%,#8b9a86,transparent 72%),radial-gradient(34% 74% at 46% 92%,#748470,transparent 72%),radial-gradient(40% 58% at 82% 84%,#93a08e,transparent 72%),radial-gradient(22% 40% at 64% 100%,#6b7b69,transparent 72%)}
.mull{position:absolute;background:linear-gradient(90deg,#e6e5e0,#b9b8b3);z-index:2;box-shadow:0 0 4px rgba(0,0,0,.35)}
.mull.v{top:0;bottom:0;left:calc(50% - 3.5*var(--u));width:calc(7*var(--u))}
.mull.h1{left:0;right:0;top:calc(33.3% - 3.5*var(--u));height:calc(7*var(--u))}
.mull.h2{left:0;right:0;top:calc(66.6% - 3.5*var(--u));height:calc(7*var(--u))}
.w-sill{position:absolute;left:calc(-14*var(--u));right:calc(-14*var(--u));bottom:0;height:calc(20*var(--u));border-radius:2px;
  background:linear-gradient(#d9d8d3,#a4a39e 70%,#787772);box-shadow:0 calc(10*var(--u)) calc(16*var(--u)) rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.7)}

/* light coming through the window */
.beam{position:absolute;inset:0;z-index:3;pointer-events:none;mix-blend-mode:screen;opacity:.9;animation:breathe 9s ease-in-out infinite alternate}
.beam svg{width:100%;height:100%;display:block;overflow:hidden}
.beam.m{display:none}
@keyframes breathe{from{opacity:.72}to{opacity:1}}
.motes{position:absolute;inset:0;z-index:3;pointer-events:none;overflow:hidden}
.motes i{position:absolute;width:3px;height:3px;border-radius:50%;background:#fff6dc;opacity:0;filter:blur(.4px);animation:mote var(--t,14s) ease-in-out var(--d,0s) infinite}
@keyframes mote{0%{opacity:0;transform:translate(0,0)}20%{opacity:.55}60%{opacity:.35}100%{opacity:0;transform:translate(calc(var(--dx,60)*1px),calc(var(--dy,-40)*1px))}}

/* ---------- table + pieces ---------- */
.shelves{position:absolute;left:calc(268*var(--u));top:calc(70*var(--u));display:flex;gap:calc(64*var(--u));align-items:flex-end;z-index:2}
.shelf{position:relative;display:flex;align-items:flex-end;justify-content:center;gap:calc(34*var(--u));padding-bottom:calc(var(--P)*var(--u))}
.shelves::before,.shelf::before{content:"";position:absolute;z-index:0;left:calc(-32*var(--u));right:calc(-32*var(--u));bottom:0;height:calc((var(--D) + 28)*var(--u));
  background:
    linear-gradient(#3c3a38 0,#55524f 22%,#6a6662 calc((var(--D) - 20)/(var(--D) + 28)*100%),#8a857f calc(var(--D)/(var(--D) + 28)*100%),#4b4844 calc(var(--D)/(var(--D) + 28)*100% + 1px),#34322f 100%),
    #4b4844;
  box-shadow:0 calc(30*var(--u)) calc(34*var(--u)) calc(-4*var(--u)) rgba(0,0,0,.78);border-radius:2px}
.shelves::before{left:-110vw;right:-110vw}
.shelf::before{content:none}
.shelves::after,.shelf::after{content:"";position:absolute;z-index:0;left:calc(-32*var(--u));right:calc(-32*var(--u));bottom:0;height:calc((var(--D) + 28)*var(--u));pointer-events:none;opacity:.55;mix-blend-mode:overlay;
  background:repeating-linear-gradient(0deg,rgba(0,0,0,.35) 0 1px,transparent 1px 4px),repeating-linear-gradient(0deg,rgba(255,255,255,.28) 0 1px,transparent 1px 11px),repeating-linear-gradient(90deg,rgba(0,0,0,.12) 0 2px,transparent 2px 220px)}
.shelves::after{left:-110vw;right:-110vw}
.shelf::after{content:none}
.shelf.spot .label{box-shadow:0 0 0 1px rgba(232,220,192,.75),0 10px 30px rgba(0,0,0,.55),0 0 46px rgba(255,240,205,.25)}

.piece{position:relative;z-index:1;perspective:calc(1500*var(--u));perspective-origin:50% -25%;touch-action:pan-y}
.tilt{position:relative;transform-style:preserve-3d;transform-origin:50% 100%;will-change:transform}
.contact{position:absolute;left:8%;right:8%;bottom:calc(-9*var(--u));height:calc(22*var(--u));border-radius:50%;background:radial-gradient(closest-side,rgba(0,0,0,.85),rgba(0,0,0,.4) 60%,transparent);filter:blur(3px);pointer-events:none}
.cast{position:absolute;left:0;bottom:0;width:100%;height:100%;transform-origin:0 100%;transform:skewX(-58deg) scaleY(.30);background:rgba(0,0,0,.62);filter:blur(calc(6*var(--u)));opacity:0;pointer-events:none;
  -webkit-mask-image:linear-gradient(to top,#000 30%,rgba(0,0,0,.25));mask-image:linear-gradient(to top,#000 30%,rgba(0,0,0,.25))}
.frame .cast,.cast.shape{opacity:.8}
.cast.shape{-webkit-mask-image:var(--img);mask-image:var(--img);-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}

/* frames */
.frame{--w:calc(250*var(--u));--fr:calc(11*var(--u));--mat:calc(11*var(--u));--d:calc(24*var(--u));width:var(--w)}
.frame.land{--w:calc(384*var(--u))}
.frame .tilt{transform:rotateX(5deg) rotateY(var(--by,0deg))}
.face{backface-visibility:hidden;-webkit-backface-visibility:hidden}
.f-front{position:relative;padding:var(--mat);border:var(--fr) solid;border-color:#5b5c60 #2b2c2f #17181a #47484c;background:#dedbd3;
  box-shadow:inset 0 0 0 1.5px rgba(206,178,110,.85),inset 0 0 0 calc(var(--mat)*.5) #cfccc3}
.f-front::before{content:"";position:absolute;inset:calc(var(--fr)*-1);pointer-events:none;background:repeating-linear-gradient(90deg,rgba(255,255,255,.05) 0 1px,transparent 1px 6px),repeating-linear-gradient(0deg,rgba(0,0,0,.10) 0 1px,transparent 1px 5px);mix-blend-mode:overlay}
.f-front img{position:relative;z-index:1;width:100%;height:auto;box-shadow:0 0 0 1px rgba(0,0,0,.55),0 0 0 3px #efece4,0 0 8px 3px rgba(0,0,0,.35);background:#111}
.glass{position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(112deg,rgba(255,255,255,.30) calc(var(--gx,20%) - 16%),rgba(255,255,255,.05) var(--gx,20%),transparent calc(var(--gx,20%) + 12%),transparent 66%,rgba(255,255,255,.10) 78%,transparent 90%),linear-gradient(rgba(255,255,255,.10),transparent 30%)}
.face:not(.f-front){position:absolute}
.f-l{left:0;top:0;bottom:0;width:var(--d);transform-origin:0 50%;transform:rotateY(90deg);background:linear-gradient(90deg,#66676b,#4a4b4f)}
.f-r{right:0;top:0;bottom:0;width:var(--d);transform-origin:100% 50%;transform:rotateY(-90deg);background:linear-gradient(90deg,#1e1f21,#111214)}
.f-t{left:0;right:0;top:0;height:var(--d);transform-origin:50% 0;transform:rotateX(-90deg);background:linear-gradient(#77787c,#4e4f53)}
.f-b{left:0;right:0;bottom:0;height:var(--d);transform-origin:50% 100%;transform:rotateX(90deg);background:#0c0d0e}
.f-back{position:absolute;inset:0;transform:translateZ(calc(var(--d)*-1));background:#1a1b1d}

/* awards (transparent webp, extruded into slices) */
.trophy{--tar:.55;--ah:min(calc(350*var(--u)),calc(210*var(--u)/var(--tar)));--step:calc(2.1*var(--u));--h:7;height:var(--ah);width:calc(var(--ah)*var(--tar));perspective:calc(1100*var(--u));perspective-origin:50% -10%}
.trophy .tilt{width:100%;height:100%}
.t-front{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;transform:translateZ(calc(var(--step)*var(--h)))}
.slice{position:absolute;inset:0;background:var(--depth,var(--img)) center/100% 100% no-repeat;transform:translateZ(calc(var(--step)*(var(--h) - var(--i))));pointer-events:none}
.sheen{position:absolute;inset:0;pointer-events:none;transform:translateZ(calc(var(--step)*var(--h) + .5px));
  -webkit-mask:var(--img) center/100% 100% no-repeat;mask:var(--img) center/100% 100% no-repeat;mix-blend-mode:soft-light;
  background:linear-gradient(105deg,transparent calc(var(--sx,50%) - 22%),rgba(255,255,255,.95) var(--sx,50%),transparent calc(var(--sx,50%) + 22%))}
.trophy:not(.built) .tilt{transform:none}
.trophy .contact{left:-6%;right:-6%}

/* labels lying on the table */
.label{position:absolute;left:50%;bottom:calc(30*var(--u));width:calc(100% + 40*var(--u));max-width:calc(470*var(--u));transform:translateX(-50%) perspective(900px) rotateX(34deg);transform-origin:50% 100%;z-index:3;
  padding:.95rem 1.2rem 1rem;background:linear-gradient(135deg,#e7e4dd,#d3d0c8);color:var(--paper-ink);border-radius:2px;box-shadow:0 8px 22px rgba(0,0,0,.55),0 1px 0 rgba(255,255,255,.6) inset;transition:box-shadow .6s}
.label .k{font:.58rem/1 var(--mono);letter-spacing:.18em;text-transform:uppercase;color:#65676b}
.label h2{font:600 clamp(1.02rem,1.55vw,1.32rem)/1.12 var(--serif);margin:.35rem 0 .35rem}
.label p{font:500 clamp(.8rem,1.05vw,.92rem)/1.38 var(--serif);color:#3d3f43}

/* ---------- footer: the note on the ledge ---------- */
.foot{position:relative;z-index:1;text-align:center;padding:2rem 1rem calc(3rem + env(safe-area-inset-bottom))}
.note-wrap{position:relative;width:min(680px,90vw);margin:0 auto;padding-bottom:32px}
.paper{position:relative;z-index:1;padding:3rem clamp(1.6rem,5vw,3.4rem) 2.2rem;text-align:left;transform:rotate(-.7deg);transform-origin:50% 100%;color:var(--paper-ink);
  background:
    linear-gradient(180deg,transparent 33%,rgba(0,0,0,.07) 33.2%,rgba(255,255,255,.35) 33.5%,transparent 34.5%,transparent 66%,rgba(0,0,0,.07) 66.2%,rgba(255,255,255,.35) 66.5%,transparent 67.5%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' seed='4'/%3E%3CfeColorMatrix values='0 0 0 0 .3 0 0 0 0 .3 0 0 0 0 .3 0 0 0 .16 0'/%3E%3C/filter%3E%3Crect width='220' height='220' filter='url(%23n)'/%3E%3C/svg%3E"),
    linear-gradient(135deg,#ecebe6,#dcdad3);
  box-shadow:0 1px 0 rgba(255,255,255,.7) inset,0 14px 24px -6px rgba(0,0,0,.6),6px 4px 18px rgba(0,0,0,.35)}
.paper::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(120% 90% at 0 0,rgba(255,255,255,.35),transparent 55%),radial-gradient(90% 70% at 100% 100%,rgba(0,0,0,.12),transparent 60%)}
.paper blockquote{position:relative;quotes:none}
.paper .q1{font:italic 600 clamp(1.75rem,4.6vw,2.7rem)/1.1 var(--serif);letter-spacing:-.005em;color:#232427;text-wrap:balance}
.paper .q1::before{content:"\201C";position:absolute;left:-.62em;top:-.06em;font:italic 500 1.5em/1 var(--serif);color:#9a9c9f}
.paper .rule{display:block;width:3.2rem;height:1px;margin:1.25rem 0 1.15rem;background:#8a8c8f}
.paper .q2{font:500 clamp(1.14rem,2.5vw,1.5rem)/1.32 var(--serif);color:#45474b;text-wrap:pretty}
.paper .q2::after{content:"\201D";margin-left:.08em;color:#9a9c9f}
.sig{display:flex;justify-content:flex-end;margin-top:1.5rem}
.sig img{width:clamp(150px,32vw,230px);height:auto;transform:rotate(-4deg);filter:grayscale(1) invert(.36);mix-blend-mode:multiply;opacity:.92}
.tape{position:absolute;z-index:2;width:104px;height:30px;filter:drop-shadow(0 1px 1.5px rgba(0,0,0,.4));pointer-events:none}
.tape i{display:block;width:100%;height:100%;background:linear-gradient(90deg,rgba(250,250,247,.58),rgba(255,255,255,.72) 50%,rgba(246,246,242,.56));
  clip-path:polygon(0 0,3% 12%,0 25%,3% 38%,0 50%,3% 62%,0 75%,3% 88%,0 100%,100% 100%,97% 88%,100% 75%,97% 62%,100% 50%,97% 38%,100% 25%,97% 12%,100% 0)}
.tape.a{top:-13px;left:-30px;transform:rotate(-37deg)}
.tape.b{top:-13px;right:-30px;transform:rotate(37deg)}
.ledge{position:absolute;z-index:0;left:-64px;right:-64px;bottom:0;height:42px;border-radius:2px;
  background:linear-gradient(#8d8882 0,#8d8882 14px,#4c4945 15px,#3c3a37 70%,#2a2927);box-shadow:0 24px 26px -4px rgba(0,0,0,.75),0 1px 0 rgba(255,255,255,.18) inset}
.ledge::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,.25) 0 1px,transparent 1px 4px);mix-blend-mode:overlay;opacity:.6}
.legal-line{margin-top:2.2rem;font:.62rem var(--mono);letter-spacing:.1em;color:#a3a5a8}
.legal-line a{color:var(--light);text-decoration:none;border-bottom:1px solid rgba(232,220,192,.45)}
.foot .dbh{display:flex;justify-content:center;margin-top:1.1rem}
.foot .dbh img{width:120px;height:auto;pointer-events:auto}

/* ---------- small screens: two shelves, stacked ---------- */
@media (max-width:900px){
  :root{--u:min(1px,.2vw);--D:236;--P:230}
  .room{width:100%;height:auto;padding-top:calc(360*var(--u));padding-bottom:calc(40*var(--u))}
  .window{left:calc(-40*var(--u));top:calc(24*var(--u));width:calc(300*var(--u));height:calc(300*var(--u))}
  .shelves{position:relative;left:auto;top:auto;flex-direction:column;align-items:stretch;gap:calc(70*var(--u));padding:0 calc(20*var(--u))}
  .shelf{justify-content:center;gap:calc(22*var(--u))}
  .shelves::before,.shelves::after{content:none}
  .shelf::before,.shelf::after{content:"";left:-110vw;right:-110vw}
  .frame{--w:calc(250*var(--u))}.frame.land{--w:calc(300*var(--u))}
  .trophy{--ah:min(calc(300*var(--u)),calc(150*var(--u)/var(--tar)))}
  .label{width:calc(100% + 30*var(--u));max-width:none}
  #nav{padding:1rem}.links{gap:.8rem}.links a{font-size:.55rem;letter-spacing:.1em}.brand{display:none}
  .beam{opacity:.7}.beam.d{display:none}.beam.m{display:block}
}
@media (max-width:520px){.hero{padding-top:6.5rem}.label{padding:.8rem .9rem .85rem}.label h2{font-size:1.02rem}.label p{font-size:.82rem}.tape{width:84px;height:26px}.tape.a{left:-24px}.tape.b{right:-24px}.ledge{left:-30px;right:-30px}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition-duration:.01s!important}html{scroll-behavior:auto}}
