/* Theme: Blueprint Realty Hub (site 050) — from design-system sample */
:root{
    --bg:#F4F2E9; --surface:#FFFFFF; --panel:#0F2A4D; --row:#FBFAF5;
    --text:#0E1A24; --muted:#4A586A; --border:#9AA7B5; --grid:#D7DCE2;
    --accent:#143A66; --accent-h:#1A4677; --yellow:#E8B400; --danger:#B02A1E;
    --ink-bp:#EAF1FA;
    --font-body:Pretendard,'Apple SD Gothic Neo','Malgun Gothic',sans-serif;
    --font-head:'IBM Plex Sans KR',Pretendard,sans-serif;
    --font-mono:'IBM Plex Mono','D2Coding',monospace;
    --shell:1170px;
    --ease:cubic-bezier(0.2,0,0,1);
  }
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;max-width:100%;overflow-x:hidden;}
  body{
    background:var(--bg); color:var(--text); font-family:var(--font-body);
    font-size:16px; line-height:1.65;
    background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
    background-size:8px 8px; background-position:-1px -1px;
  }
  a{color:var(--accent);text-decoration:none;}
  a:hover{text-decoration:underline;}
  :focus-visible{outline:2px solid var(--yellow);outline-offset:2px;}
  h1,h2,h3,h4{font-family:var(--font-head);margin:0;}
  h1{font-size:39px;line-height:1.15;font-weight:700;letter-spacing:-0.01em;}
  h2{font-size:31px;line-height:1.2;font-weight:700;letter-spacing:-0.01em;}
  h3{font-size:25px;line-height:1.25;font-weight:600;letter-spacing:-0.005em;}
  .mono{font-family:var(--font-mono);}
  .meta{font-family:var(--font-mono);font-size:13px;line-height:1.45;font-weight:500;letter-spacing:0.02em;color:var(--muted);text-transform:uppercase;}
  .shell{max-width:var(--shell);margin:0 auto;padding:0 16px;}
  .skip{position:absolute;left:-9999px;top:0;background:var(--accent);color:#fff;padding:8px 12px;z-index:100;}
  .skip:focus{left:8px;top:8px;}

  /* ---------- HEADER : blueprint top bar ---------- */
  .topbar{background:var(--panel);color:var(--ink-bp);border-bottom:1px solid var(--accent);}
  .topbar .shell{display:flex;align-items:center;gap:16px;min-height:56px;flex-wrap:wrap;}
  .brand{display:flex;align-items:center;gap:10px;color:var(--ink-bp);font-family:var(--font-head);font-weight:700;font-size:22px;letter-spacing:-0.01em;}
  .brand:hover{text-decoration:none;}
  .brand .logo{width:34px;height:34px;flex:0 0 auto;}
  .brand small{display:block;font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:0.08em;color:#9FB8D6;}
  .util{margin-left:auto;display:flex;align-items:center;gap:4px;flex-wrap:wrap;}
  .util a{color:var(--ink-bp);font-family:var(--font-mono);font-size:13px;letter-spacing:0.02em;padding:10px;min-height:44px;display:inline-flex;align-items:center;}
  .util a.write{background:var(--accent);border-left:4px solid var(--yellow);color:#fff;}
  .util a.write:hover{background:var(--accent-h);text-decoration:none;}

  /* ruler under header */
  .ruler{height:9px;background:var(--yellow);position:relative;}
  .ruler::before{content:"";position:absolute;inset:0;background-image:repeating-linear-gradient(90deg,var(--text) 0,var(--text) 1px,transparent 1px,transparent 16px);opacity:.5;}

  /* ---------- search hero (4col full) ---------- */
  .hero{background:var(--panel);color:var(--ink-bp);border-bottom:1px solid var(--accent);box-shadow:0 4px 0 rgba(15,42,77,0.18);}
  .hero .shell{display:grid;grid-template-columns:1.4fr 1fr;gap:24px;align-items:center;padding:32px 16px;}
  .hero-copy h1{color:var(--ink-bp);}
  .hero-copy p{color:#C3D3E8;margin:8px 0 16px;max-width:34ch;}
  .searchbar{display:flex;gap:0;align-items:flex-end;flex-wrap:wrap;}
  .searchbar .field{flex:1 1 240px;min-width:200px;}
  .searchbar label{display:block;font-family:var(--font-mono);font-size:12px;letter-spacing:0.06em;color:#9FB8D6;margin-bottom:4px;}
  .searchbar input{width:100%;background:transparent;border:0;border-bottom:1.5px solid var(--border);color:var(--ink-bp);font-family:var(--font-body);font-size:16px;padding:10px 2px;min-height:44px;}
  .searchbar input::placeholder{color:#8AA0BC;}
  .searchbar input:focus{outline:none;border-bottom-color:var(--yellow);caret-color:var(--ink-bp);}
  .btn{font-family:var(--font-head);font-size:15px;font-weight:600;border-radius:2px;cursor:pointer;min-height:44px;padding:10px 18px;display:inline-flex;align-items:center;justify-content:center;transition:background .16s var(--ease),transform .1s var(--ease);}
  .btn-primary{background:var(--accent);color:#fff;border:0;border-left:4px solid var(--yellow);}
  .btn-primary:hover{background:var(--accent-h);}
  .btn-primary:active{transform:translateY(1px);}
  .searchbar .btn{margin-left:12px;flex:0 0 auto;}
  .hero-art{align-self:stretch;}
  .hero-art svg{width:100%;height:auto;display:block;}

  /* ---------- module board ---------- */
  main{padding:24px 0 48px;}
  .board{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;align-items:start;}
  .col2{grid-column:span 2;}
  .col4{grid-column:span 4;}

  /* dimension-frame module box (signature) */
  .mod{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:2px;padding:16px;}
  .mod>.tick-top{position:absolute;top:-9px;left:8px;right:8px;height:1px;background:var(--yellow);}
  .mod>.tick-top::before,.mod>.tick-top::after{content:"";position:absolute;top:-3px;width:1px;height:7px;background:var(--yellow);}
  .mod>.tick-top::before{left:0;}.mod>.tick-top::after{right:0;}
  .mod>.tick-top span{position:absolute;top:-22px;left:50%;transform:translateX(-50%);font-family:var(--font-mono);font-size:11px;letter-spacing:0.06em;color:var(--muted);background:var(--bg);padding:0 6px;white-space:nowrap;}
  /* corner ticks */
  .mod .corner{position:absolute;width:10px;height:10px;}
  .mod .corner.tl{top:-1px;left:-1px;border-top:2px solid var(--accent);border-left:2px solid var(--accent);}
  .mod .corner.tr{top:-1px;right:-1px;border-top:2px solid var(--accent);border-right:2px solid var(--accent);}
  .mod .corner.bl{bottom:-1px;left:-1px;border-bottom:2px solid var(--accent);border-left:2px solid var(--accent);}
  .mod .corner.br{bottom:-1px;right:-1px;border-bottom:2px solid var(--accent);border-right:2px solid var(--accent);}

  .mod-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--grid);}
  .mod-head h2,.mod-head h3{font-size:18px;line-height:1.25;}
  .mod-head .more{font-family:var(--font-mono);font-size:12px;letter-spacing:0.04em;flex:0 0 auto;}

  /* news / list rows */
  .list{list-style:none;margin:0;padding:0;}
  .list li{display:flex;align-items:baseline;gap:8px;padding:7px 0;border-bottom:1px dotted var(--grid);}
  .list li:last-child{border-bottom:0;}
  .list .ttl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .list .when{font-family:var(--font-mono);font-size:12px;color:var(--muted);flex:0 0 auto;}
  .badge{display:inline-block;font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:0.04em;padding:1px 5px;border-radius:2px;margin-right:2px;}
  .badge.sale{background:var(--accent);color:#fff;}
  .badge.jeonse{border:1px solid var(--accent);color:var(--accent);}
  .badge.new{background:var(--yellow);color:var(--text);}
  .badge.close{border:1px solid var(--danger);color:var(--danger);}

  /* ranking */
  .rank{list-style:none;margin:0;padding:0;}
  .rank li{display:flex;align-items:baseline;gap:10px;padding:7px 0;border-bottom:1px dotted var(--grid);}
  .rank li:last-child{border-bottom:0;}
  .rank .no{font-family:var(--font-mono);font-weight:700;font-size:15px;color:var(--danger);flex:0 0 22px;text-align:right;}
  .rank .no.cool{color:var(--muted);}
  .rank .ttl{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .rank .hit{font-family:var(--font-mono);font-size:11px;color:var(--muted);flex:0 0 auto;}

  /* gallery 2x2 */
  .gal{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  .tile{position:relative;display:block;border:1px solid var(--border);border-radius:2px;overflow:hidden;background:var(--row);}
  .tile:hover{text-decoration:none;}
  .tile:hover .cap{text-decoration:underline;}
  .tile .ph{aspect-ratio:4/3;display:block;}
  .tile .ph svg{width:100%;height:100%;display:block;}
  .tile .pin{position:absolute;top:6px;left:6px;background:var(--yellow);color:var(--text);font-family:var(--font-mono);font-size:11px;font-weight:600;padding:1px 5px;border-radius:2px;z-index:2;}
  .tile .cap{display:block;padding:8px;font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:var(--surface);border-top:1px solid var(--grid);}
  .tile .corner-tk{position:absolute;width:8px;height:8px;z-index:2;}
  .tile .corner-tk.a{top:3px;right:3px;border-top:1.5px solid var(--accent);border-right:1.5px solid var(--accent);}

  /* keyword chips */
  .chips{display:flex;flex-wrap:wrap;gap:8px;}
  .chip{font-family:var(--font-mono);font-size:12px;letter-spacing:0.02em;color:var(--accent);border:1px solid var(--border);border-radius:2px;padding:8px;min-height:36px;display:inline-flex;align-items:center;}
  .chip:hover{background:var(--row);text-decoration:none;border-color:var(--accent);}

  /* photo of the day */
  .photo .ph{aspect-ratio:4/3;border:1px solid var(--border);border-radius:2px;overflow:hidden;display:block;}
  .photo .ph svg{width:100%;height:100%;display:block;}
  .photo h4{font-size:15px;margin:10px 0 4px;font-weight:600;}
  .photo p{margin:0;font-size:14px;color:var(--muted);}

  /* dimension table list (board excerpt) */
  table.draft{width:100%;border-collapse:collapse;font-size:14px;}
  table.draft caption{text-align:left;font-family:var(--font-mono);font-size:12px;letter-spacing:0.04em;color:var(--muted);padding-bottom:6px;}
  table.draft th,table.draft td{padding:0 8px;height:44px;border-bottom:1px solid var(--grid);text-align:left;}
  table.draft thead th{font-family:var(--font-mono);font-size:12px;letter-spacing:0.04em;color:var(--muted);background:var(--row);text-transform:uppercase;}
  table.draft tbody tr:nth-child(even){background:var(--row);}
  table.draft td.idx{font-family:var(--font-mono);color:var(--accent);width:48px;}
  table.draft td.area,table.draft td.floor{font-family:var(--font-mono);color:var(--text);white-space:nowrap;}
  table.draft td .t-link{color:var(--accent);}
  table.draft td.date{font-family:var(--font-mono);font-size:12px;color:var(--muted);}
  .pager{display:flex;gap:6px;justify-content:center;margin-top:16px;}
  .pager a,.pager span{min-width:32px;height:32px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:13px;border:1px solid var(--border);border-radius:2px;color:var(--accent);}
  .pager .cur{background:var(--accent);color:#fff;border-color:var(--accent);}
  .pager a:hover{background:var(--row);text-decoration:none;}

  /* footer */
  footer{background:var(--panel);color:var(--ink-bp);border-top:9px solid var(--yellow);margin-top:32px;}
  footer .shell{padding:24px 16px;}
  footer .fnav{display:flex;flex-wrap:wrap;gap:4px 8px;margin-bottom:12px;}
  footer .fnav a{color:var(--ink-bp);font-family:var(--font-mono);font-size:13px;padding:8px;min-height:44px;display:inline-flex;align-items:center;}
  footer .legend{color:#9FB8D6;font-family:var(--font-mono);font-size:12px;letter-spacing:0.04em;line-height:1.7;}

  /* ---------- responsive ---------- */
  @media (max-width:1024px){
    .board{grid-template-columns:repeat(2,1fr);}
    .col2{grid-column:span 1;}
    .col4{grid-column:span 2;}
  }
  @media (max-width:768px){
    body{background-image:none;}
    .hero .shell{grid-template-columns:1fr;gap:16px;padding:24px 16px;}
    .hero-art{max-width:380px;}
    .board{grid-template-columns:1fr;gap:20px;}
    .col2,.col4{grid-column:span 1;}
    h1{font-size:31px;}
  }
  @media (max-width:480px){
    .util a:not(.write){display:none;}
    .gal{grid-template-columns:1fr;}
    .mod>.tick-top span{font-size:10px;}
    table.draft td.floor,table.draft th.floor{display:none;}
    h1{font-size:27px;}
  }
  @media (prefers-reduced-motion:reduce){
    *{transition-duration:0ms!important;}
  }

/* ============ gnuboard dynamic supplements (Blueprint Realty) ============ */
/* thumb images inside tile wrappers */
.tile .ph img{width:100%;height:100%;object-fit:cover;display:block;}
/* gb_webzine card thumb images */
.wz-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.wz-thumb{aspect-ratio:4/3;overflow:hidden;position:relative;background:var(--row);border:1px solid var(--border);border-radius:2px;}
/* pager current page (Gnuboard emits <strong> for current page) */
.pager strong,.pager .now{min-width:32px;height:32px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:13px;background:var(--accent);color:#fff;border:1px solid var(--accent);border-radius:2px;font-weight:700;}
/* board list section head */
.board-list-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:16px;padding-bottom:8px;border-bottom:1px solid var(--grid);}
.board-list-head h1{font-size:20px;font-family:var(--font-head);font-weight:700;color:var(--text);margin:0;}
/* board list search/write actions */
.board-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:20px;padding-top:14px;border-top:1px solid var(--grid);}
.board-actions .board-search{display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.board-actions select,.board-actions input[type=text]{height:40px;padding:0 10px;font-family:var(--font-body);font-size:14px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:2px;}
.btn-secondary{background:var(--surface);color:var(--accent);border:1px solid var(--border);border-radius:2px;}
.btn-secondary:hover{border-color:var(--accent);background:var(--row);text-decoration:none;}
/* sr-only utility */
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
/* board detail (view) — retinted for Blueprint palette */
.hm-board-view{background:var(--surface);border:1px solid var(--border);border-radius:2px;padding:28px;margin:24px auto;max-width:920px;}
.hm-view-head{border-bottom:2px solid var(--accent);padding-bottom:16px;margin-bottom:20px;}
.hm-board-kicker{font-family:var(--font-mono);font-size:12px;letter-spacing:0.1em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;}
.hm-view-head h1{font-family:var(--font-head);font-size:26px;font-weight:700;line-height:1.25;color:var(--text);margin:0;}
.hm-view-meta{display:flex;gap:14px;margin-top:12px;font-family:var(--font-mono);font-size:13px;color:var(--muted);flex-wrap:wrap;}
.hm-view-content{font-size:15px;line-height:1.8;color:var(--text);padding:8px 0 24px;border-bottom:1px solid var(--grid);}
.hm-view-content img{max-width:100%;height:auto;border-radius:2px;}
.hm-view-content p{margin:0 0 16px;}
.hm-view-files{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0;}
.hm-view-files a{font-family:var(--font-mono);font-size:13px;border:1px solid var(--border);border-radius:2px;padding:6px 12px;color:var(--accent);background:var(--surface);}
.hm-view-neighbor{display:flex;flex-direction:column;gap:8px;margin:20px 0;}
.hm-view-neighbor a{display:flex;gap:12px;padding:10px 12px;border:1px solid var(--border);border-radius:2px;background:var(--row);}
.hm-view-neighbor span{font-family:var(--font-mono);font-size:12px;color:var(--muted);flex:0 0 auto;}
.hm-view-neighbor strong{font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.hm-view-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:20px;}
.hm-view-actions a{min-height:40px;display:inline-flex;align-items:center;padding:0 16px;border:1px solid var(--border);border-radius:2px;font-family:var(--font-head);font-weight:600;font-size:14px;color:var(--text);background:var(--surface);}
.hm-view-actions a.is-primary{background:var(--accent);color:#fff;border-color:var(--accent);border-left:4px solid var(--yellow);}
.hm-view-vote{display:flex;gap:10px;margin:16px 0;}
.hm-view-vote a{padding:8px 16px;border:1px solid var(--border);border-radius:2px;color:var(--text);font-family:var(--font-mono);font-size:13px;}
