/* Screen print: two inks, neon pink and ultramarine, on white stock.
   A script logo, wide-spaced caps, one big circle, duotone photos. */
@font-face{font-family:Montserrat;src:url('/static/Montserrat.ttf') format('truetype');font-style:normal;font-weight:100 900;font-display:swap}
@font-face{font-family:Dela Gothic One;src:url('/static/DelaGothicOne-Regular.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:Sacramento;src:url('/static/Sacramento-Regular.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}

:root{
  --pink:#ff4fc3;
  --pink-ink:#c90068;
  --blue:#27348b;
  --paper:#fff;
  --caps:'Montserrat',Arial,sans-serif;
  --script:'Sacramento',cursive;
  --kanji:'Dela Gothic One','Hiragino Kaku Gothic ProN',sans-serif;
  --gutter:max(20px,calc((100vw - 1100px)/2));
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--blue);font:600 15px/1.4 var(--caps)}
a{color:inherit}
button,input,textarea{font:inherit;color:inherit}

/* Paper grain over everything, like ink on uncoated stock. */
body::after{
  content:'';position:fixed;inset:0;z-index:50;pointer-events:none;opacity:.1;mix-blend-mode:multiply;
  background: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='2'/%3E%3CfeColorMatrix values='0 0 0 0 .15 0 0 0 0 .2 0 0 0 0 .55 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* Masthead: the script logo sits on top of one pink circle. */
.masthead{
  --d:min(86vw,430px);
  position:relative;overflow:hidden;
  padding:26px var(--gutter) 0;
  min-height:calc(var(--d) + 208px);
}
.masthead::before{
  content:'';position:absolute;top:178px;left:50%;width:var(--d);aspect-ratio:1;border-radius:50%;
  transform:translateX(-50%);
  /* Halftone dots fade in toward the bottom of the circle. */
  background:
    linear-gradient(var(--pink) 38%,#ff4fc300 96%),
    radial-gradient(circle,var(--blue) 1.7px,transparent 2.1px) 0 0/9px 9px,
    var(--pink);
  box-shadow:7px 6px 0 var(--blue);
}
.masthead::after{
  content:'写真';position:absolute;top:178px;left:50%;width:var(--d);aspect-ratio:1;
  transform:translateX(-50%);
  display:grid;place-items:center;padding-top:6%;
  font:400 calc(var(--d)*.37)/1 var(--kanji);color:var(--blue);
  text-shadow:-5px -4px 0 #fff;
}
.mast-copy{position:relative;z-index:2}
.mast-copy::before,.mast-copy::after{display:block;font:800 11px var(--caps);letter-spacing:.34em;text-transform:uppercase}
.mast-copy::before{content:'Barcelona — 東京';padding-left:6px}
.mast-copy::after{content:'Photos + plans';color:var(--pink-ink);padding-left:6px;margin-top:2px}
.mast-copy h1{
  margin:14px 0 0 -2px;
  font:400 clamp(84px,25.5vw,150px)/1 var(--script);
  color:var(--blue);-webkit-text-stroke:1.5px var(--blue);
  transform:rotate(-5deg);transform-origin:left bottom;white-space:nowrap;
}
.mast-stamp{
  position:absolute;z-index:2;top:calc(178px + var(--d)*.04);right:calc(50% - var(--d)/2 - 6px);
  width:78px;aspect-ratio:1;border:2px solid var(--blue);border-radius:50%;background:var(--paper);
  display:grid;place-content:center;text-align:center;
  font:400 17px/1.15 var(--kanji);transform:rotate(9deg);
}
.mast-stamp small{display:block;font:800 8px var(--caps);letter-spacing:.3em;text-transform:uppercase;border-top:2px solid var(--pink-ink);margin-top:3px;padding-top:3px}
.anime-note{
  position:absolute;z-index:2;left:var(--gutter);bottom:14px;
  font:400 13px var(--kanji);letter-spacing:.3em;color:var(--pink-ink);writing-mode:vertical-rl;
}
.anime-spark{position:absolute;z-index:2;top:calc(178px + var(--d)*.2);left:calc(50% - var(--d)*.33);font-size:30px;line-height:1;color:#fff}

main{padding:0 var(--gutter)}
.eyebrow{display:inline-block;padding-bottom:3px;border-bottom:2px solid var(--pink-ink);font:800 11px var(--caps);letter-spacing:.3em;color:var(--pink-ink)}
h2{margin:0;font:400 62px/1 var(--script);-webkit-text-stroke:.8px currentColor;transform:rotate(-3deg);transform-origin:left bottom}
h2 span{display:inline-block;font:800 16px var(--caps);letter-spacing:.1em;-webkit-text-stroke:0;color:var(--pink-ink);margin-left:6px}

.toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:18px 12px;margin-top:34px;padding-top:20px;border-top:2px solid var(--pink)}
.toolbar h2 #photo-count{font:800 11px var(--caps);letter-spacing:.2em;color:var(--blue);margin-left:10px;vertical-align:middle}
.toolbar-actions{display:flex;flex:1;flex-direction:row-reverse;align-items:center;justify-content:space-between;gap:22px}
.quiet-button{border:0;background:none;padding:6px 0;cursor:pointer;font:800 10px var(--caps);letter-spacing:.24em;text-transform:uppercase;border-bottom:2px solid var(--pink-ink)}
.upload-button{
  display:inline-block;border:0;background:var(--blue);color:#fff;cursor:pointer;white-space:nowrap;
  padding:15px 16px;min-height:46px;font:800 11px var(--caps);letter-spacing:.22em;text-transform:uppercase;text-decoration:none;
  box-shadow:5px 5px 0 var(--pink);transition:transform .12s,box-shadow .12s;
}
.upload-button:hover,.upload-button:active{transform:translate(3px,3px);box-shadow:2px 2px 0 var(--pink-ink)}
.notice{min-height:30px;padding:12px 0 6px;font:700 10px var(--caps);letter-spacing:.2em;text-transform:uppercase}
.notice.is-error{min-height:0;margin:12px 0;padding:12px 14px;background:var(--pink);line-height:1.6}

/* Photos stay true to their original colors on a clean white field. */
.photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 14px}
.photo-card{min-width:0}
.photo-frame{overflow:hidden;background:#fff}
.photo-frame img{display:block;width:100%;aspect-ratio:4/3;object-fit:contain;background:#fff}
.photo-meta{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid var(--pink);padding:4px 0}
.photo-meta span{font:700 9px var(--caps);letter-spacing:.22em}
.delete-photo{border:0;background:none;cursor:pointer;width:36px;height:36px;padding:0;font-size:0}
.delete-photo::before{content:'×';font:600 22px/1 var(--caps);color:var(--blue)}
.delete-photo:hover::before{color:var(--pink-ink)}
.empty-gallery{grid-column:1/-1;padding:70px 20px;background:var(--pink);text-align:center;font:800 12px var(--caps);letter-spacing:.3em;text-transform:uppercase}

/* Tasks: the second poster, reversed out of blue. */
.todo-panel{margin:64px calc(var(--gutter)*-1) 0;padding:44px var(--gutter) 48px;background:var(--blue);color:#fff}
.todo-panel .eyebrow{color:var(--pink);border-color:var(--pink)}
.todo-panel h2 span{color:var(--pink)}
#todo-form{display:flex;max-width:640px;margin-top:22px;border-bottom:2px solid var(--pink)}
#todo-form input{flex:1;min-width:0;border:0;outline:0;background:transparent;padding:14px 0;font-size:16px}
#todo-form input::placeholder{color:#ffffff80}
#todo-form button{border:0;background:none;color:var(--pink);font-size:30px;line-height:1;min-width:46px;cursor:pointer}
#todo-list{list-style:none;max-width:640px;margin:0;padding:0}
#todo-list li{display:flex;align-items:center;gap:14px;min-height:54px;padding:8px 0;border-bottom:1px solid #ffffff30;font-size:15px}
#todo-list input{appearance:none;-webkit-appearance:none;flex:none;width:22px;height:22px;margin:0;border:2px solid var(--pink);border-radius:50%;cursor:pointer}
#todo-list input:checked{background:var(--pink);box-shadow:inset 0 0 0 4px var(--blue)}
#todo-list li.done span{text-decoration:line-through;text-decoration-color:var(--pink);opacity:.6}
#todo-list button{margin-left:auto;border:0;background:none;color:#fff;font-size:22px;min-width:36px;min-height:36px;cursor:pointer}
#todo-list button:hover{color:var(--pink)}

.guest-link{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:30px 0;font:800 10px var(--caps);letter-spacing:.24em;text-transform:uppercase}
.guest-link a{text-decoration:none;border-bottom:2px solid var(--pink-ink);padding-bottom:3px}
footer{display:flex;justify-content:space-between;gap:12px;padding:22px var(--gutter);background:var(--pink);font:800 9px var(--caps);letter-spacing:.24em;text-transform:uppercase}

dialog{border:0;padding:0;width:min(400px,calc(100% - 44px));background:#fff;color:var(--blue);box-shadow:10px 10px 0 var(--pink)}
dialog::backdrop{background:#27348bd9}
#login-form{position:relative;padding:34px 28px 30px}
#login-form h2{margin:14px 0 6px}
#login-form p{margin:0 0 16px;font:700 10px var(--caps);letter-spacing:.2em;text-transform:uppercase}
#login-form input{display:block;width:100%;margin-bottom:22px;padding:13px 12px;border:2px solid var(--blue);outline:0;background:#fff;font-size:16px}
#login-form input:focus{border-color:var(--pink-ink)}
.dialog-close{position:absolute;top:10px;right:12px;border:0;background:none;font-size:28px;line-height:1;cursor:pointer}
#login-error{display:block;margin-top:16px;font:800 10px var(--caps);letter-spacing:.2em;text-transform:uppercase;color:var(--pink-ink)}

/* Message board. */
.board-head{display:flex;justify-content:space-between;align-items:center;padding:16px var(--gutter)}
.wordmark{font:400 40px/1 var(--script);-webkit-text-stroke:.6px var(--blue);text-decoration:none}
.back-link{font:800 10px var(--caps);letter-spacing:.24em;text-transform:uppercase;text-decoration:none;border-bottom:2px solid var(--pink-ink);padding-bottom:3px}
.board-main{position:relative;max-width:660px;margin:0 auto;padding:40px 20px 70px}
.board-main::before{content:'';position:absolute;z-index:-1;top:10px;right:-40px;width:230px;aspect-ratio:1;border-radius:50%;background:var(--pink);box-shadow:6px 5px 0 var(--blue)}
.board-main h1{margin:14px 0 0;font:400 clamp(84px,24vw,120px)/1 var(--script);-webkit-text-stroke:1.2px var(--blue);transform:rotate(-4deg);transform-origin:left bottom}
.board-intro{margin:14px 0 34px;font:800 11px var(--caps);letter-spacing:.26em;text-transform:uppercase}
.message-form{padding-top:22px;border-top:2px solid var(--pink)}
.message-form label{display:block;margin-bottom:22px;font:800 10px var(--caps);letter-spacing:.26em;text-transform:uppercase;color:var(--pink-ink)}
.message-form input,.message-form textarea{display:block;width:100%;border:0;border-bottom:2px solid var(--blue);border-radius:0;outline:0;background:transparent;padding:12px 0 8px;font:600 16px var(--caps);letter-spacing:0;text-transform:none;color:var(--blue);resize:vertical}
.message-form input:focus,.message-form textarea:focus{border-color:var(--pink-ink)}
.message-foot{display:flex;justify-content:space-between;align-items:center;gap:12px}
.message-foot span{font:700 9px var(--caps);letter-spacing:.2em;text-transform:uppercase}
.message-wall{margin-top:50px}
.message-wall h2{font-size:54px;margin-bottom:10px}
.message-card{padding:18px 0;border-bottom:2px solid var(--pink)}
.message-card p{margin:0 0 8px;font:600 16px/1.5 var(--caps);overflow-wrap:anywhere}
.message-card span{font:800 9px var(--caps);letter-spacing:.24em;text-transform:uppercase;color:var(--pink-ink)}

@media(min-width:700px){
  .photo-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:30px 22px}
  .toolbar-actions{flex:none;flex-direction:row}
}
@media(min-width:900px){
  /* Logo left, circle right, like a landscape poster. */
  .masthead{--d:400px;min-height:490px;padding-top:70px}
  .masthead::before,.masthead::after{top:50px;left:auto;right:calc(var(--gutter) + 40px);transform:none}
  .mast-copy h1{font-size:190px}
  .mast-copy::after{margin-top:26px}
  .mast-stamp{top:60px;right:var(--gutter)}
  .anime-spark{top:130px;left:auto;right:calc(var(--gutter) + 350px)}
  .photo-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  h2{font-size:76px}
}

/* Phone: a short masthead. The logo runs into a small circle at the right edge. */
@media(max-width:699px){
  .masthead{--d:124px;min-height:168px;padding:16px var(--gutter) 14px}
  .masthead::before,.masthead::after{top:30px;left:auto;right:calc(var(--gutter) - 8px);transform:none}
  .masthead::before{box-shadow:4px 4px 0 var(--blue)}
  .masthead::after{text-shadow:-2px -2px 0 #fff}
  .mast-copy h1{font-size:clamp(62px,19vw,84px);margin-top:16px}
  .mast-stamp,.anime-note,.anime-spark{display:none}
  .toolbar{margin-top:8px;padding-top:16px}
}
