  :root {
      color-scheme: light;
      font-family: "Noto Sans KR", "Pretendard", "Segoe UI", sans-serif;
      font-size: 16px;
      --canvas: #f6f8fa;
      --surface: #ffffff;
      --surface-muted: #f6f8fa;
      --surface-soft: #eef2f5;
      --ink: #1f2328;
      --ink-soft: #57606a;
      --ink-faint: #8c959f;
      --line: #d0d7de;
      --line-soft: #e6eaef;
      --accent: #1a7f37;
      --accent-strong: #116329;
      --accent-soft: #dafbe1;
      --blue: #0969da;
      --blue-soft: #ddf4ff;
      --warning: #9a6700;
      --warning-soft: #fff8c5;
      --danger: #cf222e;
      --radius-sm: 6px;
      --radius: 8px;
      --radius-lg: 12px;
      --shadow-sm: 0 1px 2px rgba(31, 35, 40, .06);
      --shadow-card: 0 1px 0 rgba(31, 35, 40, .04), 0 2px 6px rgba(31, 35, 40, .04);
    }

    * { box-sizing: border-box; }
    html { background: var(--canvas); }
    body { min-width: 320px; min-height: 100svh; margin: 0; color: var(--ink); background: var(--canvas); }
    a { color: var(--blue); }
    button, input, select, textarea { font: inherit; }
    button { cursor: pointer; }
    button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible,
    textarea:focus-visible, #drop-zone:focus-visible {
      outline: 3px solid rgba(9, 105, 218, .35);
      outline-offset: 2px;
    }
    button:disabled { cursor: wait; opacity: .6; }

    header {
      display: flex;
      min-height: 64px;
      align-items: center;
      gap: .75rem;
      padding: .75rem 1.5rem;
      background: var(--surface);
      border-bottom: 1px solid var(--line);
    }
    header h1 { margin: 0; font-size: 1rem; letter-spacing: -.02em; }
    header h1 a { display: inline-flex; align-items: center; gap: .55rem; color: var(--ink); text-decoration: none; font-weight: 750; }
    .brand-glyph {
      display: inline-flex;
      width: 30px;
      height: 30px;
      align-items: center;
      justify-content: center;
      border: 1px solid #2da44e;
      border-radius: var(--radius-sm);
      color: var(--accent);
      font-size: .72rem;
      font-weight: 800;
      letter-spacing: -.04em;
    }
    header p { margin: 0; color: var(--ink-soft); font-size: .82rem; }
    header .spacer { flex: 1; }
    .header-status { display: inline-flex; align-items: center; gap: .4rem; color: var(--ink-soft); font-size: .78rem; }
    .status-dot, .card-top::before {
      content: '';
      display: inline-block;
      width: .55rem;
      height: .55rem;
      flex: 0 0 auto;
      border: 2px solid var(--surface);
      border-radius: 50%;
      background: var(--accent);
      box-shadow: 0 0 0 1px var(--accent);
    }

    .hero { padding: 1.2rem 1.5rem 0; background: var(--surface); border-bottom: 1px solid var(--line); }
    .hero-inner { width: 100%; max-width: 1760px; min-width: 0; margin: 0 auto; }
    .project-bar { display: flex; align-items: flex-end; justify-content: space-between; gap: 1.5rem; padding: .25rem 0 1.1rem; }
    .project-kicker { display: flex; align-items: center; gap: .35rem; margin-bottom: .35rem; color: var(--ink-soft); font-size: .72rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
    .lock-mark { position: relative; display: inline-block; width: .72rem; height: .58rem; border: 1px solid currentColor; border-radius: 2px; color: var(--ink-faint); font-size: 0; }
    .lock-mark::before { position: absolute; top: -.45rem; left: .1rem; width: .34rem; height: .42rem; content: ''; border: 1px solid currentColor; border-bottom: 0; border-radius: .35rem .35rem 0 0; }
    .project-title { display: flex; align-items: baseline; flex-wrap: wrap; gap: .55rem; margin: 0; font-size: 1.65rem; line-height: 1.2; letter-spacing: -.035em; }
    .project-count { color: var(--ink-soft); font-size: .8rem; font-weight: 500; letter-spacing: 0; }
    .project-description { max-width: 36rem; margin: 0; color: var(--ink-soft); font-size: .88rem; line-height: 1.5; text-align: right; }
    .view-tabs { display: flex; min-height: 46px; align-items: stretch; gap: .2rem; border-bottom: 1px solid var(--line); }
    /* hidden 속성은 UA 규칙(display:none)이라 아래 display 선언에 진다 —
       그러면 숨긴 요소가 그대로 보인다(공개 보드에 내부 전용 탭이 뜬 실사례). */
    [hidden] { display: none !important; }
    .view-tab { display: inline-flex; min-height: 46px; align-items: center; gap: .45rem; padding: 0 .85rem; border-bottom: 2px solid transparent; color: var(--ink-soft); font-size: .86rem; font-weight: 600; text-decoration: none; }
    .view-tab:hover { color: var(--ink); background: var(--surface-muted); }
    .view-tab.active { border-bottom-color: var(--accent); color: var(--ink); }
    .tab-grid { display: inline-block; width: .8rem; height: .8rem; border: 1.5px solid currentColor; border-radius: 2px; background: linear-gradient(90deg, transparent 42%, currentColor 42%, currentColor 58%, transparent 58%), linear-gradient(0deg, transparent 42%, currentColor 42%, currentColor 58%, transparent 58%); opacity: .8; }
    .toolbar { display: flex; align-items: center; gap: .7rem; padding: 1rem 0 .85rem; }
    .toolbar-label { color: var(--ink-soft); font-size: .8rem; font-weight: 700; }
    .search-box { display: flex; min-width: 0; flex: 1; align-items: center; gap: .45rem; max-width: 980px; padding: .25rem .3rem .25rem .65rem; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow-sm); }
    .search-box:focus-within { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(9, 105, 218, .12); }
    .search-mark { display: inline-flex; width: 1.6rem; align-items: center; justify-content: center; color: var(--accent); font-size: .82rem; font-weight: 800; }
    .search-box input#query { min-width: 0; flex: 1; border: 0; padding: .58rem .2rem; color: var(--ink); background: transparent; font-size: .92rem; }
    .search-box input#query:focus { outline: none; }
    .search-box select { min-height: 36px; flex: 0 0 auto; padding: .35rem .5rem; border: 1px solid transparent; border-radius: var(--radius-sm); color: var(--ink-soft); background: var(--surface-muted); font-size: .78rem; }
    .search-box select:hover { border-color: var(--line); color: var(--ink); }
    .search-box button { min-height: 38px; flex: 0 0 auto; padding: .4rem .85rem; border: 1px solid var(--accent); border-radius: var(--radius-sm); color: #fff; background: var(--accent); font-size: .84rem; font-weight: 700; }
    .search-box button:hover { border-color: var(--accent-strong); background: var(--accent-strong); }
    .chips { display: flex; min-width: 0; flex-wrap: wrap; gap: .4rem; padding: 0 0 1rem; }
    .chip { display: inline-flex; min-height: 34px; align-items: center; gap: .35rem; padding: .3rem .65rem; border: 1px solid var(--line); border-radius: 999px; color: var(--ink-soft); background: var(--surface); font-size: .78rem; cursor: pointer; }
    .chip:hover { border-color: #8c959f; color: var(--ink); background: var(--surface-muted); }
    .chip[aria-pressed="true"] { border-color: #2da44e; color: var(--accent-strong); background: var(--accent-soft); }
    .chip .chip-count { color: var(--ink-faint); font-variant-numeric: tabular-nums; }
    .chip[aria-pressed="true"] .chip-count { color: var(--accent); }

    main { display: grid; grid-template-columns: minmax(0, 1fr) 350px; align-items: start; gap: 1rem; max-width: 1760px; margin: 0 auto; padding: 1rem 1.5rem 3rem; }
    .col-main, .col-side { display: grid; min-width: 0; gap: 1rem; }
    .two-up { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
    section { min-width: 0; padding: 1rem; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow-sm); }
    section > h2 { display: flex; min-height: 1.5rem; align-items: baseline; gap: .45rem; margin: 0 0 .75rem; color: var(--ink); font-size: .98rem; letter-spacing: -.015em; }
    section > h2 .muted { font-weight: 400; }
    #recent-section { padding: 0; overflow: hidden; }
    #recent-section > h2 { min-height: 52px; align-items: center; margin: 0; padding: 0 1rem; border-bottom: 1px solid var(--line-soft); }
    #recent-list { padding: 1rem; }
    #search-section { padding: 1rem; }
    .overlay { position: fixed; inset: 0; z-index: 50; display: flex; align-items: flex-start; justify-content: center; padding: 3vh 1rem; overflow-y: auto; background: rgba(31, 35, 40, .52); backdrop-filter: blur(2px); }
    .overlay[hidden] { display: none; }
    .dialog { position: relative; width: min(1100px, 100%); padding: 1.5rem 1.7rem 2rem; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--surface); box-shadow: 0 24px 60px rgba(31, 35, 40, .28); }
    .dialog-close { position: sticky; top: 0; float: right; min-width: 40px; min-height: 40px; margin: -.45rem -.6rem 0 0; padding: .3rem; border: 1px solid var(--line); border-radius: var(--radius-sm); color: var(--ink-soft); background: var(--surface); font-size: 1rem; line-height: 1; }
    .dialog-close:hover { color: var(--ink); background: var(--surface-muted); }
    #detail h2 { margin-top: 0; color: var(--ink); font-size: 1.2rem; overflow-wrap: anywhere; }
    @media (max-width: 480px) { .overlay { padding: 0; } .dialog { min-height: 100vh; padding: 1rem 1rem 2rem; border-radius: 0; } }

    .artifact-group { margin-top: 1.6rem; }
    .stale-mark { margin-left: .5rem; padding: .1rem .5rem; border-radius: 999px; color: var(--warning); background: var(--warning-soft); font-size: .74rem; font-weight: 600; }
    .still-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: .6rem; margin: .6rem 0 1rem; }
    .still { margin: 0; }
    .still img { display: block; width: 100%; height: auto; border: 1px solid var(--line); border-radius: var(--radius-sm); }
    .still figcaption { margin-top: .25rem; color: var(--ink-soft); font-size: .78rem; }
    .still figcaption.seekable { color: var(--blue); }
    .related { margin-top: 2rem; padding-top: 1.2rem; border-top: 1px solid var(--line-soft); }
    .related h3 { margin: 0 0 .5rem; font-size: .95rem; }
    .related h3 + ul { margin-bottom: 1.2rem; }
    .link-list { display: flex; flex-wrap: wrap; gap: .4rem; margin: 0; padding: 0; list-style: none; }
    .link-list li { display: inline-flex; align-items: center; gap: .3rem; padding: .25rem .6rem; border: 1px solid var(--line); border-radius: 999px; background: var(--surface-muted); font-size: .85rem; }
    .link-list a { text-decoration: none; }
    .link-broken { color: var(--ink-faint); text-decoration: line-through; }
    .link-kind { color: var(--ink-faint); font-size: .72rem; }

    .stat-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .5rem; }
    .stat { min-width: 0; padding: .7rem; border: 1px solid var(--line-soft); border-radius: var(--radius-sm); background: var(--surface-muted); }
    .stat span { display: block; color: var(--ink-soft); font-size: .75rem; }
    .stat strong { display: block; margin-top: .15rem; color: var(--ink); font-size: 1.1rem; letter-spacing: -.02em; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
    .bar-list { display: grid; gap: .55rem; margin: 0; padding: 0; list-style: none; }
    .bar-list li { display: grid; grid-template-columns: 5.5rem minmax(0, 1fr) 3rem; align-items: center; gap: .5rem; color: var(--ink-soft); font-size: .82rem; }
    .bar-track { height: .45rem; overflow: hidden; border-radius: 999px; background: var(--surface-soft); }
    .bar { display: block; height: 100%; border-radius: 999px; background: var(--accent); }
    .bar-list strong { color: var(--ink); text-align: right; font-variant-numeric: tabular-nums; }
    .source-list { display: grid; gap: .4rem; margin: 0; padding: 0; list-style: none; }
    .source-row { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: .6rem; padding: .5rem .6rem; border: 1px solid var(--line-soft); border-radius: var(--radius-sm); color: inherit; font-size: .82rem; text-decoration: none; }
    .source-row:hover { border-color: #8c959f; background: var(--surface-muted); }
    .source-name { min-width: 0; overflow-wrap: anywhere; }

    .recent-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: stretch; gap: .7rem; margin: 0; list-style: none; }
    .recent-list > li { min-width: 0; }
    .recent-card { position: relative; display: flex; min-width: 0; min-height: 180px; flex-direction: column; gap: .5rem; padding: .85rem; overflow: hidden; border: 1px solid var(--line-soft); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow-card); transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease; }
    .recent-card:hover { border-color: #8c959f; box-shadow: 0 4px 10px rgba(31, 35, 40, .08); transform: translateY(-1px); }
    .card-top, .card-foot { display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: .45rem; }
    .card-top { align-items: flex-start; }
    .card-top::before { margin-top: .27rem; }
    .card-top > span:first-child { display: flex; min-width: 0; flex-wrap: wrap; align-items: center; gap: .3rem; }
    .card-actions { display: flex; flex: none; align-items: center; gap: .35rem; }
    .card-actions time { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .card-link { color: inherit; text-decoration: none; }
    .card-link::after { content: ''; position: absolute; inset: 0; }
    .card-title { display: block; margin: 0; color: var(--ink); font-size: .94rem; font-weight: 700; line-height: 1.4; overflow-wrap: anywhere; }
    .title-fallback { color: var(--ink-faint); font-size: .7rem; font-weight: 500; }
    .recent-excerpt { display: -webkit-box; flex: 1; margin: 0; color: var(--ink-soft); font-size: .86rem; line-height: 1.5; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
    .card-foot { align-items: flex-end; padding-top: .55rem; border-top: 1px solid var(--line-soft); color: var(--ink-faint); font-size: .74rem; }
    .card-file { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .type-badge { display: inline-flex; min-height: 22px; align-items: center; padding: .12rem .45rem; border: 1px solid var(--line-soft); border-radius: 999px; color: var(--ink-soft); background: var(--surface-muted); font-size: .72rem; font-weight: 700; }
    .share-button { position: relative; z-index: 1; min-height: 30px; padding: .15rem .5rem; border: 1px solid var(--line); border-radius: 999px; color: var(--ink-soft); background: var(--surface); font-size: .72rem; line-height: 1.4; white-space: nowrap; }
    .share-button:hover { border-color: var(--blue); color: var(--blue); background: var(--blue-soft); }
    .share-button[data-state="done"] { border-color: #2da44e; color: var(--accent); background: var(--accent-soft); }
    .share-button[data-state="failed"] { border-color: #ff8182; color: var(--danger); background: #ffebe9; }

    .attention-grid { display: grid; gap: .6rem; }
    .attention-icon { display: inline-flex; width: 1.25rem; height: 1.25rem; align-items: center; justify-content: center; border: 1px solid #d4a72c; border-radius: 50%; color: var(--warning); background: var(--warning-soft); font-size: .75rem; font-weight: 800; }
    .attention-card { min-width: 0; padding: .7rem; border: 1px solid #ffcfb5; border-radius: var(--radius); background: #fff8f2; }
    .attention-card.queue { border-color: #eac54f; background: var(--warning-soft); }
    .attention-card h3 { margin: 0 0 .4rem; color: var(--ink); font-size: .85rem; }
    .attention-list { display: grid; gap: .35rem; margin: 0; padding: 0; list-style: none; }
    .attention-row { display: flex; min-width: 0; flex-direction: column; gap: .2rem; padding: .5rem .55rem; border: 1px solid var(--line-soft); border-radius: var(--radius-sm); color: inherit; background: var(--surface); font-size: .78rem; text-decoration: none; }
    .attention-row:hover { border-color: #ff9b82; background: #fffdfb; }
    .attention-title { display: block; overflow-wrap: anywhere; }
    .attention-excerpt { display: block; overflow-wrap: anywhere; }
    .empty { color: var(--ink-faint); font-size: .84rem; }

    .detail-source-row { margin: .2rem 0 .6rem; overflow-wrap: anywhere; }
    .source-link { font-size: .9rem; }
    .paragraph { max-width: 62ch; margin: 0 0 .85rem; line-height: 1.75; }
    .seekable { cursor: pointer; }
    .seekable:hover { background: var(--surface-muted); }
    .markdown-preview { line-height: 1.75; }
    .markdown-preview h1 { margin: 1.2rem 0 .6rem; font-size: 1.35rem; }
    .markdown-preview h2 { margin: 1.4rem 0 .5rem; padding-bottom: .25rem; border-bottom: 1px solid var(--line-soft); font-size: 1.15rem; }
    .markdown-preview h3 { margin: 1.1rem 0 .4rem; color: var(--ink-soft); font-size: 1rem; }
    .markdown-preview p { max-width: 68ch; margin: 0 0 .8rem; }
    .markdown-preview li { max-width: 68ch; margin: .3rem 0; }
    .markdown-preview blockquote { margin: .8rem 0; padding: .6rem .9rem; border-left: 4px solid #8c959f; border-radius: 0 var(--radius-sm) var(--radius-sm) 0; color: var(--ink-soft); background: var(--surface-muted); }
    .markdown-preview blockquote p { margin: 0; }
    .markdown-preview code { padding: .1rem .3rem; border-radius: 4px; background: var(--surface-soft); font-size: .92em; }
    .markdown-preview pre { overflow-x: auto; padding: .7rem; border: 1px solid var(--line); border-radius: var(--radius-sm); background: #24292f; color: #f6f8fa; }
    .markdown-preview hr { margin: 1.2rem 0; border: 0; border-top: 1px solid var(--line-soft); }
    .doc-card { padding: 1.6rem 1.7rem; counter-reset: docsection; border: 1px solid #e7e3d9; border-radius: var(--radius-lg); color: #1f2430; background: #f7f6f2; }
    .doc-card h1 { margin: 0 0 .8rem; font-size: 1.45rem; line-height: 1.4; letter-spacing: -.01em; }
    .doc-card > h2 { display: flex; align-items: center; gap: .55rem; margin: 2rem 0 .7rem; padding: 0; border: 0; font-size: 1.08rem; letter-spacing: -.01em; }
    .doc-card > h2::before { display: inline-flex; width: 1.6rem; height: 1.6rem; flex: 0 0 auto; align-items: center; justify-content: center; counter-increment: docsection; content: counter(docsection); border-radius: 50%; color: #fff; background: #b23b3b; font-size: .82rem; }
    .doc-card h3 { margin: 1.3rem 0 .35rem; color: #b23b3b; font-size: .98rem; }
    .doc-card p { color: #333a48; }
    .doc-card blockquote { border-left-color: #b23b3b; background: #fffdf8; color: #3b4252; }
    .doc-card ul { padding-left: 0; list-style: none; }
    .doc-card ul > li { position: relative; padding-left: 1.05rem; }
    .doc-card ul > li::before { position: absolute; top: .62em; left: 0; width: .38rem; height: .38rem; content: ''; border-radius: 50%; background: #b23b3b; }
    .doc-card ol { padding-left: 1.3rem; }
    .doc-card code { background: #ece9e1; }
    /* 핵심 포인트에 딸린 원문. 모델이 쓴 말과 한눈에 갈리게 한다. */
    .markdown-preview li > blockquote.evidence { margin: .35rem 0 .2rem; padding: .35rem .6rem;
      border-left: 3px solid #94a3b8; background: #f8fafc; color: #475569;
      font-size: .9em; border-radius: 0 .3rem .3rem 0; }
    .doc-card li > blockquote.evidence { border-left-color: #c9bfae; background: #fbfaf6; }
    .doc-card strong { color: #1a1f2b; }
    .artifact-label { display: flex; align-items: center; gap: .45rem; margin: 0 0 .5rem; padding: .35rem .5rem; border-radius: var(--radius-sm); background: var(--surface-soft); font-size: .92rem; }
    .markdown-preview .table-wrap { overflow-x: auto; margin: .6rem 0; }
    .markdown-preview table { width: 100%; border-collapse: collapse; font-size: .92rem; }
    .markdown-preview th, .markdown-preview td { padding: .4rem .55rem; border: 1px solid var(--line); text-align: left; vertical-align: top; }
    .markdown-preview th { background: var(--surface-soft); }
    .pdf-frame { width: 100%; height: 75vh; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface-muted); }
    .pdf-open, .youtube-open { display: inline-flex; min-height: 44px; align-items: center; padding: .45rem .8rem; border: 1px solid var(--line); border-radius: var(--radius-sm); }

    #upload-form { display: grid; gap: .65rem; }
    .toolbar form { min-width: 0; flex: 1; }
    .toolbar form .search-box { width: 100%; }
    input, select, button, textarea { min-width: 0; min-height: 44px; padding: .6rem .7rem; border: 1px solid var(--line); border-radius: var(--radius-sm); color: var(--ink); background: var(--surface); }
    input::placeholder, textarea::placeholder { color: var(--ink-faint); }
    button { color: var(--ink); background: var(--surface-muted); }
    button:hover { border-color: #8c959f; background: var(--surface-soft); }
    #upload-actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .45rem; }
    #upload-actions button { width: 100%; color: var(--ink-soft); background: var(--surface); font-size: .82rem; font-weight: 650; touch-action: manipulation; }
    #upload-actions button:hover { border-color: var(--accent); color: var(--accent-strong); background: var(--accent-soft); }
    #text-ingest, #url-ingest { display: grid; gap: .45rem; margin-top: .2rem; padding-top: .75rem; border-top: 1px solid var(--line-soft); }
    #text-ingest label, #url-ingest label { color: var(--ink); font-size: .82rem; font-weight: 700; }
    #text-body { width: 100%; min-height: 7rem; resize: vertical; }
    #text-title { width: 100%; }
    #text-status, #youtube-status { margin: 0; }
    #url-ingest-controls { display: grid; grid-template-columns: minmax(0, 1fr) 5rem; gap: .45rem; }
    #youtube-submit { color: var(--blue); background: var(--blue-soft); }
    #youtube-submit:hover { border-color: var(--blue); }
    #worker-panel { font-size: .84rem; color: var(--ink-soft); }
    #worker-state { display: flex; align-items: center; gap: .4rem; margin: 0; }
    #worker-panel .dot { width: .55rem; height: .55rem; flex: 0 0 auto; border-radius: 50%; background: var(--ink-faint); }
    #worker-panel.online .dot { background: var(--accent); }
    #worker-panel.offline .dot { border: 1px solid var(--ink-faint); background: var(--line); }
    #worker-waiting { margin: .3rem 0 0; padding-left: 1.1rem; color: var(--ink-soft); }
    #worker-waiting li { overflow-wrap: anywhere; }
    #drop-zone { padding: .8rem; border: 2px dashed var(--line); border-radius: var(--radius); color: var(--ink-soft); background: var(--surface-muted); font-size: .82rem; text-align: center; }
    #drop-zone:hover, #drop-zone.dragover { border-color: var(--blue); color: var(--blue); background: var(--blue-soft); }
    .visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
    #upload-selection, #upload-status { margin: 0; overflow-wrap: anywhere; }
    #upload-selection { padding: .45rem .55rem; border-radius: var(--radius-sm); background: var(--surface-muted); }
    #upload-submit { width: 100%; border-color: var(--accent); color: #fff; background: var(--accent); font-weight: 700; }
    #upload-submit:hover { border-color: var(--accent-strong); background: var(--accent-strong); }
    #upload-results { margin: 0; padding-left: 1.25rem; }
    #sensitivity-warning { margin: 0; padding: .75rem; border: 2px solid var(--danger); border-radius: var(--radius); color: #82071e; background: #ffebe9; font-weight: 700; overflow-wrap: anywhere; }
    #sensitivity-warning[hidden] { display: none; }
    ul { list-style: none; padding: 0; margin: 1rem 0 0; }
    .result { display: block; width: 100%; margin: .55rem 0; padding: .75rem; color: var(--ink); background: var(--surface); text-align: left; }
    .result:hover { border-color: #8c959f; }
    .result-title { display: flex; align-items: center; gap: .45rem; margin-bottom: .35rem; }
    .badge { padding: .12rem .45rem; border-radius: 999px; background: var(--surface-soft); font-size: .75rem; font-weight: 700; }
    .grade-A { color: #1a7f37; background: var(--accent-soft); }
    .grade-B { color: #0550ae; background: var(--blue-soft); }
    .grade-C, .grade-D { color: var(--warning); background: var(--warning-soft); }
    .grade-E { color: var(--danger); background: #ffebe9; }
    .ai-badge { color: #8250df; background: #fbefff; }
    .muted { color: var(--ink-soft); font-size: .8rem; }
    .snippet { margin: 0; white-space: pre-wrap; word-break: break-word; }
    #detail { min-height: 12rem; }
    #detail h2 { margin-top: 0; font-size: 1.1rem; }
    #player { width: 100%; margin: .5rem 0 1rem; }
    #original-image { display: block; max-width: 100%; height: auto; margin: .75rem auto; border-radius: var(--radius-sm); }
    #original-image-link { display: block; max-width: 100%; }
    .markdown-preview { min-width: 0; margin: .75rem 0 1rem; padding: .85rem; overflow-wrap: anywhere; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
    .markdown-preview h1, .markdown-preview h2, .markdown-preview h3, .markdown-preview h4, .markdown-preview h5, .markdown-preview h6 { margin: .8rem 0 .4rem; line-height: 1.3; }
    .markdown-preview h1:first-child, .markdown-preview h2:first-child, .markdown-preview h3:first-child { margin-top: 0; }
    .markdown-preview p { margin: .55rem 0; line-height: 1.55; }
    .markdown-preview pre { max-width: 100%; margin: .65rem 0; padding: .7rem; overflow-x: auto; overflow-wrap: anywhere; white-space: pre-wrap; border-radius: var(--radius-sm); background: #24292f; color: #f6f8fa; }
    .markdown-preview code { padding: .08rem .25rem; border-radius: 4px; background: var(--blue-soft); overflow-wrap: anywhere; }
    .markdown-preview pre code { padding: 0; background: transparent; }
    .markdown-preview blockquote { margin: .65rem 0; padding: .35rem .7rem; border-left: 3px solid #8c959f; color: var(--ink-soft); }
    .markdown-preview ul, .markdown-preview ol { margin: .5rem 0; padding-left: 1.35rem; }
    .markdown-preview a { overflow-wrap: anywhere; }
    .preview-error { color: var(--danger); }
    .segment { margin: .45rem 0; padding: .65rem; border-radius: var(--radius-sm); background: var(--surface-muted); }
    .segment button { margin-right: .45rem; padding: .25rem .5rem; }

    @media (max-width: 1200px) {
      main { grid-template-columns: minmax(0, 1fr) 320px; }
      .recent-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    }
    @media (max-width: 980px) {
      main { grid-template-columns: 1fr; }
      .col-side { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
      #attention-section { grid-column: 1 / -1; }
    }
    @media (max-width: 720px) {
      header { padding: .7rem 1rem; }
      header p { display: none; }
      .hero { padding: 1rem 1rem 0; }
      .hero-inner, .project-bar, .toolbar, .toolbar form { width: calc(100vw - 2rem); max-width: calc(100vw - 2rem); min-width: 0; }
      .project-bar { align-items: flex-start; flex-direction: column; gap: .5rem; padding-bottom: .85rem; }
      .project-description { display: block; width: 100%; min-width: 0; max-width: 100%; overflow-wrap: anywhere; word-break: break-word; white-space: normal; text-align: left; }
      .toolbar { align-items: flex-start; flex-direction: column; gap: .45rem; }
      .toolbar form { width: 100%; }
      .search-box { width: 100%; max-width: none; }
      main { width: 100%; padding: .8rem 1rem 2rem; }
      .two-up, .col-side { grid-template-columns: 1fr; }
      #attention-section { grid-column: auto; }
    }
    @media (max-width: 560px) {
      .header-status { display: none; }
      .project-title { font-size: 1.35rem; }
      .project-description { display: block; width: 100%; min-width: 0; max-width: 100%; overflow-wrap: anywhere; word-break: break-word; white-space: normal; }
      .view-tabs { overflow-x: auto; }
      .view-tab { flex: 0 0 auto; padding: 0 .65rem; }
      .search-box { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; padding: .35rem; }
      .search-mark { display: none; }
      .search-box input#query { grid-column: 1 / -1; padding: .5rem .4rem; }
      .search-box select, .search-box button { width: 100%; }
      .search-box button { padding-right: .65rem; padding-left: .65rem; }
      .card-top { display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-areas: "status labels" "status actions"; align-items: start; justify-content: initial; }
      .card-top::before { grid-area: status; }
      .card-top > span:first-child { grid-area: labels; }
      .card-actions { grid-area: actions; width: 100%; min-width: 0; justify-content: flex-end; }
      .recent-card { width: 100%; min-width: 0; }
      #recent-list > li { min-width: 0; }
      .recent-list { grid-template-columns: 1fr; }
      .chips { flex-wrap: nowrap; max-width: 100%; overflow-x: auto; padding-bottom: .85rem; scrollbar-width: none; }
      .chips::-webkit-scrollbar { display: none; }
      .stat-row { grid-template-columns: repeat(3, minmax(0, 1fr)); }
      section { padding: .8rem; }
      #recent-section { padding: 0; }
      #recent-list { padding: .8rem; }
      #upload-actions { grid-template-columns: 1fr 1fr; }
      #upload-actions button:last-child { grid-column: 1 / -1; }
      #url-ingest-controls { grid-template-columns: 1fr; }
      #drop-zone { padding: .65rem; }
    }

    .publish-row { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; margin: .35rem 0 .8rem; }
    .publish-button {
      border: 1px solid #3a4a6b; background: #18203a; color: #cfe0ff;
      border-radius: 999px; padding: .28rem .8rem; font-size: .85rem; cursor: pointer;
    }
    .publish-button[aria-pressed="true"] { background: #1d3a2a; border-color: #2f6b47; color: #b6f0cd; }
    .publish-button[disabled] { opacity: .6; cursor: progress; }
    .published-badge { background: #1d3a2a; color: #b6f0cd; }

    /* ── 지식 보드: 신문·블로그 배열 ─────────────────────────────── */
    .masthead { padding: 1.6rem 1.5rem 1.3rem; background: var(--surface); border-bottom: 1px solid var(--line); }
    .masthead-inner { max-width: 1100px; margin: 0 auto; }
    .masthead-kicker { margin: 0 0 .4rem; color: var(--ink-soft); font-size: .72rem; font-weight: 700; letter-spacing: .1em; }
    .masthead-title { margin: 0; font-size: 1.9rem; line-height: 1.15; letter-spacing: -.035em; }
    .masthead-desc { max-width: 40rem; margin: .45rem 0 0; color: var(--ink-soft); font-size: .9rem; line-height: 1.5; }
    .masthead .view-tabs { margin-top: .9rem; }

    /* main 의 사이드바 격자를 덮는다 — 보드는 한 단으로 읽는 화면이다. */
    .board-main { display: block; max-width: 1100px; margin: 0 auto; padding: 1.6rem 1.5rem 3.5rem; }
    .board-main > * + * { margin-top: 2.2rem; }

    /* 표지: 색면을 먼저 깔고 사진을 그 위에 얹는다. 외부 사진이 막혀도 자리가 남는다. */
    .cover {
      position: relative; display: block; overflow: hidden; border-radius: var(--radius);
      background: linear-gradient(140deg, hsl(var(--cover-hue, 210) 58% 90%), hsl(calc(var(--cover-hue, 210) + 45) 52% 78%));
    }
    .cover img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
    .cover-mark { position: absolute; inset: 0; display: grid; place-items: center; color: hsl(var(--cover-hue, 210) 42% 34%); font-size: 2.4rem; font-weight: 800; opacity: .5; }

    .featured { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); align-items: center; gap: 1.5rem; padding: 1rem; border: 1px solid var(--line-soft); border-radius: var(--radius-lg); background: var(--surface); box-shadow: var(--shadow-card); }
    .featured-cover { display: block; }
    .featured-cover .cover { aspect-ratio: 16 / 10; }
    .featured-cover .cover-mark { font-size: 4rem; }
    .featured-body { min-width: 0; padding-right: .4rem; }
    .featured-title { margin: .1rem 0 .5rem; font-size: 1.55rem; line-height: 1.25; letter-spacing: -.02em; }
    .featured-title a { color: var(--ink); text-decoration: none; }
    .featured-title a:hover { color: var(--blue); text-decoration: underline; }
    .featured-excerpt { display: -webkit-box; margin: 0 0 .7rem; overflow: hidden; color: var(--ink-soft); font-size: .93rem; line-height: 1.65; -webkit-box-orient: vertical; -webkit-line-clamp: 4; }

    .section-head { display: flex; align-items: baseline; justify-content: space-between; gap: .6rem; padding-bottom: .5rem; margin-bottom: 1.1rem; border-bottom: 2px solid var(--ink); }
    .section-title { display: flex; align-items: baseline; gap: .5rem; margin: 0; font-size: 1.1rem; letter-spacing: -.01em; }
    .section-count { font-size: .8rem; font-weight: 500; }
    .post-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.1rem; padding: 0; margin: 0; list-style: none; }
    .post-grid > li { min-width: 0; }
    .post-card { display: flex; height: 100%; min-width: 0; flex-direction: column; overflow: hidden; border: 1px solid var(--line-soft); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow-card); transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease; }
    .post-card:hover { border-color: #8c959f; box-shadow: 0 4px 10px rgba(31, 35, 40, .08); transform: translateY(-1px); }
    .post-cover { display: block; }
    .post-cover .cover { border-radius: 0; aspect-ratio: 16 / 9; }
    .post-body { display: flex; min-width: 0; flex: 1; flex-direction: column; padding: .85rem .9rem 1rem; }
    .post-meta { display: flex; align-items: center; gap: .35rem; margin: 0 0 .45rem; color: var(--ink-faint); font-size: .74rem; }
    .post-meta time { margin-left: auto; font-variant-numeric: tabular-nums; }
    .post-title { margin: 0 0 .45rem; font-size: 1rem; line-height: 1.4; }
    .post-title a { color: var(--ink); text-decoration: none; }
    .post-title a:hover { color: var(--blue); text-decoration: underline; }
    .post-excerpt { display: -webkit-box; margin: 0; overflow: hidden; color: var(--ink-soft); font-size: .85rem; line-height: 1.6; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
    .post-foot { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin: .8rem 0 0; padding-top: .55rem; border-top: 1px solid var(--line-soft); color: var(--ink-faint); font-size: .74rem; }
    .post-file { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .featured .post-foot { border-top: 0; }
    .section-more { display: block; width: 100%; margin-top: 1.1rem; padding: .55rem; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); color: var(--ink-soft); font-size: .84rem; }
    .section-more:hover { border-color: #8c959f; color: var(--ink); background: var(--surface-muted); }

    .stats-strip { padding-top: 1.4rem; border-top: 1px solid var(--line); }
    .stats-strip .stat-row { justify-content: flex-start; gap: 2.5rem; }

    @media (max-width: 980px) {
      .post-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    }
    @media (max-width: 720px) {
      .masthead { padding: 1.2rem 1rem 1rem; }
      .masthead-title { font-size: 1.5rem; }
      .board-main { padding: 1.2rem 1rem 2.5rem; }
      .featured { grid-template-columns: 1fr; gap: 1rem; }
      .featured-title { font-size: 1.3rem; }
      .post-grid { grid-template-columns: 1fr; }
    }

    .detail-cover { display: block; width: 100%; max-width: 640px; margin: .2rem 0 1rem; border: 1px solid var(--line-soft); border-radius: var(--radius); }
