<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>data-pantry 님의 블로그</title>
    <link>https://data-pantry.tistory.com/</link>
    <description>data-pantry 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Wed, 27 May 2026 00:31:09 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>data-pantry</managingEditor>
    <item>
      <title>[상하수도기술사 문제풀이] 제93회 상하수도기술사 - 제1교시 (문제 1, 문제 2) 하수도 종합계획, 제 3의 물산업</title>
      <link>https://data-pantry.tistory.com/20</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
  &lt;meta charset=&quot;UTF-8&quot;&gt;
  &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
  &lt;title&gt;제93회 상하수도기술사 프리미엄 해설&lt;/title&gt;
  &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/static/pretendard.css&quot;&gt;
  &lt;script id=&quot;MathJax-script&quot; async src=&quot;https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js&quot;&gt;&lt;/script&gt;
  &lt;style&gt;
    :root{
      --pe-primary:#1e3a8a;--pe-secondary:#2563eb;--pe-accent:#10b981;
      --pe-warning:#f59e0b;--pe-bg-light:#f8fafc;--pe-bg-dark:#f1f5f9;
      --pe-text:#1e293b;--pe-border:#cbd5e1;
    }
    .pe-wrapper{font-family:'Pretendard',-apple-system,BlinkMacSystemFont,system-ui,sans-serif;line-height:1.75;color:var(--pe-text);max-width:760px;margin:0 auto;padding:20px 15px;word-break:keep-all;letter-spacing:-0.02em;}
    /* 상단 sticky 진행 바 */
    .pe-sticky-bar{position:sticky;top:0;z-index:100;background:#fff;border-bottom:1px solid var(--pe-border);padding:10px 16px;display:flex;align-items:center;gap:12px;font-size:.8rem;color:var(--pe-primary);font-weight:600;}
    .pe-progress-track{flex:1;height:6px;background:var(--pe-bg-dark);border-radius:99px;overflow:hidden;}
    .pe-progress-fill{height:100%;background:linear-gradient(90deg,var(--pe-secondary),var(--pe-accent));border-radius:99px;transition:width .4s ease;}
    /* 헤더 */
    .pe-main-title{background:linear-gradient(135deg,var(--pe-primary) 0%,var(--pe-secondary) 100%);color:#fff;padding:26px 22px;border-radius:12px;margin-bottom:30px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1);}
    .pe-main-title h1{margin:0;font-size:1.55rem;font-weight:700;}
    .pe-meta-badge{display:inline-block;background:rgba(255,255,255,.2);padding:4px 10px;border-radius:20px;font-size:.75rem;margin-top:10px;font-weight:500;}
    /* 타이틀·배지 */
    .pe-sub-title{color:var(--pe-primary);font-size:1.3rem;font-weight:700;border-left:5px solid var(--pe-secondary);padding-left:12px;margin:45px 0 20px;}
    .pe-section-title{display:flex;align-items:center;font-size:1.1rem;font-weight:600;color:#0f172a;margin:30px 0 12px;}
    .pe-badge{background:#eff6ff;color:var(--pe-secondary);width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;margin-right:10px;font-size:.85rem;font-weight:800;box-shadow:0 2px 4px rgba(37,99,235,.1);}
    /* 콘텐츠 박스 */
    .pe-content-box{background:var(--pe-bg-light);border:1px solid var(--pe-border);padding:18px 20px;border-radius:10px;margin-bottom:20px;font-size:.95rem;}
    .pe-alert-box{background:#fffbeb;border:1px solid #fde68a;border-left:5px solid var(--pe-warning);padding:16px;border-radius:0 8px 8px 0;margin:20px 0;font-size:.9rem;}
    .pe-exam-box{background:#fff;border:1px solid var(--pe-border);border-radius:10px;padding:20px;font-size:.95rem;box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.02);}
    /* 수식 전용 박스 */
    .pe-formula-box{background:#eff6ff;border-left:4px solid var(--pe-secondary);padding:14px 18px;border-radius:0 8px 8px 0;margin:16px 0;overflow-x:auto;}
    /* 키워드 강조 */
    .pe-keyword{color:var(--pe-primary);font-weight:700;border-bottom:1.5px solid var(--pe-accent);}
    /* 목록 */
    .pe-ul{list-style:none;padding-left:0;margin:0;}
    .pe-ul&gt;li{margin-bottom:12px;position:relative;padding-left:15px;}
    .pe-ul&gt;li::before{content:&quot;•&quot;;color:var(--pe-secondary);font-weight:bold;position:absolute;left:0;}
    .pe-sub-ul{list-style:none;padding-left:18px;margin-top:4px;}
    .pe-sub-ul&gt;li{position:relative;padding-left:12px;margin-bottom:4px;color:#475569;}
    .pe-sub-ul&gt;li::before{content:&quot;-&quot;;color:#94a3b8;position:absolute;left:0;}
    /* 도식 */
    .pe-diagram-container{display:flex;align-items:stretch;justify-content:center;gap:12px;background:var(--pe-bg-dark);padding:20px;border-radius:12px;margin:20px 0;}
    .pe-diagram-card{background:#fff;border:1px solid var(--pe-border);padding:15px;border-radius:8px;flex:1;min-height:80px;text-align:center;font-size:.85rem;font-weight:600;box-shadow:0 2px 4px rgba(0,0,0,.04);transition:transform .2s,box-shadow .2s;white-space:pre-line;display:flex;flex-direction:column;justify-content:center;}
    .pe-diagram-card:hover{transform:translateY(-3px);box-shadow:0 6px 12px rgba(0,0,0,.08);}
    .pe-diagram-arrow{display:flex;align-items:center;justify-content:center;color:var(--pe-secondary);font-weight:bold;font-size:1.2rem;}
    /* 테이블 */
    .pe-table-responsive{width:100%;overflow-x:auto;margin:20px 0;border-radius:8px;border:1px solid var(--pe-border);}
    .pe-table{width:100%;border-collapse:collapse;font-size:.9rem;text-align:left;min-width:500px;}
    .pe-table th{background:var(--pe-bg-dark);border-bottom:2px solid var(--pe-border);padding:12px;font-weight:700;color:var(--pe-primary);}
    .pe-table td{padding:12px;border-bottom:1px solid var(--pe-border);background:#fff;}
    .pe-table td.num{text-align:right;}
    .pe-table tr:nth-child(even) td{background:var(--pe-bg-light);}
    /* 아코디언 퀴즈 */
    .pe-details{background:#fff;border:1px solid var(--pe-border);border-radius:8px;margin-bottom:12px;box-shadow:0 2px 4px rgba(0,0,0,.02);transition:border-color .2s;}
    .pe-details[open]{border-color:var(--pe-secondary);}
    .pe-summary{padding:14px 16px;font-weight:600;color:var(--pe-primary);cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;background:var(--pe-bg-light);user-select:none;}
    .pe-summary::-webkit-details-marker{display:none;}
    .pe-summary::after{content:'▼';color:var(--pe-secondary);font-size:.8rem;transition:transform .3s ease;}
    .pe-details[open] .pe-summary::after{transform:rotate(180deg);}
    .pe-quiz-content{padding:16px;background:#fff;border-top:1px solid var(--pe-border);font-size:.95rem;animation:fadeIn .3s ease-in-out;}
    /* 하단 트래커 */
    .pe-tracker{background:#0f172a;color:#94a3b8;padding:16px;border-radius:8px;font-size:.85rem;margin-top:40px;display:flex;justify-content:space-between;align-items:center;}
    @keyframes fadeIn{from{opacity:0;transform:translateY(-5px);}to{opacity:1;transform:translateY(0);}}
    @media(max-width:640px){
      .pe-diagram-container{flex-direction:column;}
      .pe-diagram-arrow{transform:rotate(90deg);padding:5px 0;}
      .pe-main-title h1{font-size:1.3rem;}
      .pe-table-responsive{border-radius:0;}
      .pe-summary{padding:18px 16px;}
    }
    @media print{
      .pe-sticky-bar,.pe-details,.pe-tracker{display:none!important;}
      .pe-wrapper{max-width:100%;color:#000;}
      .pe-main-title{background:none!important;color:#000!important;border:2px solid #000;box-shadow:none;}
      .pe-sub-title{border-left-color:#000!important;color:#000!important;}
      .pe-diagram-card{page-break-inside:avoid;border:1px solid #000;box-shadow:none;}
    }
  &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div class=&quot;pe-wrapper&quot;&gt;

  &lt;!-- 메인 헤더 --&gt;
  &lt;div class=&quot;pe-main-title&quot;&gt;
    &lt;h1&gt;제93회 상하수도기술사 기출해설&lt;/h1&gt;
    &lt;div class=&quot;pe-meta-badge&quot;&gt;전문가 심층 분석 및 최신 KDS 기준 준수&lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 오늘의 문제 1 --&gt;
  &lt;h2 class=&quot;pe-sub-title&quot;&gt;오늘의 문제 1: [1교시·1번] — 국가 하수도종합계획&lt;/h2&gt;

  &lt;div class=&quot;pe-section-title&quot;&gt;
    &lt;span class=&quot;pe-badge&quot;&gt;1&lt;/span&gt;
    출제 의도 및 배경 분석
  &lt;/div&gt;
  &lt;div class=&quot;pe-content-box&quot;&gt;
    하수도법 제4조에 의거하여 환경부장관이 수립하는 하수도 분야 최상위 종합 행정계획인 &lt;span class=&quot;pe-keyword&quot;&gt;국가하수도종합계획&lt;/span&gt;의 정체성과 수립 체계를 묻는 문제임. 최근 수립·의결된 &lt;strong&gt;제3차 국가하수도종합계획(2026~2035년)&lt;/strong&gt;에 발맞추어, 단순 위생 보급률 제고에서 벗어나 &lt;span class=&quot;pe-keyword&quot;&gt;기후위기 대응, 탄소중립 실현, 자산관리 및 지속가능한 재정 구조&lt;/span&gt;로의 패러다임 변화를 기술하는 것이 고득점의 핵심임.
  &lt;/div&gt;

  &lt;div class=&quot;pe-section-title&quot;&gt;
    &lt;span class=&quot;pe-badge&quot;&gt;2&lt;/span&gt;
    실전 압축 답안
  &lt;/div&gt;
  &lt;div class=&quot;pe-exam-box&quot;&gt;
    &lt;ul class=&quot;pe-ul&quot;&gt;
      &lt;li&gt;&lt;strong&gt;국가하수도종합계획의 개요 및 법적 수립 근거&lt;/strong&gt;
        &lt;ul class=&quot;pe-sub-ul&quot;&gt;
          &lt;li&gt;&lt;strong&gt;법적 근거:&lt;/strong&gt; 하수도법 제4조(국가하수도종합계획의 수립)&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;수립권자 및 주기:&lt;/strong&gt; 환경부장관이 10년 단위로 수립 (필요 시 5년마다 타당성 검토 후 변경)&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;계획의 성격:&lt;/strong&gt; 전국 하수도정비의 기본 방향 및 투자 계획을 제시하는 최상위 행정계획&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;하부 계획과의 연계:&lt;/strong&gt; 유역하수도정비계획(지방환경청 수립) 및 하수도정비기본계획(지자체 수립)의 수립 지침 역할 수행&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;제3차 국가하수도종합계획(2026~2035)의 핵심 추진 방향&lt;/strong&gt;
        &lt;ul class=&quot;pe-sub-ul&quot;&gt;
          &lt;li&gt;&lt;strong&gt;기후위기 대응 우수배제 안전망 강화:&lt;/strong&gt; 강우 방재 설계빈도 상향(기존 관로 10~30년 → 기후변화 고려 가이드라인 적용), 스마트 하수도관망 및 도시침수 대응 시스템 구축&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;탄소중립 및 에너지 자립화:&lt;/strong&gt; 유기성 폐자원을 활용한 바이오가스법 이행, 하수처리장 에너지 자립률 제고 및 하수 열에너지 회수 다각화&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;선제적 자산관리 체계(Asset Management) 도입:&lt;/strong&gt; 30년 이상 경과한 노후 관로 및 처리시설의 정밀진단, 노후화 비율 예측에 따른 선제적 개량 재원 조달 계획 수립&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;하수처리수 재이용 다각화:&lt;/strong&gt; 대체수자원 확보를 위한 고도 처리 및 첨단 산업(반도체, 제철 등) 공업용수로 공급 확대&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;

  &lt;div class=&quot;pe-alert-box&quot;&gt;
      &lt;strong&gt;2026년 기준 변경 및 차별화 실무 포인트&lt;/strong&gt;&lt;br&gt;
    2026년 국가물관리위원회에서 의결된 &lt;strong&gt;제3차 국가하수도종합계획(2026~2035)&lt;/strong&gt;의 핵심은 &lt;strong&gt;'바이오가스법'에 따른 공공 의무생산 목표 준수&lt;/strong&gt; 및 &lt;strong&gt;'하수도 자산관리 가이드라인' 마련&lt;/strong&gt;입니다. 단순 시설 확충에서 탈피하여, 관리 주체의 재정 현실화(요금 현실화율 제고)와 장기 노후화 대비 적립금 제도 도입 등 자산 보전 관점의 정책 연계를 언급하면 강력한 차별화가 가능합니다.
  &lt;/div&gt;

  &lt;div class=&quot;pe-section-title&quot;&gt;
    &lt;span class=&quot;pe-badge&quot;&gt;3&lt;/span&gt;
    필수 도식
  &lt;/div&gt;
  &lt;div class=&quot;pe-diagram-container&quot;&gt;
    &lt;div class=&quot;pe-diagram-card&quot;&gt;
      &lt;strong&gt;최상위 계획&lt;/strong&gt;
      국가하수도종합계획
      (10년 주기, 환경부)
    &lt;/div&gt;
    &lt;div class=&quot;pe-diagram-arrow&quot;&gt;➔&lt;/div&gt;
    &lt;div class=&quot;pe-diagram-card&quot;&gt;
      &lt;strong&gt;유역 단위 계획&lt;/strong&gt;
      유역하수도정비계획
      (지방환경청)
    &lt;/div&gt;
    &lt;div class=&quot;pe-diagram-arrow&quot;&gt;➔&lt;/div&gt;
    &lt;div class=&quot;pe-diagram-card&quot;&gt;
      &lt;strong&gt;실행 계획&lt;/strong&gt;
      하수도정비기본계획
      (20년 단위, 지자체)
    &lt;/div&gt;
  &lt;/div&gt;


  &lt;!-- 오늘의 문제 2 --&gt;
  &lt;h2 class=&quot;pe-sub-title&quot;&gt;오늘의 문제 2: [1교시·2번] — 제3의 물산업&lt;/h2&gt;

  &lt;div class=&quot;pe-section-title&quot;&gt;
    &lt;span class=&quot;pe-badge&quot;&gt;1&lt;/span&gt;
    출제 의도 및 배경 분석
  &lt;/div&gt;
  &lt;div class=&quot;pe-content-box&quot;&gt;
    전통적인 상수의 생산·공급(제1의 물산업)과 하수의 이송·처리(제2의 물산업) 단계를 넘어, 기후변화에 따른 물 부족 해결과 자원순환을 목표로 하는 &lt;span class=&quot;pe-keyword&quot;&gt;물 재이용(Water Reuse), 중수도, 해수담수화, 대체수자원 개발&lt;/span&gt;을 총칭하는 &lt;span class=&quot;pe-keyword&quot;&gt;제3의 물산업&lt;/span&gt;에 대한 핵심 정의와 시장성 및 기술 동향을 파악하고 있는지 묻는 기출 문항임.
  &lt;/div&gt;

  &lt;div class=&quot;pe-section-title&quot;&gt;
    &lt;span class=&quot;pe-badge&quot;&gt;2&lt;/span&gt;
    실전 압축 답안
  &lt;/div&gt;
  &lt;div class=&quot;pe-exam-box&quot;&gt;
    &lt;ul class=&quot;pe-ul&quot;&gt;
      &lt;li&gt;&lt;strong&gt;제3의 물산업의 정의 및 범위&lt;/strong&gt;
        &lt;ul class=&quot;pe-sub-ul&quot;&gt;
          &lt;li&gt;&lt;strong&gt;정의:&lt;/strong&gt; 선형적인 상·하수도 구조에서 탈피하여 오염된 물을 고도 수처리 기술을 통해 순환형 수자원으로 재생하거나 대체 수자원을 개발·공급하는 융복합 고부가가치 산업&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;주요 분야:&lt;/strong&gt; 하수처리수 재이용, 중수도(Greywater) 시스템, 빗물이용시설, 해수담수화(Desalination)&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;핵심 기술적 구성 요소&lt;/strong&gt;
        &lt;ul class=&quot;pe-sub-ul&quot;&gt;
          &lt;li&gt;&lt;strong&gt;분리막 공정(Membrane Technology):&lt;/strong&gt; 초순수급 재이용수 제조를 위한 전처리막(MF/UF) 및 본처리막(RO/NF) 시스템 고도화&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;에너지 회수 장치(PX, Pressure Exchanger):&lt;/strong&gt; 해수담수화 RO 공정의 전력 소비량 감축을 위한 고율 에너지 회수 설계&lt;/li&gt;
          &lt;li&gt;&lt;strong&gt;물-에너지 넥서스(Water-Energy Nexus):&lt;/strong&gt; 수처리 과정의 탄소배출 최소화를 위한 지능형 송배수 및 재생에너지 생산 하이브리드 제어&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;성장 배경 및 필요성&lt;/strong&gt;
        &lt;ul class=&quot;pe-sub-ul&quot;&gt;
          &lt;li&gt;기후변화에 따른 극단적 가뭄 빈도 증가로 인한 수자원 불균형 해소&lt;/li&gt;
          &lt;li&gt;글로벌 대기업의 ESG 경영 강화(Water Stewardship) 및 산업용수 수요 가중&lt;/li&gt;
          &lt;li&gt;환경 오염 부하 저감에 따른 하천 환경 유량 확보 기여&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/div&gt;

  &lt;div class=&quot;pe-alert-box&quot;&gt;
      &lt;strong&gt;2026년 기준 변경 및 차별화 실무 포인트&lt;/strong&gt;&lt;br&gt;
    최근 &lt;strong&gt;반도체 메가 클러스터(예: 용인)&lt;/strong&gt;에 공급할 공업용수 확보방안으로 하수처리수 재이용수가 적극 도입되고 있습니다. 또한 2026년 상반기에 의결된 &lt;strong&gt;제2차 물 재이용 기본계획 변경(안)&lt;/strong&gt;은 첨단 산업 공업용수 공급을 위한 분리막 기반 고도처리 인프라 확충에 중점을 두고 있습니다. 답안 작성 시 &lt;strong&gt;'반도체 초순수(Ultra Pure Water) 국산화 사업 및 첨단 산업 연계 하수 재이용 비즈니스 모델'&lt;/strong&gt;을 기술하면 최고 수준의 가점을 획득할 수 있습니다.
  &lt;/div&gt;

  &lt;div class=&quot;pe-section-title&quot;&gt;
    &lt;span class=&quot;pe-badge&quot;&gt;3&lt;/span&gt;
    필수 도식
  &lt;/div&gt;
  &lt;div class=&quot;pe-diagram-container&quot;&gt;
    &lt;div class=&quot;pe-diagram-card&quot;&gt;
      &lt;strong&gt;하수처리 방류수&lt;/strong&gt;
      BOD 기준 만족수
    &lt;/div&gt;
    &lt;div class=&quot;pe-diagram-arrow&quot;&gt;➔&lt;/div&gt;
    &lt;div class=&quot;pe-diagram-card&quot;&gt;
      &lt;strong&gt;고도막여과 (MF/RO)&lt;/strong&gt;
      부유물 및 이온 제거
    &lt;/div&gt;
    &lt;div class=&quot;pe-diagram-arrow&quot;&gt;➔&lt;/div&gt;
    &lt;div class=&quot;pe-diagram-card&quot;&gt;
      &lt;strong&gt;제3의 대체수자원&lt;/strong&gt;
      반도체 공업용수 / 초순수 원수
    &lt;/div&gt;
  &lt;/div&gt;

&lt;/div&gt;

&lt;!-- 하단 공통 컴포넌트 --&gt;
&lt;div class=&quot;pe-sticky-bar&quot;&gt;
  &lt;span&gt;진행률: 제93회 1교시 1~2번 해설 완료&lt;/span&gt;
  &lt;div class=&quot;pe-progress-track&quot;&gt;
    &lt;div class=&quot;pe-progress-fill&quot; style=&quot;width: 15%;&quot;&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;span&gt;15%&lt;/span&gt;
&lt;/div&gt;

&lt;div class=&quot;pe-wrapper&quot; style=&quot;margin-top:0; padding-top:0;&quot;&gt;
  &lt;h2 class=&quot;pe-sub-title&quot;&gt;데일리 핵심 용어집&lt;/h2&gt;
  &lt;div class=&quot;pe-table-responsive&quot;&gt;
    &lt;table class=&quot;pe-table&quot;&gt;
      &lt;thead&gt;
        &lt;tr&gt;
          &lt;th&gt;용어명&lt;/th&gt;
          &lt;th&gt;정의 및 핵심 내용&lt;/th&gt;
          &lt;th&gt;최신 동향 / 기준&lt;/th&gt;
        &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;국가하수도종합계획&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;하수도법 제4조에 의거, 환경부장관이 10년 단위로 수립하는 하수도정비의 국가 단위 최상위 행정계획&lt;/td&gt;
          &lt;td&gt;제3차 계획(2026~2035)에 기후변화 홍수 방어 대책, 탄소중립, 자산관리 정착 반영&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;제3의 물산업&lt;/strong&gt;&lt;/td&gt;
          &lt;td&gt;상·하수도를 넘어서 하수 재이용, 중수도, 해수담수화 등 순환형/대체 수자원을 공급 및 관리하는 차세대 물 산업&lt;/td&gt;
          &lt;td&gt;용인 반도체 클러스터 등 고품질 산업용수 확보 수단 및 초순수 국산화와 연계&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;
  &lt;/div&gt;

  &lt;h2 class=&quot;pe-sub-title&quot;&gt;3분 복습 퀴즈&lt;/h2&gt;
  &lt;details class=&quot;pe-details&quot;&gt;
    &lt;summary class=&quot;pe-summary&quot;&gt;Q1. 국가하수도종합계획은 어떤 법률에 따르며, 수립 주기 및 권한자는 어떻게 됩니까?&lt;/summary&gt;
    &lt;div class=&quot;pe-quiz-content&quot;&gt;
      &lt;strong&gt;A1.&lt;/strong&gt; 하수도법 제4조에 의거하여, &lt;strong&gt;환경부장관&lt;/strong&gt;이 &lt;strong&gt;10년 주기&lt;/strong&gt;로 수립합니다. (5년마다 타당성을 재검토하여 필요한 경우 계획을 변경할 수 있습니다.)
    &lt;/div&gt;
  &lt;/details&gt;
  &lt;details class=&quot;pe-details&quot;&gt;
    &lt;summary class=&quot;pe-summary&quot;&gt;Q2. 제3의 물산업의 대표적인 네 가지 대상 분야는 무엇입니까?&lt;/summary&gt;
    &lt;div class=&quot;pe-quiz-content&quot;&gt;
      &lt;strong&gt;A2.&lt;/strong&gt; &lt;strong&gt;하수처리수 재이용, 중수도 시스템, 빗물이용시설, 해수담수화&lt;/strong&gt;가 제3의 물산업을 구성하는 대표 분야입니다.
    &lt;/div&gt;
  &lt;/details&gt;

  &lt;!-- 트래커 --&gt;
  &lt;div class=&quot;pe-tracker&quot;&gt;
    &lt;div&gt;현재 문항: 1교시 2번&lt;/div&gt;
    &lt;div&gt;다음 대기 문항: 1교시 3번 MFC(Microbial Fuel Cell)&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/body&gt;
&lt;/html&gt;</description>
      <category>상하수도공학/상하수도 기술사 해설</category>
      <category>기술사시험 #기술사공부 #하수도종합계획 #제3의물산업 #기술사기출해설</category>
      <author>data-pantry</author>
      <guid isPermaLink="true">https://data-pantry.tistory.com/20</guid>
      <comments>https://data-pantry.tistory.com/20#entry20comment</comments>
      <pubDate>Thu, 21 May 2026 15:57:40 +0900</pubDate>
    </item>
    <item>
      <title>[바이브코딩] 이미지축소 웹앱 만들기(2)</title>
      <link>https://data-pantry.tistory.com/18</link>
      <description>&lt;p data-end=&quot;203&quot; data-start=&quot;167&quot; data-ke-size=&quot;size16&quot;&gt;이전에 소개드렸던 &lt;b&gt;이미지 축소(리사이징) 프로그램&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-end=&quot;334&quot; data-start=&quot;205&quot; data-ke-size=&quot;size16&quot;&gt;직접 바이브코딩 방식으로 개발하면서 실제로 사람들이 자주 사용할 수 있는 방향으로 계속 개선해 보고 있습니다. 사진 용량 줄이기, 크기 조절, 업로드 제한 맞추기 등 실생활에서 꽤 자주 쓰이는 기능이라 생각보다 활용도가 높더라고요.&lt;/p&gt;
&lt;p data-end=&quot;430&quot; data-start=&quot;336&quot; data-ke-size=&quot;size16&quot;&gt;사용하시면서 &lt;b&gt;불편한 점, 추가됐으면 하는 기능, 오류나 개선 아이디어&lt;/b&gt;가 있다면 댓글로 편하게 남겨주세요. 실제 피드백을 반영해서 조금씩 업데이트해볼 예정입니다.&lt;/p&gt;
&lt;p data-end=&quot;460&quot; data-start=&quot;432&quot; data-ke-size=&quot;size16&quot;&gt;많이 활용해보시고, 솔직한 피드백 부탁드립니다  &lt;/p&gt;

&lt;div style=&quot;width:100%; max-width:900px; margin:0 auto;&quot;&gt;
  &lt;iframe
    id=&quot;imagefix-frame&quot;
    src=&quot;https://xoggnseeeww.github.io/imagefix/&quot;
    width=&quot;100%&quot;
    height=&quot;750&quot;
    style=&quot;border:none; border-radius:8px; display:block;&quot;
    loading=&quot;lazy&quot;
    title=&quot;ImageFix&quot;&gt;
  &lt;/iframe&gt;
&lt;/div&gt;
&lt;script&gt;
  // 모바일 viewport에 따라 iframe 높이 조정
  (function() {
    var frame = document.getElementById('imagefix-frame');
    function resize() {
      var h = window.innerWidth &lt; 600 ? 850 : 720;
      frame.style.height = h + 'px';
    }
    resize();
    window.addEventListener('resize', resize);
  })();
&lt;/script&gt;</description>
      <category>바이브코딩/프로그램</category>
      <category>ai</category>
      <category>AI개발</category>
      <category>개발</category>
      <category>바이브코딩</category>
      <category>비전공자</category>
      <category>사진</category>
      <category>사진사이즈</category>
      <category>사진용량줄이기</category>
      <category>사진축소</category>
      <category>웹앱</category>
      <author>data-pantry</author>
      <guid isPermaLink="true">https://data-pantry.tistory.com/18</guid>
      <comments>https://data-pantry.tistory.com/18#entry18comment</comments>
      <pubDate>Fri, 15 May 2026 18:20:28 +0900</pubDate>
    </item>
    <item>
      <title>[바이브코딩] 이미지축소 웹앱 만들기(1)</title>
      <link>https://data-pantry.tistory.com/19</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt; 스도쿠 프로그램 제작 이후, 더 많은 사람이 사용할 수 있는 이미지 리사이징 웹앱 '바이브코딩'을 개발한 과정입니다. 제미나이와 GPT를 교차 활용한 프롬프트 고도화 전략과 단계별 개발론을 통해 서버 없는 고성능 이미지 편집 프로그램을 완성한 후기를 공유합니다.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size26&quot;&gt;[바이브코딩] 사진 크기&amp;middot;사이즈 조절 웹앱 만들기&lt;/h2&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4&quot;&gt;비전문가도 AI와 함께 웹앱을 만들 수 있을까?&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&quot;사람들이 실제로 많이 쓰는 웹앱 하나 만들어보자.&quot; 이 생각에서 이번 프로젝트가 시작됐습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;이전에 AI의 도움을 받아 간단한 프로그램을 하나 만들어본 경험이 있었는데, 다음에는 '실제로 사람들이 자주 사용할 만한 기능'이 뭐가 있을지 고민하게 되더군요.&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;요즘 일상생활을 하다 보면 사진 용량 때문에 난감한 순간이 꽤 많습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;8&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;카카오톡으로 원본 사진 보낼 때의 용량 압박&lt;/li&gt;
&lt;li&gt;이력서나 공공기관 서류 제출 시 깐깐한 이미지 크기 제한&lt;/li&gt;
&lt;li&gt;블로그 포스팅 업로드 시 페이지 속도 최적화&lt;/li&gt;
&lt;li&gt;스마트폰 용량 꽉 찼을 때 사진 용량 줄이기&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;생각보다 '사진 크기 줄이기'는 사람들이 아주 자주 검색하고 필요로 하는 기능이었습니다. 그래서 이번에는 사진 크기와 사이즈를 조절하는 웹앱을 직접 만들어보기로 했습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;단, 단순히 &quot;사진 용량만 줄이는 기능 하나&quot; 덜렁 있는 게 아니라, 조금 더 실사용자 중심으로 접근하고 싶었습니다. 그래서 제가 처음 AI에게 던진 질문은 단순한 개발(코딩) 요청이 아니었습니다.&lt;/p&gt;
&lt;blockquote data-path-to-node=&quot;11&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;11,0&quot; data-ke-size=&quot;size16&quot;&gt;&quot;사진 크기 줄이기, 사이즈 줄이기, 자르기 기능이 모두 들어간 웹앱을 만들고 싶은데, 어떤 순서로 어떻게 진행하면 좋을까?&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-path-to-node=&quot;12&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size23&quot;&gt;무작정 코딩부터 시키지 않았다&lt;/h3&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;예전의 저였다면 아마 이런 식으로 물어봤을 겁니다. &lt;i data-index-in-node=&quot;29&quot; data-path-to-node=&quot;14&quot;&gt;&quot;이미지 리사이즈 하는 기능 만들어줘.&quot;&lt;/i&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;그런데 이번에는 접근 방식을 완전히 바꿨습니다. 본격적인 코딩을 시작하기 전에 다음과 같은 큰 틀부터 설계하기 시작했습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 기능이 필수적으로 필요한지&lt;/li&gt;
&lt;li&gt;사용자 입장에서 어떤 흐름이 편할지&lt;/li&gt;
&lt;li&gt;화면(UI)은 어떻게 구성해야 깔끔할지&lt;/li&gt;
&lt;li&gt;전체적인 작업은 어떤 단계로 진행해야 하는지&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;AI에게 단순히 코드만 뱉어내라고 한 게 아니라, &quot;이 프로젝트를 어떻게 이끌어가야 할까?&quot;라는 컨설팅부터 받은 셈이죠. 그러자 의외로 꽤 체계적이고 전문적인 답변이 돌아왔습니다. 기능의 우선순위, 개발 순서, 구현 방식까지 큰 윤곽을 AI가 먼저 잡아주더군요.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;18&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;19&quot; data-ke-size=&quot;size23&quot;&gt;한 번에 다 만들지 마라: 단계별 진행의 마법&lt;/h3&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;어느 정도 큰 그림이 잡혔을 때, AI가 저에게 아주 중요한 제안을 하나 했습니다. &lt;b data-index-in-node=&quot;47&quot; data-path-to-node=&quot;20&quot;&gt;&quot;이걸 한 번에 다 만들려고 하지 말고, 단계를 쪼개서 진행하는 게 좋습니다.&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;생각해 보니 정말 맞는 말이었습니다. 저 같은 비전문가 입장에서 가장 무서운 건, 한 번에 너무 많은 코드를 받아 넣었다가 어디서 에러가 났는지도 모른 채 프로젝트가 꼬여버리는 상황이니까요. 그래서 전체 개발 과정을 이렇게 쪼개기 시작했습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;22&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,0,0&quot;&gt;1단계:&lt;/b&gt; 기본 이미지 업로드 기능 구현&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,1,0&quot;&gt;2단계:&lt;/b&gt; 이미지 크기 조절(리사이징) 알고리즘 적용&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,2,0&quot;&gt;3단계:&lt;/b&gt; 용량 최적화 처리&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,3,0&quot;&gt;4단계:&lt;/b&gt; 사용자가 직접 영역을 지정하는 사진 자르기(Crop) 추가&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,4,0&quot;&gt;5단계:&lt;/b&gt; 전체적인 UI 개선 및 다듬기&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;22,5,0&quot;&gt;6단계:&lt;/b&gt; 오류 수정 및 브라우저 호환성(안정화) 테스트&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 눈앞의 미션을 작게 나눠놓으니, 시작 전의 막막함이 훨씬 덜했습니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;24&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;25&quot; data-ke-size=&quot;size23&quot;&gt;프롬프트도 그냥 쓰지 않았다 (초안 &amp;rarr; 피드백 &amp;rarr; 개선)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;여기서부터 이번 바이브코딩의 가장 재밌는 점이 나옵니다. &lt;i data-index-in-node=&quot;32&quot; data-path-to-node=&quot;26&quot;&gt;&quot;어차피 단계를 나눴으니, 이제 그 단계마다 그냥 AI한테 짜달라고 시키면 되는 거 아냐?&quot;&lt;/i&gt; 처음엔 저도 그렇게 생각했습니다. 그런데 막상 해보니 &lt;b data-index-in-node=&quot;114&quot; data-path-to-node=&quot;26&quot;&gt;'프롬프트(명령어)'의 품질에 따라 결과물의 수준이 하늘과 땅 차이&lt;/b&gt;로 달라지더군요.&lt;/p&gt;
&lt;p data-path-to-node=&quot;27&quot; data-ke-size=&quot;size16&quot;&gt;그래서 이번엔 이런 필살기를 썼습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;28&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;먼저 제가 원하는 기능을 기준으로 1차 프롬프트 초안을 씁니다.&lt;/li&gt;
&lt;li&gt;그리고 그 프롬프트를 다른 AI(GPT 등)에게 들고 가서 검토를 받습니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;28,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i data-index-in-node=&quot;0&quot; data-path-to-node=&quot;28,1,1,0,0&quot;&gt;&quot;내가 이런 코드를 짜달라고 할 건데, 이 프롬프트에서 부족한 점이 뭐야?&quot;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i data-index-in-node=&quot;0&quot; data-path-to-node=&quot;28,1,1,1,0&quot;&gt;&quot;더 완벽한 결과물이 나오게 이 명령어를 수정해 줘.&quot;&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;그렇게 AI의 피드백을 받아 뾰족하게 다듬어진 프롬프트를 실제 작업에 투입합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-path-to-node=&quot;29&quot; data-ke-size=&quot;size16&quot;&gt;쉽게 말해, &lt;b data-index-in-node=&quot;7&quot; data-path-to-node=&quot;29&quot;&gt;코드만 AI에게 맡긴 게 아니라 'AI를 가장 잘 부려먹는 방법'까지 AI와 함께 설계&lt;/b&gt;한 셈입니다. 이 과정이 결과물의 퀄리티를 전문가 수준으로 끌어올리는 데 결정적인 역할을 했습니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;30&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;31&quot; data-ke-size=&quot;size23&quot;&gt;개발하면서 계속 수정하고 업데이트하다&lt;/h3&gt;
&lt;p data-path-to-node=&quot;32&quot; data-ke-size=&quot;size16&quot;&gt;물론 처음 설계한 내용이 끝까지 그대로 가지는 않았습니다. 개발을 진행하다 보니 자연스럽게 여러 아이디어와 문제점들이 보였습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;33&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,0,0&quot;&gt;&quot;어? 이 기능은 버튼을 여기 두는 것보다 저기로 옮기는 게 낫겠는데?&quot;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,1,0&quot;&gt;&quot;사용자가 여기서 해상도 비율을 헷갈려 할 수도 있겠다.&quot;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i data-index-in-node=&quot;0&quot; data-path-to-node=&quot;33,2,0&quot;&gt;&quot;스마트폰으로 볼 때 이 부분 UI가 좀 깨지네?&quot;&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;34&quot; data-ke-size=&quot;size16&quot;&gt;그럴 때마다 고민하지 않고 내용을 즉석에서 반영했습니다. 여기서 중요했던 건, &lt;b data-index-in-node=&quot;44&quot; data-path-to-node=&quot;34&quot;&gt;머릿속으로 바뀐 내용을 다시 프롬프트에 정확히 업데이트해서 전달하는 것&lt;/b&gt;이었습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;35&quot; data-ke-size=&quot;size16&quot;&gt;처음 만든 프롬프트 하나로 끝낸 게 아니라, 상황에 맞춰 계속 요구사항을 진화시켰습니다. AI도 결국 사람이 어떤 입력값을 주느냐에 따라 결과가 달라지니까요.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;36&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;37&quot; data-ke-size=&quot;size23&quot;&gt;그리고 최종 결과물 완성&lt;/h3&gt;
&lt;p data-path-to-node=&quot;38&quot; data-ke-size=&quot;size16&quot;&gt;모든 단계를 끝낸 뒤, 드디어 그럴싸한 웹앱이 탄생했습니다. 하지만 끝날 때까지 끝난 게 아니죠. 최종 결과물을 두고 AI에게 다시 한번 깐깐한 검토를 요청했습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;39&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대용량 사진을 넣었을 때 성능(메모리) 문제는 없는지?&lt;/li&gt;
&lt;li&gt;특정 브라우저에서 오류가 날 가능성은 없는지?&lt;/li&gt;
&lt;li&gt;크기 조절과 자르기 기능이 서로 충돌하진 않는지?&lt;/li&gt;
&lt;li&gt;사용자의 사진 데이터가 밖으로 새어나갈 보안상 위험은 없는지?&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;40&quot; data-ke-size=&quot;size16&quot;&gt;결론은 &quot;현재 구조에서는 큰 문제 없이 실사용이 가능하다&quot;였습니다. 물론 앞으로 실제 사용해 보면서 수정할 부분은 계속 나오겠지만, 코딩 비전문가가 '바이브코딩' 방식만으로 여기까지 완성해 냈다는 것 자체가 저에겐 꽤 신선하고 놀라운 경험이었습니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;41&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;42&quot; data-ke-size=&quot;size23&quot;&gt;바이브코딩 해보면서 느낀 점&lt;/h3&gt;
&lt;p data-path-to-node=&quot;43&quot; data-ke-size=&quot;size16&quot;&gt;불과 얼마 전까지만 해도 웹앱 하나 만들려면 너무 막막했습니다. HTML? CSS? JavaScript? 프론트엔드? 백엔드? 이런 개발 용어들만 봐도 머리가 아팠죠.&lt;/p&gt;
&lt;p data-path-to-node=&quot;44&quot; data-ke-size=&quot;size16&quot;&gt;그런데 지금은 개발의 패러다임이 조금 달라진 것 같습니다. 이제 중요한 건 '내가 코드를 한 줄 한 줄 직접 얼마나 잘 짜느냐'보다, 'AI에게 무엇을, 어떻게, 어떤 순서로 요청하느냐'에 가까워진 느낌입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;45&quot; data-ke-size=&quot;size16&quot;&gt;물론 개발 지식이 탄탄하게 있다면 훨씬 빠르고 유리하겠지만, 저 같은 비전문가도 &quot;문제를 잘 정의하고 단계별로 똑똑하게 요청하는 능력(프롬프트 설계)&quot;만 있다면 꽤 많은 것을 만들어낼 수 있다는 걸 뼈저리게 체감했습니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;46&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;47&quot; data-ke-size=&quot;size23&quot;&gt;마무리 (한 줄 요약)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;48&quot; data-ke-size=&quot;size16&quot;&gt;이번 '사진 크기&amp;middot;사이즈 조절 웹앱' 개발은 단순히 기능 하나를 뚝딱 만들어본 경험이 아니라, &quot;AI와 제대로 협업하면 내 아이디어를 어디까지 현실로 만들 수 있을까?&quot;를 시험해 본 뜻깊은 과정이었습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;49&quot; data-ke-size=&quot;size16&quot;&gt;다음번에는 사람들이 실생활에서 더 유용하게 쓸 수 있는 또 다른 재미있는 웹앱에 도전해 볼 생각입니다. 바이브코딩, 이거 생각보다 꽤 재밌고 짜릿하네요.&lt;/p&gt;
&lt;blockquote data-path-to-node=&quot;50&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;50,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;50,0&quot;&gt;  한 줄 요약:&lt;/b&gt; &amp;gt; 비전문가도 바이브코딩으로 충분히 쓸만한 웹앱을 만들 수 있다. 단, 코딩 실력보다 **'좋은 프롬프트 설계 + 쪼개서 생각하는 단계별 접근'**이 훨씬 더 중요하다!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;</description>
      <category>바이브코딩/프로그램</category>
      <category>ai</category>
      <category>AI개발</category>
      <category>개발</category>
      <category>바이브코딩</category>
      <category>비전공자</category>
      <category>사진</category>
      <category>사진사이즈</category>
      <category>사진용량줄이기</category>
      <category>사진축소</category>
      <category>웹앱</category>
      <author>data-pantry</author>
      <guid isPermaLink="true">https://data-pantry.tistory.com/19</guid>
      <comments>https://data-pantry.tistory.com/19#entry19comment</comments>
      <pubDate>Fri, 15 May 2026 18:15:42 +0900</pubDate>
    </item>
    <item>
      <title>[바이브코딩 체험기] 코딩 없이 '기획력'만으로 스도쿠 웹 게임 만든 썰(2)</title>
      <link>https://data-pantry.tistory.com/17</link>
      <description>&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;만든 게임 게시!!!!!&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 즐거운 sdoku 티스토리 컨테이너 --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 즐거운 sdoku 티스토리 컨테이너 --&gt;
&lt;div style=&quot;width:100%; max-width:500px; margin:0 auto;&quot;&gt;
    &lt;iframe
        id=&quot;sdoku-frame&quot;
        src=&quot;https://xoggnseeeww.github.io/web-sudoku/&quot;
        style=&quot;width:100%; border:none; overflow:hidden; min-height:700px;&quot;
        scrolling=&quot;no&quot;
        allow=&quot;scripts&quot;&gt;
    &lt;/iframe&gt;
&lt;/div&gt;
&lt;script&gt;
    window.addEventListener('message', function(e) {
        if (e.data &amp;&amp; e.data.sudokuHeight) {
            document.getElementById('sdoku-frame').style.height = e.data.sudokuHeight + 'px';
        }
    });
&lt;/script&gt;</description>
      <category>바이브코딩/게임</category>
      <author>data-pantry</author>
      <guid isPermaLink="true">https://data-pantry.tistory.com/17</guid>
      <comments>https://data-pantry.tistory.com/17#entry17comment</comments>
      <pubDate>Wed, 13 May 2026 17:47:25 +0900</pubDate>
    </item>
    <item>
      <title>[바이브코딩 체험기] 코딩 없이 '기획력'만으로 스도쿠 웹 게임 만든 썰(1)</title>
      <link>https://data-pantry.tistory.com/16</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 IT 씬에서 제일 핫한 단어, 혹시 들어보셨나요? 바로 '바이브코딩(Vibe Coding)'입니다. 개발자가 직접 코드를 한 줄 한 줄 타이핑하는 대신, AI(LLM)에게 자연어로 &quot;이런 기능 만들어줘&quot;, &quot;이 부분 구조를 이렇게 바꿔줘&quot;라고 지시하며 결과물을 만들어내는 새로운 개발 패러다임을 말하죠.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;글로만 읽어서는 감이 잘 안 오더라고요. &quot;이거 진짜 말만 하면 프로그램이 뚝딱 나온다고? 나도 한번 제대로 경험하고 연습해 봐야겠다!&quot;라는 생각이 들었습니다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;그래서 첫 연습 프로젝트로 제미나이를 이용해서 제 블로그 방문자분들이 가볍게 즐길 수 있는 '무설치 웹 스도쿠 게임'을 만들어보기로 했습니다. 아이디어 기획부터 티스토리 배포까지, 저의 좌충우돌 바이브코딩 실전 경험기를 공유합니다.&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Step 1. 첫 지시: &quot;스도쿠 게임의 뼈대를 만들어줘&quot;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바이브코딩의 핵심은 '명확한 지시'라고 들었습니다. 처음부터 너무 복잡하게 요구하지 않고, 핵심 기능부터 던져봤습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;나의 프롬프트:&lt;/b&gt; &quot;웹 게시물에 배포할 수 있는 스도쿠 게임을 HTML/CSS/JS 단일 파일로 만들어줘. 난이도는 상, 중, 하로 나누고 각각 10개의 퍼즐 데이터를 넣어줘.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;놀랍게도 AI는 단 몇 초 만에 스도쿠의 룰이 적용된 코드를 짜주었습니다. 하지만 결과물은 아주 '날것' 그대로였습니다.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;b&gt;[이미지 삽입 포인트 1: 처음 만들어진 날것의 게임 화면 캡처]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;200&quot; data-origin-height=&quot;276&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k64xo/dJMcag6ziUa/CcujnXDePgy13ikn0SWUok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k64xo/dJMcag6ziUa/CcujnXDePgy13ikn0SWUok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k64xo/dJMcag6ziUa/CcujnXDePgy13ikn0SWUok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk64xo%2FdJMcag6ziUa%2FCcujnXDePgy13ikn0SWUok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;200&quot; height=&quot;276&quot; data-origin-width=&quot;200&quot; data-origin-height=&quot;276&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;돌아가긴 하는데, 화면 하나에 모든 게 다 몰려 있어서 '게임'을 한다는 느낌이 전혀 안 살았습니다. 이때 깨달았죠. &lt;b&gt;&quot;아, 바이브코딩은 AI가 다 해주는 게 아니라, 내가 기획자이자 PM이 되어 구조를 설계해 줘야 하는구나!&quot;&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Step 2. UX 기획자 모드: &quot;화면의 Depth(계층)를 나눠보자&quot;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 경험(UX)을 개선하기 위해 앱처럼 화면이 전환되도록 구조를 다시 잡았습니다. AI에게 화면을 3단계로 나누어 라우팅(Routing) 처리를 해달라고 구체적으로 요구했습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나의 프롬프트: &quot;화면을 3단계로 나눠줘.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;메인화면: '즐거운 sdoku' 타이틀과 [상/중/하] 난이도 버튼&lt;/li&gt;
&lt;li&gt;스테이지 선택 화면: 1번~10번 게임 선택 버튼과 [홈으로] 버튼&lt;/li&gt;
&lt;li&gt;게임 화면: 실제 스도쿠 보드와 [뒤로 가기], [새로고침] 버튼&quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;찰떡같이 알아들은 AI는 코드를 갈아엎고 화면이 부드럽게 전환되는 로직을 추가해 줬습니다.&lt;br /&gt;&lt;b&gt;[이미지 삽입 포인트 2: 3단계 화면 전환 모습 캡처]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDrHG5/dJMcadPtRim/pde8E1NmcK97mM1IKHEfA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDrHG5/dJMcadPtRim/pde8E1NmcK97mM1IKHEfA0/img.png&quot; data-origin-width=&quot;200&quot; data-origin-height=&quot;405&quot; style=&quot;width: 32.6652%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDrHG5/dJMcadPtRim/pde8E1NmcK97mM1IKHEfA0/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDrHG5%2FdJMcadPtRim%2Fpde8E1NmcK97mM1IKHEfA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;200&quot; height=&quot;405&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IOWAm/dJMcahYHmFW/I59gLwb3KQefzMSIUxdrf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IOWAm/dJMcahYHmFW/I59gLwb3KQefzMSIUxdrf1/img.png&quot; data-origin-width=&quot;200&quot; data-origin-height=&quot;407&quot; style=&quot;width: 32.5046%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IOWAm/dJMcahYHmFW/I59gLwb3KQefzMSIUxdrf1/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIOWAm%2FdJMcahYHmFW%2FI59gLwb3KQefzMSIUxdrf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;200&quot; height=&quot;407&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uVB0B/dJMcadaR0Fe/F08r9a4kKXl6hdEDwGhgN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uVB0B/dJMcadaR0Fe/F08r9a4kKXl6hdEDwGhgN0/img.png&quot; data-origin-width=&quot;200&quot; data-origin-height=&quot;407&quot; style=&quot;width: 32.5046%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uVB0B/dJMcadaR0Fe/F08r9a4kKXl6hdEDwGhgN0/img.png&quot; alt=&quot;&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuVB0B%2FdJMcadaR0Fe%2FF08r9a4kKXl6hdEDwGhgN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;200&quot; height=&quot;407&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;이제 제법 그럴싸한 웹 앱의 형태를 갖추게 되었습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Step 3. 유저 잔존율 높이기: &quot;데이터 영구 저장의 마법&quot;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;게임의 형태를 갖추니 욕심이 났습니다. 새로고침하면 제가 깼던 기록이 날아가는 게 아쉬웠거든요. 하지만 서버나 DB를 구축하기엔 일이 너무 커지는 상황이었습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나의 프롬프트: &quot;별도 서버 없이 브라우저 저장소(Local Storage)를 이용해서 사용자가 클리어한 스테이지를 저장해 줘. 그리고 스테이지 선택 화면에 클리어한 번호는 '✔' 스탬프를 찍어줘!&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;결과는 대성공이었습니다. 클라이언트 브라우저의 저장소를 활용해 서버 비용 0원으로 영구 저장 기능을 구현했습니다.&lt;br /&gt;&lt;b&gt;[이미지 삽입 포인트 3: 스탬프가 찍힌 스테이지 선택 화면]&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;200&quot; data-origin-height=&quot;313&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwtfBG/dJMcacwlXX6/Pb7kHRQtTiId6OFzte3Rck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwtfBG/dJMcacwlXX6/Pb7kHRQtTiId6OFzte3Rck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwtfBG/dJMcacwlXX6/Pb7kHRQtTiId6OFzte3Rck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwtfBG%2FdJMcacwlXX6%2FPb7kHRQtTiId6OFzte3Rck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;200&quot; height=&quot;313&quot; data-origin-width=&quot;200&quot; data-origin-height=&quot;313&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;이 영롱한 초록색 체크마크(✔) 하나가 유저들의 수집욕과 클리어 본능을 자극하는 엄청난 요소가 되었습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Step 4. 화룡점정: &quot;도파민을 자극하는 디테일 추가&quot;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바이브코딩의 진짜 묘미는 '마이크로 인터랙션'을 추가할 때 빛을 발했습니다. 코드로 짜려면 복잡한 애니메이션 로직들을 말 한마디로 추가할 수 있었죠.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;나의 프롬프트:&lt;/b&gt; &quot;사람들이 재미를 느끼게 다양한 요소를 듬뿍 넣어줘!&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;정답을 다 맞추면 폭죽 애니메이션을 터트려줘!&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오답을 넣으면 셀이 도리도리(Shake) 흔들리게 해줘.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;실시간 타이머와 최고 기록 기능을 넣어줘.&lt;/li&gt;
&lt;li&gt;고수들을 위한 '메모 모드(Pencil)' 기능도 추가해!&quot;&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;AI는 외부 라이브러리(canvas-confetti)를 활용해 화려한 폭죽을 구현하고, CSS 애니메이션으로 타격감을 살려냈습니다. 특히 스마트폰에서 버튼을 누를 때 미세하게 진동(Haptic)이 오게 만든 부분은 정말 감탄이 나왔습니다.&lt;br /&gt;  &lt;b&gt;[이미지 삽입 포인트 4: 폭죽이 터지는 클리어 화면 &amp;amp; 편의 기능]&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;383&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDf4aJ/dJMcaiQOCKb/wykLhPL0G0kzKyBw2DoP90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDf4aJ/dJMcaiQOCKb/wykLhPL0G0kzKyBw2DoP90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDf4aJ/dJMcaiQOCKb/wykLhPL0G0kzKyBw2DoP90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDf4aJ%2FdJMcaiQOCKb%2FwykLhPL0G0kzKyBw2DoP90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;383&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;383&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;체험 결론: 바이브코딩 시대, 핵심은 '프롬프트'가 아니라 '기획력'이다&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단 하루 만에, 텍스트 편집기와 제미나이만 띄워놓고 이 정도 퀄리티의 웹 게임을 만들었습니다. 이번 연습을 통해 느낀 바이브코딩의 본질은 다음과 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;AI는 훌륭한 '손'이지만, '머리'는 여전히 사람의 몫이다.&lt;/b&gt; 구조를 어떻게 짤지, 어떤 UX를 줄지 고민하는 기획력이 결과물의 퀄리티를 결정합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;에러를 두려워할 필요가 없다.&lt;/b&gt; 버그가 나면 &quot;야, 이거 모바일에서 두 번 터치하니까 화면이 커져버리잖아. 막아줘&quot;라고 말하면 끝입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;아이디어를 실행하는 비용이 '0'에 수렴한다.&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 지식이 깊지 않아도, 논리적인 사고방식과 명확한 방향성만 있다면 누구나 자신만의 서비스를 런칭할 수 있는 시대가 진짜로 왔습니다. 생각만 해뒀던 아이디어가 있으신가요? 오늘 당장 AI를 켜고 첫 지시를 내려보세요!&lt;br /&gt;&lt;b&gt;(제가 바이브코딩으로 만든 스도쿠 게임은 다음 글에서 직접 플레이해 보실 수 있습니다. 최고 기록에 도전해 보세요!)&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>바이브코딩/게임</category>
      <category>ai</category>
      <category>개발</category>
      <category>만들기</category>
      <category>바이브코딩</category>
      <category>비전공자개발</category>
      <category>일반인개발</category>
      <category>제미나이</category>
      <author>data-pantry</author>
      <guid isPermaLink="true">https://data-pantry.tistory.com/16</guid>
      <comments>https://data-pantry.tistory.com/16#entry16comment</comments>
      <pubDate>Wed, 13 May 2026 17:43:49 +0900</pubDate>
    </item>
    <item>
      <title>AI를 이용한 티스토리 웹디자인 공부 - [DAY 4] CSS 기초 강의｜선택자, Margin, Padding, Display</title>
      <link>https://data-pantry.tistory.com/15</link>
      <description>&lt;div style=&quot;max-width: 800px; margin: 0 auto; font-family: 'Apple SD Gothic Neo', 'Malgun Gothic', sans-serif; color: #333; line-height: 1.6; word-break: keep-all; padding: 10px;&quot;&gt;&lt;!-- 헤더 영역 --&gt;&lt;header style=&quot;background: linear-gradient(135deg, #4f46e5, #7c3aed); padding: 24px 20px; border-radius: 12px; color: #ffffff; margin-bottom: 30px; box-shadow: 0 2px 4px rgba(0,0,0,0.08);&quot;&gt;
&lt;div style=&quot;font-size: 0.9rem; font-weight: bold; margin-bottom: 8px; opacity: 0.9;&quot;&gt;[Week 1 &amp;middot; 웹 구조 기초] Day 4 / 42&lt;/div&gt;
&lt;h1 style=&quot;font-size: 1.5rem; margin: 0 0 16px 0; font-weight: 800;&quot;&gt;CSS 기초 강의｜선택자, Margin, Padding, Display 쉽게 배우기  &lt;/h1&gt;
&lt;!-- 1층: 10초 직관 요약 --&gt;
&lt;div style=&quot;background: rgba(255, 255, 255, 0.15); padding: 16px; border-radius: 8px; font-size: 0.95rem;&quot;&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px; list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;CSS란?&lt;/b&gt; 뼈대만 있는 HTML에 색을 칠하고 여백을 잡아주는 '인테리어 도면'입니다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 8px;&quot;&gt;&lt;b&gt;선택자:&lt;/b&gt; 수많은 요소 중 &quot;어떤 녀석&quot;을 꾸밀지 콕 집어내는 '이름표'입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Box Model:&lt;/b&gt; 웹의 모든 요소는 &lt;b&gt;'네모난 액자'&lt;/b&gt;입니다. 이 액자의 안팎 여백을 다루는 게 레이아웃의 전부입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/header&gt;&lt;!-- 1. CSS 연결 방식 --&gt;
&lt;section style=&quot;margin-bottom: 56px;&quot;&gt;
&lt;h2 style=&quot;font-size: 1.3rem; color: #1e293b; border-left: 5px solid #4f46e5; padding-left: 12px; margin: 0 0 20px 0; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;1. CSS가 HTML과 연결되는 방식&lt;/h2&gt;
&lt;div style=&quot;background-color: #f8fafc; padding: 24px; border-radius: 8px; margin-bottom: 16px;&quot;&gt;
&lt;div style=&quot;font-weight: bold; color: #4f46e5; margin-bottom: 8px;&quot;&gt;  비유로 이해하기: 건물과 인테리어 도면&lt;/div&gt;
건물(HTML)을 다 지었다고 끝이 아닙니다. 예쁘게 꾸미려면 인테리어 업자에게 &lt;b&gt;&quot;이 도면(CSS)대로 칠해주세요!&quot;&lt;/b&gt;라고 도면을 건네주어야 합니다. 그 도면을 건네주는 '연결 고리' 역할이 바로 &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; 태그입니다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTML 파일 안에 아래처럼 &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; 태그를 한 줄 적어두면, 브라우저가 &quot;아, 이 HTML은 저 CSS 파일을 보고 꾸미면 되는구나!&quot; 하고 알아차립니다.&lt;/p&gt;
&lt;div style=&quot;display: inline-block; background: #4f46e5; color: white; padding: 4px 10px; border-radius: 6px; font-size: 0.8rem; font-weight: bold; margin-bottom: 8px;&quot;&gt;HTML 코드&lt;/div&gt;
&lt;div style=&quot;background-color: #1e293b; color: #e2e8f0; padding: 16px; border-radius: 8px; overflow-x: auto; font-family: monospace; font-size: 0.85rem; line-height: 1.7; margin-bottom: 24px;&quot;&gt;&lt;span style=&quot;color: #a6accd;&quot;&gt;&amp;lt;!-- HTML의 머리(&amp;lt;head&amp;gt;) 부분에 넣어서 CSS 도면을 불러옵니다 --&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #f07178;&quot;&gt;&amp;lt;link&lt;/span&gt; &lt;span style=&quot;color: #c792ea;&quot;&gt;rel=&lt;/span&gt;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;stylesheet&quot;&lt;/span&gt; &lt;span style=&quot;color: #c792ea;&quot;&gt;href=&lt;/span&gt;&lt;span style=&quot;color: #c3e88d;&quot;&gt;&quot;./style.css&quot;&lt;/span&gt;&lt;span style=&quot;color: #f07178;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;!-- 티스토리 실전 적용 위치 --&gt;
&lt;div style=&quot;background-color: #eef2ff; border-left: 4px solid #4f46e5; padding: 20px; border-radius: 4px;&quot;&gt;&lt;b&gt;  티스토리에서는 CSS를 어디에 넣나요?&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 0.95rem; color: #3730a3; display: inline-block; margin-top: 8px;&quot;&gt; 티스토리는 우리가 직접 &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; 태그를 쓸 필요 없이 이미 다 연결해 두었습니다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;경로:&lt;/b&gt; 블로그 관리자   &lt;b&gt;꾸미기 &amp;rarr; 스킨편집 &amp;rarr; HTML 편집 &amp;rarr; CSS 탭&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;이 &lt;b&gt;CSS 탭&lt;/b&gt;의 맨 아래 빈 공간에 여러분이 짠 코드를 복사해서 붙여넣기만 하면 곧바로 내 블로그 디자인이 바뀝니다! &lt;/span&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;!-- 2. 선택자 3종 --&gt;
&lt;section style=&quot;margin-bottom: 56px;&quot;&gt;
&lt;h2 style=&quot;font-size: 1.3rem; color: #1e293b; border-left: 5px solid #4f46e5; padding-left: 12px; margin: 0 0 20px 0; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;2. 대상 콕 집어내기: 선택자(Selector) 3대장&lt;/h2&gt;
&lt;div style=&quot;background-color: #f8fafc; padding: 24px; border-radius: 8px; margin-bottom: 16px;&quot;&gt;
&lt;div style=&quot;font-weight: bold; color: #4f46e5; margin-bottom: 8px;&quot;&gt; ️ 비유로 이해하기: 운동장에서 학생들 부르기&lt;/div&gt;
명령(스타일)을 내리려면 &quot;누구한테&quot; 내릴지 정확히 불러야겠죠?&lt;br /&gt;
&lt;ul style=&quot;margin-top: 8px; margin-bottom: 0; padding-left: 20px; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;태그 (학년):&lt;/b&gt; &quot;1학년들(p) 전부 파란 체육복 입어!&quot; (범위가 가장 넓음)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;클래스 (동아리):&lt;/b&gt; &quot;축구부(.soccer)만 노란 조끼 입어!&quot; (특정 그룹 묶기)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;아이디 (학번):&lt;/b&gt; &quot;1번 학생(#student1)만 빨간 모자 써!&quot; (단 한 명만 지정)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div style=&quot;display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));&quot;&gt;
&lt;div style=&quot;background-color: #ffffff; padding: 24px; border-radius: 8px; margin-right: 12px; margin-bottom: 12px; box-shadow: 0 1px 3px rgba(0,0,0,0.05);&quot;&gt;
&lt;h3 style=&quot;margin-top: 0; font-size: 1.1rem; color: #4f46e5;&quot; data-ke-size=&quot;size23&quot;&gt;① 태그 (Tag)&lt;/h3&gt;
&lt;p style=&quot;font-size: 0.95rem; color: #475569;&quot; data-ke-size=&quot;size16&quot;&gt;p, div, a처럼 태그 이름을 그대로 적습니다. 범위가 너무 커서 주로 블로그 전체의 &lt;b&gt;글씨체나 기본 색상&lt;/b&gt;을 정할 때만 씁니다.&lt;/p&gt;
&lt;code style=&quot;background-color: #f1f5f9; padding: 4px 8px; border-radius: 4px; font-size: 0.85rem; color: #d946ef;&quot;&gt;p { color: black; }&lt;/code&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; padding: 24px; border-radius: 8px; margin-right: 12px; margin-bottom: 12px; box-shadow: 0 1px 3px rgba(0,0,0,0.05);&quot;&gt;
&lt;h3 style=&quot;margin-top: 0; font-size: 1.1rem; color: #4f46e5;&quot; data-ke-size=&quot;size23&quot;&gt;② 클래스 (Class)&lt;/h3&gt;
&lt;p style=&quot;font-size: 0.95rem; color: #475569;&quot; data-ke-size=&quot;size16&quot;&gt;이름 앞에 &lt;b&gt;점(.)&lt;/b&gt;을 붙입니다. 티스토리 글상자, 버튼 등 &lt;b&gt;비슷하게 생긴 것들을 묶어서 디자인&lt;/b&gt;할 때 가장 많이 씁니다. (실무 사용률 90%)&lt;/p&gt;
&lt;code style=&quot;background-color: #f1f5f9; padding: 4px 8px; border-radius: 4px; font-size: 0.85rem; color: #d946ef;&quot;&gt;.btn { color: blue; }&lt;/code&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; padding: 24px; border-radius: 8px; margin-bottom: 12px; box-shadow: 0 1px 3px rgba(0,0,0,0.05);&quot;&gt;
&lt;h3 style=&quot;margin-top: 0; font-size: 1.1rem; color: #4f46e5;&quot; data-ke-size=&quot;size23&quot;&gt;③ 아이디 (ID)&lt;/h3&gt;
&lt;p style=&quot;font-size: 0.95rem; color: #475569;&quot; data-ke-size=&quot;size16&quot;&gt;이름 앞에 &lt;b&gt;우물정(#)&lt;/b&gt;을 붙입니다. 한 페이지에 딱 하나만 있어야 합니다. 주로 &lt;b&gt;헤더, 푸터 같은 큼직한 구역&lt;/b&gt;을 통째로 잡을 때 씁니다.&lt;/p&gt;
&lt;code style=&quot;background-color: #f1f5f9; padding: 4px 8px; border-radius: 4px; font-size: 0.85rem; color: #d946ef;&quot;&gt;#header { color: red; }&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- CSS 우선순위 10초 요약 --&gt;
&lt;div style=&quot;background-color: #eef2ff; padding: 20px; border-radius: 8px; margin-top: 16px;&quot;&gt;&lt;b&gt;  CSS 힘의 크기 (우선순위)&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 0.95rem; color: #3730a3; display: inline-block; margin-top: 8px;&quot;&gt; 좁고 구체적으로 부를수록 힘이 더 셉니다. &lt;br /&gt;&lt;b&gt;태그 &amp;lt; 클래스 &amp;lt; ID&lt;/b&gt; 순으로 힘이 세기 때문에, 똑같은 곳에 색칠을 지시하면 힘이 센 ID의 색상으로 덮어씌워집니다. &lt;/span&gt;&lt;/div&gt;
&lt;!-- Tistory 실전 경고 박스 --&gt;
&lt;div style=&quot;background-color: #fff7ed; border-left: 4px solid #f97316; padding: 16px; border-radius: 4px; margin-top: 16px;&quot;&gt;&lt;b&gt;⚠️ 티스토리 실전 팁: 안 바뀐다고 !important 남발 금지&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 0.95rem; color: #431407;&quot;&gt;내 맘대로 디자인이 안 바뀐다고 무적 치트키인 &lt;code&gt;color: red !important;&lt;/code&gt;를 자꾸 쓰면 나중에 디자인이 꼬여서 수정이 아예 불가능해집니다. 안 바뀐다면 &lt;b&gt;우선순위에서 밀린 것&lt;/b&gt;이므로 대상을 더 구체적으로 지목(계층 선택자)해야 합니다. (아래 7번 참고)&lt;/span&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;!-- 3. Box Model 구조 --&gt;
&lt;section style=&quot;margin-bottom: 56px;&quot;&gt;
&lt;h2 style=&quot;font-size: 1.3rem; color: #1e293b; border-left: 5px solid #4f46e5; padding-left: 12px; margin: 0 0 20px 0; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;3. 초보자 1위 실수: Padding vs Margin (박스 모델)&lt;/h2&gt;
&lt;div style=&quot;background-color: #f8fafc; padding: 24px; border-radius: 8px; margin-bottom: 16px;&quot;&gt;
&lt;div style=&quot;font-weight: bold; color: #4f46e5; margin-bottom: 8px;&quot;&gt; ️ 비유로 이해하기: 벽에 걸린 '액자'&lt;/div&gt;
웹사이트의 모든 글자, 이미지, 버튼은 눈에 보이지 않는 &lt;b&gt;네모난 액자&lt;/b&gt; 안에 들어있습니다. 초보자는 액자 안쪽 여백과 바깥쪽 여백을 가장 많이 헷갈립니다.
&lt;ul style=&quot;margin-top: 8px; margin-bottom: 0; padding-left: 20px;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Content (사진):&lt;/b&gt; 액자 안에 들어갈 실제 사진이나 글자입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Padding (사진과 틀 사이의 여백):&lt;/b&gt; 사진을 돋보이게 하려고 사진과 나무틀 사이에 두는 &lt;b&gt;하얀색 여백(매트)&lt;/b&gt;입니다. &lt;span style=&quot;color: #dc2626;&quot;&gt;(액자 안쪽 공간)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Border (나무 틀):&lt;/b&gt; 액자를 두르고 있는 단단한 테두리입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Margin (벽에 걸린 액자 사이의 간격):&lt;/b&gt; 벽에 여러 액자를 걸 때, &lt;b&gt;내 액자와 옆 액자가 떨어져 있는 거리&lt;/b&gt;입니다. &lt;span style=&quot;color: #dc2626;&quot;&gt;(액자 바깥 공간)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 박스 모델 시각화 --&gt;
&lt;div style=&quot;background-color: #f1f5f9; padding: 30px; border-radius: 8px; text-align: center; margin-bottom: 20px;&quot;&gt;
&lt;div style=&quot;border: 2px dashed #94a3b8; padding: 20px; background-color: transparent; display: inline-block; position: relative;&quot;&gt;&lt;span style=&quot;position: absolute; top: 0; left: 10px; font-size: 0.8rem; color: #64748b; font-weight: bold;&quot;&gt;Margin (옆 액자와의 거리)&lt;/span&gt;
&lt;div style=&quot;border: 4px solid #4f46e5; padding: 20px; background-color: #eef2ff; position: relative;&quot;&gt;&lt;span style=&quot;position: absolute; top: -25px; left: 5px; font-size: 0.8rem; color: #4f46e5; font-weight: bold;&quot;&gt;Border (액자 테두리)&lt;/span&gt; &lt;span style=&quot;position: absolute; top: 5px; left: 10px; font-size: 0.8rem; color: #6366f1; font-weight: bold;&quot;&gt;Padding (안쪽 여백)&lt;/span&gt;
&lt;div style=&quot;background-color: #ffffff; border: 1px solid #cbd5e1; padding: 20px 40px; font-weight: bold; color: #333;&quot;&gt;Content (실제 사진/글자)&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #eef2ff; border-radius: 8px; padding: 16px; font-size: 0.95rem; color: #3730a3; text-align: center;&quot;&gt;  &lt;b&gt;초보자 필수 암기:&lt;/b&gt; 상자(버튼)를 뚱뚱하게 만들려면 Padding! 상자(버튼)를 남과 띄워놓으려면 Margin!&lt;/div&gt;
&lt;!-- Margin Collapse 경고 --&gt;
&lt;div style=&quot;background-color: #fff7ed; border-left: 4px solid #f97316; padding: 16px; border-radius: 4px; margin-top: 24px;&quot;&gt;&lt;b&gt;⚠️ 나중에 반드시 만나게 될 함정: Margin 겹침 (Collapse)&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 0.95rem; color: #431407; display: inline-block; margin-top: 8px;&quot;&gt;위 액자가 &lt;code&gt;margin-bottom: 50px;&lt;/code&gt;을 가지고, 아래 액자가 &lt;code&gt;margin-top: 50px;&lt;/code&gt;을 가지면 총 100px이 떨어질 것 같죠? 아닙니다! 위아래 마진이 만나면 &lt;b&gt;더 큰 값 하나(50px)로 겹쳐버립니다.&lt;/b&gt; &quot;어? 왜 간격이 내가 더한 것만큼 안 벌어지지?&quot; 할 때 이 현상을 의심하세요.&lt;/span&gt;&lt;/div&gt;
&lt;/section&gt;
&lt;!-- 4. box-sizing --&gt;
&lt;section style=&quot;margin-bottom: 56px;&quot;&gt;
&lt;h2 style=&quot;font-size: 1.3rem; color: #1e293b; border-left: 5px solid #4f46e5; padding-left: 12px; margin: 0 0 20px 0; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;4. 삽질 방지 치트키: box-sizing&lt;/h2&gt;
&lt;div style=&quot;background-color: #f8fafc; padding: 24px; border-radius: 8px; margin-bottom: 16px;&quot;&gt;
&lt;div style=&quot;font-weight: bold; color: #4f46e5; margin-bottom: 8px;&quot;&gt;  비유로 이해하기: 30cm짜리 수납장 사기&lt;/div&gt;
방 구석에 가로 30cm짜리 빈 공간이 있어서 딱 맞는 30cm짜리 수납장을 주문했습니다. 그런데 배송 온 걸 보니 수납장 나무판자 두께가 양옆으로 2cm씩 튀어나와서, 실제 크기가 34cm가 되어버렸습니다. 방에 안 들어가겠죠?&lt;br /&gt;&lt;br /&gt;브라우저도 똑같습니다. &quot;가로 300px 박스 만들어줘&quot; 하면, 브라우저는 안에 들어가는 물건(Content)만 300px로 맞추고, 여백(Padding)과 테두리(Border) 두께는 그 밖으로 살을 덧붙여 박스를 뚱뚱하게 만들어 버립니다. 그래서 웹사이트 레이아웃이 다 깨지는 겁니다.&lt;/div&gt;
&lt;p style=&quot;font-size: 0.95rem;&quot; data-ke-size=&quot;size16&quot;&gt;우리가 상식적으로 생각하는 크기, 즉 &lt;b&gt;&quot;테두리 두께까지 몽땅 합쳐서 딱 300px로 만들어!&quot;&lt;/b&gt;라고 브라우저에게 명령하는 코드가 바로 &lt;code&gt;box-sizing: border-box;&lt;/code&gt; 입니다.&lt;/p&gt;
&lt;div style=&quot;display: inline-block; background: #4f46e5; color: white; padding: 4px 10px; border-radius: 6px; font-size: 0.8rem; font-weight: bold; margin-bottom: 8px;&quot;&gt;CSS 예제&lt;/div&gt;
&lt;div style=&quot;background-color: #1e293b; color: #e2e8f0; padding: 16px; border-radius: 8px; overflow-x: auto; font-family: monospace; font-size: 0.85rem; line-height: 1.7; margin-bottom: 24px;&quot;&gt;&lt;span style=&quot;color: #a6accd;&quot;&gt;/* CSS 파일 최상단에 항상 넣는 필수 초기화(Reset) 코드 */&lt;/span&gt; &lt;span style=&quot;color: #ffcb6b;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #89ddff;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ffcb6b;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #89ddff;&quot;&gt;::before&lt;/span&gt;&lt;span style=&quot;color: #89ddff;&quot;&gt;,&lt;/span&gt; &lt;span style=&quot;color: #ffcb6b;&quot;&gt;*&lt;/span&gt;&lt;span style=&quot;color: #89ddff;&quot;&gt;::after&lt;/span&gt; { &lt;span style=&quot;color: #80cbc4;&quot;&gt;box-sizing&lt;/span&gt;: border-box; &lt;span style=&quot;color: #a6accd;&quot;&gt;/* 테두리까지 합쳐서 크기를 계산하라는 선언! */&lt;/span&gt; } &lt;span style=&quot;color: #ffcb6b;&quot;&gt;body&lt;/span&gt; { &lt;span style=&quot;color: #80cbc4;&quot;&gt;margin&lt;/span&gt;: &lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;; &lt;span style=&quot;color: #a6accd;&quot;&gt;/* 브라우저가 몰래 넣어두는 기본 바깥 여백 없애기 */&lt;/span&gt; &lt;span style=&quot;color: #80cbc4;&quot;&gt;padding&lt;/span&gt;: &lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt;; }&lt;/div&gt;
&lt;/section&gt;
&lt;!-- 시각적 리셋 (스크롤 피로도 감소) --&gt;
&lt;div style=&quot;text-align: center; margin: 40px 0 56px 0; font-size: 0.95rem; color: #64748b; font-weight: bold;&quot;&gt;☕ 여기까지 이해하셨다면 웹 디자인의 가장 큰 고비를 넘긴 겁니다! 기지개 한번 켜고 갈까요?&lt;/div&gt;
&lt;!-- 5. Display 속성 --&gt;
&lt;section style=&quot;margin-bottom: 56px;&quot;&gt;
&lt;h2 style=&quot;font-size: 1.3rem; color: #1e293b; border-left: 5px solid #4f46e5; padding-left: 12px; margin: 0 0 20px 0; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;5. 왜 크기가 안 먹히지? (Display 개념)&lt;/h2&gt;
&lt;p style=&quot;font-size: 0.95rem;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;폭을 300px로 줬는데 왜 안 변하지?&quot;, &quot;왜 위아래로 간격이 안 떨어지지?&quot; 입문자들이 하루 종일 머리를 쥐어뜯는 원인 1순위는 바로 태그가 가진 &lt;b&gt;'성격(Display)'&lt;/b&gt;을 몰라서입니다.&lt;/p&gt;
&lt;!-- 1줄 요약 --&gt;
&lt;div style=&quot;background-color: #eef2ff; padding: 16px; border-radius: 8px; margin-bottom: 16px; font-size: 0.95rem; color: #3730a3; font-weight: bold;&quot;&gt;  핵심 비유: Block은 '무조건 혼자 앉는 독방'이고, Inline은 '다닥다닥 붙어 앉는 합석'입니다.&lt;/div&gt;
&lt;div style=&quot;overflow-x: auto;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; min-width: 500px; font-size: 0.95rem; margin-top: 10px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #4f46e5; color: #ffffff;&quot;&gt;
&lt;th style=&quot;padding: 12px; text-align: left; border-radius: 8px 0 0 0;&quot;&gt;성격 (Display)&lt;/th&gt;
&lt;th style=&quot;padding: 12px; text-align: left;&quot;&gt;특징 비유&lt;/th&gt;
&lt;th style=&quot;padding: 12px; text-align: left; border-radius: 0 8px 0 0;&quot;&gt;크기/여백 조절&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr style=&quot;border-bottom: 1px solid #e2e8f0; background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;padding: 12px; font-weight: bold; color: #4f46e5;&quot;&gt;Block (블록)&lt;/td&gt;
&lt;td style=&quot;padding: 12px;&quot;&gt;&lt;b&gt;독방 VIP석.&lt;/b&gt; 자기 내용물이 작아도 무조건 가로 한 줄을 통째로 혼자 씁니다. (예: div, p)&lt;/td&gt;
&lt;td style=&quot;padding: 12px;&quot;&gt;✅ 너비(width), 상하좌우 여백(margin) &lt;b&gt;모두 맘대로 조절 가능&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;border-bottom: 1px solid #e2e8f0; background-color: #f8fafc;&quot;&gt;
&lt;td style=&quot;padding: 12px; font-weight: bold; color: #4f46e5;&quot;&gt;Inline (인라인)&lt;/td&gt;
&lt;td style=&quot;padding: 12px;&quot;&gt;&lt;b&gt;일반 합석.&lt;/b&gt; 딱 자기 글자 크기만큼만 자리를 차지하고, 옆에 다른 애가 와도 나란히 붙어 앉습니다. (예: span, a)&lt;/td&gt;
&lt;td style=&quot;padding: 12px; color: #dc2626;&quot;&gt;❌ 너비 조절 불가능! &lt;b&gt;위아래 여백(margin)도 무시됨!&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;border-bottom: 1px solid #e2e8f0; background-color: #ffffff;&quot;&gt;
&lt;td style=&quot;padding: 12px; font-weight: bold; color: #4f46e5;&quot;&gt;Inline-block&lt;/td&gt;
&lt;td style=&quot;padding: 12px;&quot;&gt;&lt;b&gt;혼종.&lt;/b&gt; 옆 사람과 나란히 붙어 앉으면서도(Inline 특징), 내 마음대로 덩치(크기)는 키울 수 있는(Block 특징) 성격입니다.&lt;/td&gt;
&lt;td style=&quot;padding: 12px;&quot;&gt;✅ 옆에 나란히 서면서 + 크기 조절도 다 됨&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;!-- 실전 디버깅 예제 --&gt;
&lt;div style=&quot;background-color: #f8fafc; padding: 24px; border-radius: 8px; margin-top: 24px;&quot;&gt;&lt;b&gt;❓ 인터넷에서 찾은 코드를 넣었는데 크기가 안 커져요!&lt;/b&gt;
&lt;p style=&quot;font-size: 0.95rem; margin-top: 8px; margin-bottom: 16px;&quot; data-ke-size=&quot;size16&quot;&gt;초보자가 가장 많이 하는 질문입니다. 링크를 거는 &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; 태그나 글자색을 바꾸는 &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; 태그에 아무리 너비(width)와 위 여백(margin-top)을 줘봐야 &lt;b&gt;아무 일도 일어나지 않습니다.&lt;/b&gt; 태생이 '합석(Inline)'이라서 그렇습니다.&lt;/p&gt;
&lt;div style=&quot;display: inline-block; background: #4f46e5; color: white; padding: 4px 10px; border-radius: 6px; font-size: 0.8rem; font-weight: bold; margin-bottom: 8px;&quot;&gt;해결 코드&lt;/div&gt;
&lt;div style=&quot;background-color: #1e293b; color: #e2e8f0; padding: 16px; border-radius: 8px; overflow-x: auto; font-family: monospace; font-size: 0.85rem; line-height: 1.7; margin-bottom: 0;&quot;&gt;&lt;span style=&quot;color: #ffcb6b;&quot;&gt;span&lt;/span&gt; { &lt;span style=&quot;color: #a6accd;&quot;&gt;/* ❌ Inline 성격이라 무시당하는 코드 */&lt;/span&gt; &lt;span style=&quot;color: #80cbc4;&quot;&gt;width&lt;/span&gt;: &lt;span style=&quot;color: #f78c6c;&quot;&gt;300px&lt;/span&gt;; &lt;span style=&quot;color: #80cbc4;&quot;&gt;margin-top&lt;/span&gt;: &lt;span style=&quot;color: #f78c6c;&quot;&gt;50px&lt;/span&gt;; &lt;span style=&quot;color: #a6accd;&quot;&gt;/* ✅ 해결: 성격을 바꿔주면 무시당하던 코드가 즉시 적용됨! */&lt;/span&gt; &lt;span style=&quot;color: #80cbc4;&quot;&gt;display&lt;/span&gt;: inline-block; }&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;!-- 6. 가운데 정렬 3가지 패턴 --&gt;
&lt;section style=&quot;margin-bottom: 56px;&quot;&gt;
&lt;h2 style=&quot;font-size: 1.3rem; color: #1e293b; border-left: 5px solid #4f46e5; padding-left: 12px; margin: 0 0 20px 0; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;6. 실전 필수: 가운데 정렬 3가지 패턴&lt;/h2&gt;
&lt;p style=&quot;font-size: 0.95rem;&quot; data-ke-size=&quot;size16&quot;&gt;가운데 정렬은 상황(어떤 태그 성격인지)에 따라 쓰는 문법이 전혀 다릅니다. 이 3가지만 기계적으로 외워두세요.&lt;/p&gt;
&lt;div style=&quot;display: inline-block; background: #4f46e5; color: white; padding: 4px 10px; border-radius: 6px; font-size: 0.8rem; font-weight: bold; margin-bottom: 8px;&quot;&gt;CSS 예제&lt;/div&gt;
&lt;div style=&quot;background-color: #1e293b; color: #e2e8f0; padding: 16px; border-radius: 8px; overflow-x: auto; font-family: monospace; font-size: 0.85rem; line-height: 1.7; margin-bottom: 24px;&quot;&gt;&lt;span style=&quot;color: #a6accd;&quot;&gt;/* 1. 박스(Block 요소) 자체를 통째로 가운데로 보낼 때 */&lt;/span&gt; &lt;span style=&quot;color: #ffcb6b;&quot;&gt;.box&lt;/span&gt; { &lt;span style=&quot;color: #80cbc4;&quot;&gt;width&lt;/span&gt;: &lt;span style=&quot;color: #f78c6c;&quot;&gt;300px&lt;/span&gt;; &lt;span style=&quot;color: #a6accd;&quot;&gt;/* 너비가 정해져 있어야 함 */&lt;/span&gt; &lt;span style=&quot;color: #80cbc4;&quot;&gt;margin&lt;/span&gt;: &lt;span style=&quot;color: #f78c6c;&quot;&gt;0&lt;/span&gt; &lt;span style=&quot;color: #c792ea;&quot;&gt;auto&lt;/span&gt;; &lt;span style=&quot;color: #a6accd;&quot;&gt;/* 좌우 여백을 반반씩 자동으로 남기라는 뜻 = 가운데 정렬 */&lt;/span&gt; } &lt;span style=&quot;color: #a6accd;&quot;&gt;/* 2. 글자나 작은 요소(Inline 요소)를 가운데로 보낼 때 */&lt;/span&gt; &lt;span style=&quot;color: #ffcb6b;&quot;&gt;.text-area&lt;/span&gt; { &lt;span style=&quot;color: #80cbc4;&quot;&gt;text-align&lt;/span&gt;: &lt;span style=&quot;color: #c792ea;&quot;&gt;center&lt;/span&gt;; } &lt;span style=&quot;color: #a6accd;&quot;&gt;/* 3. 요즘 가장 많이 쓰는 '완벽한 상하좌우' 중앙 정렬 (Day 5 예고편) */&lt;/span&gt; &lt;span style=&quot;color: #ffcb6b;&quot;&gt;.parent&lt;/span&gt; { &lt;span style=&quot;color: #80cbc4;&quot;&gt;display&lt;/span&gt;: flex; &lt;span style=&quot;color: #80cbc4;&quot;&gt;justify-content&lt;/span&gt;: &lt;span style=&quot;color: #c792ea;&quot;&gt;center&lt;/span&gt;; &lt;span style=&quot;color: #a6accd;&quot;&gt;/* 가로 중앙 */&lt;/span&gt; &lt;span style=&quot;color: #80cbc4;&quot;&gt;align-items&lt;/span&gt;: &lt;span style=&quot;color: #c792ea;&quot;&gt;center&lt;/span&gt;; &lt;span style=&quot;color: #a6accd;&quot;&gt;/* 세로 중앙 */&lt;/span&gt; }&lt;/div&gt;
&lt;/section&gt;
&lt;!-- 7. 계층 선택자 --&gt;
&lt;section style=&quot;margin-bottom: 56px;&quot;&gt;
&lt;h2 style=&quot;font-size: 1.3rem; color: #1e293b; border-left: 5px solid #4f46e5; padding-left: 12px; margin: 0 0 20px 0; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;7. 티스토리 정밀 타겟팅: 계층 선택자&lt;/h2&gt;
&lt;div style=&quot;background-color: #f8fafc; padding: 24px; border-radius: 8px; margin-bottom: 16px;&quot;&gt;
&lt;div style=&quot;font-weight: bold; color: #4f46e5; margin-bottom: 8px;&quot;&gt;  비유로 이해하기: 주소 좁혀가기&lt;/div&gt;
&quot;123번지&quot;라고만 부르면 전국에 있는 수많은 123번지 중 어디인지 모릅니다. &quot;서울시 &amp;gt; 강남구 &amp;gt; 역삼동 &amp;gt; 123번지&quot;처럼 &lt;b&gt;부모부터 좁혀가면서 대상을 명확히 찍어주는 기술&lt;/b&gt;입니다. 티스토리 스킨의 기존 디자인을 이기려면 이렇게 구체적으로 불러야 합니다.&lt;/div&gt;
&lt;div style=&quot;display: inline-block; background: #4f46e5; color: white; padding: 4px 10px; border-radius: 6px; font-size: 0.8rem; font-weight: bold; margin-bottom: 8px;&quot;&gt;CSS 예제&lt;/div&gt;
&lt;div style=&quot;background-color: #1e293b; color: #e2e8f0; padding: 16px; border-radius: 8px; overflow-x: auto; font-family: monospace; font-size: 0.85rem; line-height: 1.7; margin-bottom: 24px;&quot;&gt;&lt;span style=&quot;color: #a6accd;&quot;&gt;/* 공백(띄어쓰기) = &quot;~안에 있는 모든 자손&quot; */&lt;/span&gt; &lt;span style=&quot;color: #ffcb6b;&quot;&gt;.sidebar&lt;/span&gt; &lt;span style=&quot;color: #ffcb6b;&quot;&gt;p&lt;/span&gt; { &lt;span style=&quot;color: #80cbc4;&quot;&gt;color&lt;/span&gt;: &lt;span style=&quot;color: #f78c6c;&quot;&gt;#333333&lt;/span&gt;; &lt;span style=&quot;color: #a6accd;&quot;&gt;/* 사이드바 안에 있는 모든 p태그의 색을 바꿔라 */&lt;/span&gt; } &lt;span style=&quot;color: #a6accd;&quot;&gt;/* 꺾쇠(&amp;gt;) = &quot;~바로 밑에 있는 자식만&quot; */&lt;/span&gt; &lt;span style=&quot;color: #ffcb6b;&quot;&gt;.menu&lt;/span&gt; &amp;gt; &lt;span style=&quot;color: #ffcb6b;&quot;&gt;li&lt;/span&gt; { &lt;span style=&quot;color: #80cbc4;&quot;&gt;font-size&lt;/span&gt;: &lt;span style=&quot;color: #f78c6c;&quot;&gt;16px&lt;/span&gt;; &lt;span style=&quot;color: #a6accd;&quot;&gt;/* 메뉴 바로 아래에 있는 1차 항목만 바꿔라 (더 깊은 곳은 무시) */&lt;/span&gt; }&lt;/div&gt;
&lt;/section&gt;
&lt;!-- 8. 오늘의 실습 + 디버깅 --&gt;
&lt;section style=&quot;margin-bottom: 56px;&quot;&gt;
&lt;h2 style=&quot;font-size: 1.3rem; color: #1e293b; border-left: 5px solid #4f46e5; padding-left: 12px; margin: 0 0 20px 0; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;8. 오늘의 실습: F12 확인 및 복붙 실습&lt;/h2&gt;
&lt;div style=&quot;display: flex; align-items: center; margin-bottom: 12px;&quot;&gt;&lt;span style=&quot;background-color: #4f46e5; color: #ffffff; width: 22px; height: 22px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 0.85rem; font-weight: bold; margin-right: 10px;&quot;&gt;1&lt;/span&gt; &lt;span style=&quot;font-size: 0.95rem;&quot;&gt;내 티스토리 블로그를 열고 &lt;b&gt;F12(개발자 도구)&lt;/b&gt;를 누릅니다.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;display: flex; align-items: center; margin-bottom: 12px;&quot;&gt;&lt;span style=&quot;background-color: #4f46e5; color: #ffffff; width: 22px; height: 22px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 0.85rem; font-weight: bold; margin-right: 10px;&quot;&gt;2&lt;/span&gt; &lt;span style=&quot;font-size: 0.95rem;&quot;&gt;좌측 상단의 커서(↖) 아이콘을 클릭하고, 디자인을 바꾸고 싶은 곳(예: 글 제목)을 클릭합니다.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;display: flex; align-items: center; margin-bottom: 12px;&quot;&gt;&lt;span style=&quot;background-color: #4f46e5; color: #ffffff; width: 22px; height: 22px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 0.85rem; font-weight: bold; margin-right: 10px;&quot;&gt;3&lt;/span&gt; &lt;span style=&quot;font-size: 0.95rem;&quot;&gt;오른쪽 &lt;b&gt;Styles 패널&lt;/b&gt; 맨 아래로 스크롤을 내려 네모난 박스 모델(Margin, Padding) 그림을 확인합니다.&lt;/span&gt;&lt;/div&gt;
&lt;!-- 복붙 실습 블록 (성공 체험) --&gt;
&lt;div style=&quot;background-color: #f8fafc; padding: 24px; border-radius: 8px; margin-top: 24px; border: 1px solid #e2e8f0;&quot;&gt;&lt;b&gt;  3분 복붙 실습: 내 블로그에 직접 넣어보기&lt;/b&gt;
&lt;p style=&quot;font-size: 0.95rem; margin-top: 0; margin-bottom: 16px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;블로그 관리자 &amp;rarr; 스킨편집 &amp;rarr; HTML 편집 &amp;rarr; CSS 탭&lt;/b&gt; 맨 아래에 아래 코드를 그대로 복사해서 붙여넣고 '적용'을 눌러보세요.&lt;/p&gt;
&lt;div style=&quot;display: inline-block; background: #4f46e5; color: white; padding: 4px 10px; border-radius: 6px; font-size: 0.8rem; font-weight: bold; margin-bottom: 8px;&quot;&gt;CSS 예제&lt;/div&gt;
&lt;div style=&quot;background-color: #1e293b; color: #e2e8f0; padding: 16px; border-radius: 8px; overflow-x: auto; font-family: monospace; font-size: 0.85rem; line-height: 1.7; margin-bottom: 16px;&quot;&gt;&lt;span style=&quot;color: #ffcb6b;&quot;&gt;.practice-card&lt;/span&gt; { &lt;span style=&quot;color: #80cbc4;&quot;&gt;background&lt;/span&gt;: &lt;span style=&quot;color: #c792ea;&quot;&gt;white&lt;/span&gt;; &lt;span style=&quot;color: #80cbc4;&quot;&gt;padding&lt;/span&gt;: &lt;span style=&quot;color: #f78c6c;&quot;&gt;24px&lt;/span&gt;; &lt;span style=&quot;color: #80cbc4;&quot;&gt;margin-bottom&lt;/span&gt;: &lt;span style=&quot;color: #f78c6c;&quot;&gt;20px&lt;/span&gt;; &lt;span style=&quot;color: #80cbc4;&quot;&gt;border&lt;/span&gt;: &lt;span style=&quot;color: #f78c6c;&quot;&gt;1px&lt;/span&gt; solid &lt;span style=&quot;color: #c792ea;&quot;&gt;#e2e8f0&lt;/span&gt;; &lt;span style=&quot;color: #80cbc4;&quot;&gt;border-radius&lt;/span&gt;: &lt;span style=&quot;color: #f78c6c;&quot;&gt;12px&lt;/span&gt;; }&lt;/div&gt;
&lt;ul style=&quot;margin-top: 0; margin-bottom: 0; padding-left: 20px; font-size: 0.95rem; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;padding&lt;/code&gt; 숫자를 &lt;b&gt;50px&lt;/b&gt;로 바꿔보세요. 박스 안쪽이 뚱뚱해집니다.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;border-radius&lt;/code&gt; 숫자를 &lt;b&gt;50px&lt;/b&gt;로 바꿔보세요. 모서리가 둥글게 변합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 디버깅 팁 --&gt;
&lt;div style=&quot;background-color: #fff7ed; border-left: 4px solid #f97316; padding: 16px; border-radius: 4px; margin-top: 24px;&quot;&gt;&lt;b&gt; ️ 왜 내가 쓴 코드만 적용이 안 될까? (디버깅)&lt;/b&gt;&lt;br /&gt;F12 창 오른쪽(Styles 패널)에 나타난 내 코드를 자세히 보세요.&lt;br /&gt;
&lt;ul style=&quot;margin-top: 8px; margin-bottom: 0; padding-left: 20px; font-size: 0.95rem; color: #431407;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;del&gt;color: red;&lt;/del&gt; &lt;b&gt;(가운데 줄이 쭉 그어져 있다)&lt;/b&gt;   원래 있던 스킨 코드보다 내 코드의 '힘(우선순위)'이 약해서 졌다는 뜻입니다. 계층 선택자로 주소를 더 길게 적어주세요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;(내가 쓴 코드가 아예 안 보인다)&lt;/b&gt;   클래스 이름 앞에 점(.)을 빼먹었거나 오타가 난 겁니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;!-- 체크리스트 &amp; 요약 --&gt;
&lt;section style=&quot;margin-bottom: 56px;&quot;&gt;
&lt;h2 style=&quot;font-size: 1.3rem; color: #1e293b; border-left: 5px solid #4f46e5; padding-left: 12px; margin: 0 0 20px 0; font-weight: bold;&quot; data-ke-size=&quot;size26&quot;&gt;☑️ Day 4 완료 체크리스트&lt;/h2&gt;
&lt;!-- 모바일 가독성 높은 카드형 체크리스트 --&gt;
&lt;div style=&quot;background: white; padding: 16px; border-radius: 8px; margin-bottom: 12px; display: flex; align-items: flex-start; border: 1px solid #e2e8f0;&quot;&gt;
&lt;div style=&quot;font-size: 1.2rem; color: #4f46e5; font-weight: bold; margin-right: 12px; margin-top: -4px;&quot;&gt;☐&lt;/div&gt;
&lt;div style=&quot;font-size: 0.95rem;&quot;&gt;선택자의 힘은 &lt;b&gt;태그 &amp;lt; 클래스(.) &amp;lt; ID(#)&lt;/b&gt; 순서라는 걸 안다.&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background: white; padding: 16px; border-radius: 8px; margin-bottom: 12px; display: flex; align-items: flex-start; border: 1px solid #e2e8f0;&quot;&gt;
&lt;div style=&quot;font-size: 1.2rem; color: #4f46e5; font-weight: bold; margin-right: 12px; margin-top: -4px;&quot;&gt;☐&lt;/div&gt;
&lt;div style=&quot;font-size: 0.95rem;&quot;&gt;박스 안쪽을 찌우는 건 &lt;b&gt;Padding&lt;/b&gt;, 바깥을 띄우는 건 &lt;b&gt;Margin&lt;/b&gt;임을 구분할 수 있다.&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background: white; padding: 16px; border-radius: 8px; margin-bottom: 12px; display: flex; align-items: flex-start; border: 1px solid #e2e8f0;&quot;&gt;
&lt;div style=&quot;font-size: 1.2rem; color: #4f46e5; font-weight: bold; margin-right: 12px; margin-top: -4px;&quot;&gt;☐&lt;/div&gt;
&lt;div style=&quot;font-size: 0.95rem;&quot;&gt;&lt;code&gt;box-sizing: border-box&lt;/code&gt;를 쓰면 상자 크기 맞추기가 훨씬 쉬워진다는 걸 설명할 수 있다.&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background: white; padding: 16px; border-radius: 8px; margin-bottom: 12px; display: flex; align-items: flex-start; border: 1px solid #e2e8f0;&quot;&gt;
&lt;div style=&quot;font-size: 1.2rem; color: #4f46e5; font-weight: bold; margin-right: 12px; margin-top: -4px;&quot;&gt;☐&lt;/div&gt;
&lt;div style=&quot;font-size: 0.95rem;&quot;&gt;inline 요소(합석)에는 크기나 상하여백을 줘봤자 무시당한다는 사실을 이해했다.&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;!-- 초보자 FAQ --&gt;&lt;details style=&quot;margin-top: 30px; margin-bottom: 40px; background: #f8fafc; padding: 16px 20px; border-radius: 8px; border: 1px solid #e2e8f0;&quot;&gt;
&lt;summary style=&quot;cursor: pointer; font-weight: bold; font-size: 1.05rem; color: #1e293b;&quot;&gt;❓ 초보자가 가장 많이 하는 질문 (FAQ)&lt;/summary&gt;
&lt;div style=&quot;margin-top: 16px; font-size: 0.95rem; border-top: 1px dashed #cbd5e1; padding-top: 16px; line-height: 1.8;&quot;&gt;&lt;b&gt;Q. CSS 코드를 바꿨는데 왜 제 블로그엔 적용이 안 돼요?&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;color: #475569;&quot;&gt;A. 4가지 중 하나일 확률이 99%입니다.&lt;br /&gt;1. &lt;b&gt;캐시 문제:&lt;/b&gt; 브라우저가 옛날 디자인을 붙잡고 있습니다. (해결: 강력 새로고침 Ctrl+Shift+R)&lt;br /&gt;2. &lt;b&gt;선택자 오타:&lt;/b&gt; 클래스 이름 앞의 점(.)을 빼먹었거나 스펠링을 틀렸습니다.&lt;br /&gt;3. &lt;b&gt;우선순위 밀림:&lt;/b&gt; 기존 스킨의 CSS가 힘이 더 세서 내 명령이 먹히지 않았습니다. (해결: 계층을 더 길게 써보세요)&lt;br /&gt;4. &lt;b&gt;Display 성격:&lt;/b&gt; inline 요소에 크기나 위아래 여백을 주려 했습니다. (해결: &lt;code&gt;display: inline-block;&lt;/code&gt; 추가)&lt;/span&gt;&lt;/div&gt;
&lt;/details&gt;&lt;!-- 푸터: Next Step --&gt;&lt;footer style=&quot;border: 2px dashed #4f46e5; border-radius: 8px; padding: 24px; text-align: center; background-color: #f8fafc; margin-top: 40px;&quot;&gt;
&lt;div style=&quot;font-size: 1.1rem; font-weight: bold; color: #1e293b; margin-bottom: 16px;&quot;&gt;박스 모델과 성격을 이해했다면, 이제 내 맘대로 요소를 배치할 차례입니다!&lt;/div&gt;
&lt;div style=&quot;display: inline-block; background-color: #4f46e5; color: #ffffff; padding: 12px 24px; border-radius: 30px; font-weight: bold; font-size: 1rem; cursor: pointer; box-shadow: 0 4px 6px rgba(79, 70, 229, 0.3);&quot;&gt;Next Step   Day 5 &amp;mdash; 현대 레이아웃의 꽃, CSS Flexbox&lt;/div&gt;
&lt;/footer&gt;&lt;/div&gt;</description>
      <category>코딩/웹디자인</category>
      <author>data-pantry</author>
      <guid isPermaLink="true">https://data-pantry.tistory.com/15</guid>
      <comments>https://data-pantry.tistory.com/15#entry15comment</comments>
      <pubDate>Wed, 13 May 2026 15:11:32 +0900</pubDate>
    </item>
    <item>
      <title>Google Gemini 폴더 정리 확장앱(Google Chrome, Naver Whale 등...) 제미나이 편하게 사용하세요. [Gemini</title>
      <link>https://data-pantry.tistory.com/13</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2730&quot; data-origin-height=&quot;1536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wkKs3/dJMcagefa0P/aupbUBnUReVfysMRBXEzVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wkKs3/dJMcagefa0P/aupbUBnUReVfysMRBXEzVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wkKs3/dJMcagefa0P/aupbUBnUReVfysMRBXEzVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwkKs3%2FdJMcagefa0P%2FaupbUBnUReVfysMRBXEzVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2730&quot; height=&quot;1536&quot; data-origin-width=&quot;2730&quot; data-origin-height=&quot;1536&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;

&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
&lt;meta name=&quot;description&quot; content=&quot;Gemini Folder Manager v3.7 공식 사용 가이드&quot;&gt;
&lt;title&gt;Gemini Folder Manager v3.7 사용 가이드&lt;/title&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700&amp;family=Noto+Sans+JP:wght@400;500;700&amp;family=Inter:wght@400;500;600;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
:root{
  --bg:#f4f5fb;--bg2:#ffffff;--bg3:#eaecf7;--card:#ffffff;
  --border:#d5d8ee;--text:#1c1e35;--muted:#6b6f98;
  --accent:#5060e8;--green:#1a8c40;--amber:#b87200;--red:#cc3333;
  --radius:12px;--radius-sm:8px;
  --font-ko:&quot;Noto Sans KR&quot;,sans-serif;
  --font-en:&quot;Inter&quot;,sans-serif;
  --font-ja:&quot;Noto Sans JP&quot;,sans-serif;
  --font:var(--font-ko);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;font-size:15px}
body{
  background:var(--bg);color:var(--text);
  font-family:var(--font);line-height:1.75;
  -webkit-font-smoothing:antialiased;
  word-break:keep-all;overflow-wrap:break-word;
}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}

/* ── Lang switcher ── */
.lang-switcher{
  position:fixed;top:16px;right:16px;z-index:999;
  display:flex;gap:4px;
  background:#fff;border:1px solid var(--border);
  border-radius:30px;padding:4px;
  box-shadow:0 2px 12px rgba(80,96,232,.15);
}
.lang-btn{
  background:none;border:none;cursor:pointer;
  color:var(--muted);font-size:.75rem;font-weight:700;
  padding:5px 11px;border-radius:20px;
  transition:all .2s;letter-spacing:.5px;
  font-family:var(--font-en);
}
.lang-btn:hover{color:var(--accent)}
.lang-btn.active{background:var(--accent);color:#fff}

/* ── Layout wrapper ── */
.wrapper{max-width:800px;margin:0 auto;padding:20px 16px 60px}

/* ── Header ── */
.guide-header{
  padding:48px 0 36px;
  border-bottom:1px solid var(--border);
  margin-bottom:36px;
}
.header-badge{
  display:inline-flex;align-items:center;gap:6px;
  background:rgba(80,96,232,.08);border:1px solid rgba(80,96,232,.2);
  border-radius:20px;padding:4px 12px;
  font-size:.75rem;color:var(--accent);font-weight:600;
  margin-bottom:16px;letter-spacing:.3px;
}
.guide-title{
  font-size:clamp(1.7rem,5vw,2.4rem);font-weight:700;
  color:var(--text);line-height:1.2;margin-bottom:6px;
}
.guide-title .ver{
  font-size:.7em;font-weight:400;color:var(--muted);
  vertical-align:middle;margin-left:8px;
}
.guide-subtitle{
  font-size:.95rem;color:var(--muted);margin-bottom:20px;
}
.guide-intro{
  font-size:1rem;color:var(--text);line-height:1.85;
  background:var(--bg3);border-left:3px solid var(--accent);
  border-radius:0 var(--radius-sm) var(--radius-sm) 0;
  padding:14px 18px;
  word-break:keep-all;overflow-wrap:break-word;
}

/* ── TOC ── */
.toc-card{
  background:var(--bg2);border:1px solid var(--border);
  border-radius:var(--radius);padding:20px 24px;margin-bottom:40px;
}
.toc-heading{
  font-size:.7rem;font-weight:700;color:var(--muted);
  text-transform:uppercase;letter-spacing:1.2px;margin-bottom:14px;
}
.toc-list{
  list-style:none;
  display:grid;grid-template-columns:1fr 1fr;gap:4px 20px;
}
@media(max-width:480px){.toc-list{grid-template-columns:1fr}}
.toc-list li a{
  display:flex;align-items:center;gap:6px;
  font-size:.88rem;color:var(--text);
  padding:6px 8px;border-radius:6px;
  transition:background .15s,color .15s;
}
.toc-list li a:hover{
  background:rgba(80,96,232,.08);color:var(--accent);
  text-decoration:none;
}
.toc-num{
  font-size:.72rem;color:var(--muted);font-weight:600;
  min-width:20px;font-family:var(--font-en);
}

/* ── Sections ── */
.section{margin-bottom:52px;scroll-margin-top:24px}
.section-header{
  display:flex;align-items:center;gap:10px;
  margin-bottom:22px;padding-bottom:12px;
  border-bottom:1px solid var(--border);
}
.section-num{
  font-size:.72rem;font-weight:700;color:var(--muted);
  font-family:var(--font-en);letter-spacing:.5px;
  background:var(--bg3);border:1px solid var(--border);
  border-radius:6px;padding:2px 8px;flex-shrink:0;
}
.section-title{
  font-size:1.2rem;font-weight:700;color:var(--text);
}

/* ── Cards ── */
.card{
  background:var(--bg2);border:1px solid var(--border);
  border-radius:var(--radius);padding:18px 20px;margin-bottom:12px;
}
.card-title{
  font-size:.92rem;font-weight:700;color:var(--text);
  margin-bottom:10px;display:flex;align-items:center;gap:7px;
}
.card p{font-size:.9rem;color:var(--text);margin-bottom:8px;line-height:1.8;word-break:keep-all;overflow-wrap:break-word}
.card p:last-child{margin-bottom:0}

/* ── Steps ── */
.steps{list-style:none;counter-reset:step;padding-left:0}
.steps li{
  counter-increment:step;
  position:relative;
  padding:10px 0 10px 34px;
  font-size:.9rem;
  border-bottom:1px solid rgba(180,184,220,.45);
  word-break:keep-all;overflow-wrap:break-word;
  line-height:1.8;
}
.steps li:last-child{border-bottom:none}
.steps li::before{
  content:counter(step);
  position:absolute;
  left:0;top:12px;
  background:var(--accent);color:#fff;
  font-size:.68rem;font-weight:700;font-family:var(--font-en);
  width:22px;height:22px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
}

/* ── Tips ── */
.tip{
  position:relative;
  padding:12px 14px 12px 36px;
  background:rgba(184,114,0,.07);border:1px solid rgba(184,114,0,.25);
  border-radius:var(--radius-sm);
  font-size:.85rem;color:var(--text);margin-top:10px;line-height:1.8;
  word-break:keep-all;overflow-wrap:break-word;
}
.tip-icon{
  position:absolute;left:12px;top:13px;
  font-size:.95rem;line-height:1;
}
.warn{
  background:rgba(204,51,51,.06);border-color:rgba(204,51,51,.25);
}
.warn .tip-icon::before{content:&quot;⚠️&quot;}

/* ── Tables ── */
.tbl-wrap{overflow-x:auto;margin:10px 0}
table{
  width:100%;border-collapse:collapse;font-size:.85rem;
}
th{
  background:var(--bg3);color:var(--muted);
  font-size:.72rem;font-weight:700;letter-spacing:.5px;text-transform:uppercase;
  padding:9px 12px;text-align:left;border-bottom:1px solid var(--border);
}
td{
  padding:9px 12px;border-bottom:1px solid rgba(180,184,220,.4);
  color:var(--text);vertical-align:top;
  word-break:keep-all;overflow-wrap:break-word;
}
tr:last-child td{border-bottom:none}
td:first-child{font-weight:500}

/* ── Setting list (replaces 3-col table) ── */
.setting-list{display:flex;flex-direction:column;gap:0}
.setting-item{
  padding:12px 0;
  border-bottom:1px solid rgba(180,184,220,.4);
}
.setting-item:last-child{border-bottom:none}
.setting-name{
  font-size:.88rem;font-weight:700;color:var(--text);
  margin-bottom:4px;word-break:keep-all;
}
.setting-row{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.setting-desc{
  font-size:.85rem;color:var(--muted);line-height:1.7;
  word-break:keep-all;overflow-wrap:break-word;flex:1;
}
.setting-default{
  flex-shrink:0;
  font-size:.72rem;font-weight:700;font-family:var(--font-en);
  background:rgba(80,96,232,.1);color:var(--accent);
  border:1px solid rgba(80,96,232,.2);
  border-radius:10px;padding:2px 8px;white-space:nowrap;
}

/* ── Feature grid ── */
.feat-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:10px;
}
@media(max-width:480px){.feat-grid{grid-template-columns:1fr}}
.feat-item{
  background:var(--bg3);border:1px solid var(--border);
  border-radius:var(--radius-sm);padding:13px 15px;
}
.feat-label{font-size:.75rem;color:var(--muted);margin-bottom:4px;font-weight:600}
.feat-value{font-size:.9rem;color:var(--text);font-weight:500;word-break:keep-all}

/* ── Badge tags ── */
.tag{
  display:inline-flex;align-items:center;
  background:rgba(80,96,232,.1);border:1px solid rgba(80,96,232,.25);
  border-radius:10px;padding:2px 8px;font-size:.72rem;color:var(--accent);
  font-weight:600;margin:0 2px;
}
.tag-green{background:rgba(26,140,64,.1);border-color:rgba(26,140,64,.25);color:var(--green)}
.tag-lock{background:rgba(184,114,0,.1);border-color:rgba(184,114,0,.25);color:var(--amber)}

/* ── Footer ── */
.guide-footer{
  text-align:center;padding:32px 0;
  border-top:1px solid var(--border);
  color:var(--muted);font-size:.8rem;line-height:2;
  background:var(--bg);
}
.guide-footer a{color:var(--accent)}

/* ── Transitions ── */
.lang-content{display:none}
.lang-content.active{display:block}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div class=&quot;lang-switcher&quot;&gt;
  &lt;button class=&quot;lang-btn active&quot; data-lang=&quot;ko&quot; onclick=&quot;setLang('ko')&quot;&gt;KO&lt;/button&gt;
  &lt;button class=&quot;lang-btn&quot; data-lang=&quot;en&quot; onclick=&quot;setLang('en')&quot;&gt;EN&lt;/button&gt;
  &lt;button class=&quot;lang-btn&quot; data-lang=&quot;ja&quot; onclick=&quot;setLang('ja')&quot;&gt;JA&lt;/button&gt;
&lt;/div&gt;

&lt;!-- ════════════════════════════════ KOREAN ════════════════════════════════ --&gt;
&lt;div id=&quot;content-ko&quot; class=&quot;lang-content active&quot;&gt;
&lt;div class=&quot;wrapper&quot;&gt;

&lt;header class=&quot;guide-header&quot;&gt;
  &lt;div class=&quot;header-badge&quot;&gt;  공식 사용 가이드&lt;/div&gt;
  &lt;h1 class=&quot;guide-title&quot;&gt;Gemini Folder Manager &lt;span class=&quot;ver&quot;&gt;v3.7&lt;/span&gt;&lt;/h1&gt;
  &lt;p class=&quot;guide-subtitle&quot;&gt;Chrome 확장 프로그램 · 대화 폴더 정리 도구&lt;/p&gt;
  &lt;p class=&quot;guide-intro&quot;&gt;
    Gemini를 쓰다 보면 대화가 정말 빠르게 쌓이더라고요. 처음엔 괜찮다가 50개, 100개 넘어가면 찾고 싶은 게 어디 있는지 감도 안 잡히는 경우가 생기죠. 그래서 직접 만든 게 &lt;strong&gt;Gemini Folder Manager&lt;/strong&gt;입니다. 폴더로 묶고, 핀 고정하고, 검색까지 — 필요한 부분만 골라 읽으셔도 됩니다.
  &lt;/p&gt;
&lt;/header&gt;

&lt;nav class=&quot;toc-card&quot;&gt;
  &lt;div class=&quot;toc-heading&quot;&gt;목차&lt;/div&gt;
  &lt;ol class=&quot;toc-list&quot;&gt;
    &lt;li&gt;&lt;a href=&quot;#ko-s01&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;01&lt;/span&gt;  설치 및 시작&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ko-s02&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;02&lt;/span&gt;  화면 구성&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ko-s03&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;03&lt;/span&gt;  폴더 관리&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ko-s04&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;04&lt;/span&gt;  채팅 배정&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ko-s05&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;05&lt;/span&gt;  핀 고정&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ko-s06&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;06&lt;/span&gt;  검색·필터·정렬&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ko-s07&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;07&lt;/span&gt;☑ 일괄 선택&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ko-s08&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;08&lt;/span&gt;  폴더 잠금&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ko-s09&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;09&lt;/span&gt;  휴지통&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ko-s10&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;10&lt;/span&gt;  프로필&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ko-s11&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;11&lt;/span&gt;⚙ 설정 안내&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/nav&gt;

&lt;main&gt;

&lt;!-- 01 설치 --&gt;
&lt;section id=&quot;ko-s01&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-num&quot;&gt;01&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;  설치 및 시작&lt;/h2&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;Chrome 브라우저에서 &lt;strong&gt;Chrome 웹 스토어&lt;/strong&gt;에 접속해 &lt;em&gt;Gemini Folder Manager&lt;/em&gt;를 검색하고 Chrome에 추가를 클릭합니다.&lt;/li&gt;
      &lt;li&gt;설치 후 &lt;strong&gt;gemini.google.com&lt;/strong&gt;을 열어두세요. Gemini 탭이 반드시 열려 있어야 확장이 작동합니다.&lt;/li&gt;
      &lt;li&gt;브라우저 오른쪽 상단의 확장 아이콘을 클릭하고 Gemini Folder Manager를 선택하면 사이드 패널이 열립니다.&lt;/li&gt;
      &lt;li&gt;사이드 패널 상단의   &lt;strong&gt;새로고침&lt;/strong&gt; 버튼을 누르면 현재 Gemini의 대화 목록을 불러옵니다.&lt;/li&gt;
    &lt;/ol&gt;
    &lt;div class=&quot;tip&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt; &lt;/span&gt;처음 실행 시 Gemini 탭에서 대화 목록을 자동으로 스크롤하며 수집합니다. 대화가 많을수록 조금 걸릴 수 있으니 탭을 닫지 말고 잠깐 기다려 주세요.&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;!-- 02 화면 구성 --&gt;
&lt;section id=&quot;ko-s02&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-num&quot;&gt;02&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;  화면 구성&lt;/h2&gt;
  &lt;/div&gt;
  &lt;div class=&quot;feat-grid&quot;&gt;
    &lt;div class=&quot;feat-item&quot;&gt;
      &lt;div class=&quot;feat-label&quot;&gt;탭 전환&lt;/div&gt;
      &lt;div class=&quot;feat-value&quot;&gt;  폴더 정리 &amp;nbsp;/&amp;nbsp;   휴지통&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;feat-item&quot;&gt;
      &lt;div class=&quot;feat-label&quot;&gt;  새로고침&lt;/div&gt;
      &lt;div class=&quot;feat-value&quot;&gt;Gemini에서 최신 대화 가져오기&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;feat-item&quot;&gt;
      &lt;div class=&quot;feat-label&quot;&gt;+ 폴더&lt;/div&gt;
      &lt;div class=&quot;feat-value&quot;&gt;새 폴더 만들기&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;feat-item&quot;&gt;
      &lt;div class=&quot;feat-label&quot;&gt;✏️ 편집 모드&lt;/div&gt;
      &lt;div class=&quot;feat-value&quot;&gt;순서·이름·색상 편집, 하위 폴더 추가&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;feat-item&quot;&gt;
      &lt;div class=&quot;feat-label&quot;&gt;☑ 일괄 선택&lt;/div&gt;
      &lt;div class=&quot;feat-value&quot;&gt;여러 대화 한 번에 이동·삭제&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;feat-item&quot;&gt;
      &lt;div class=&quot;feat-label&quot;&gt;⚙ 설정&lt;/div&gt;
      &lt;div class=&quot;feat-value&quot;&gt;언어·테마·글자 크기 등 전체 옵션&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;!-- 03 폴더 관리 --&gt;
&lt;section id=&quot;ko-s03&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-num&quot;&gt;03&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;  폴더 관리&lt;/h2&gt;
  &lt;/div&gt;

  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;  폴더 만들기&lt;/div&gt;
    &lt;p&gt;상단 &lt;strong&gt;+ 폴더&lt;/strong&gt; 버튼 클릭 → 이름 입력 → Enter 또는 만들기. 폴더 이름은 최대 40자, 중복 불가합니다.&lt;/p&gt;
    &lt;div class=&quot;tip&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt; &lt;/span&gt;v3.7에서는 폴더(하위 폴더 포함) 최대 &lt;strong&gt;7개&lt;/strong&gt;까지 만들 수 있어요.&lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;✏️ 편집 모드 기능&lt;/div&gt;
    &lt;p&gt;상단 편집 모드 버튼을 켜면 폴더마다 조작 버튼이 나타납니다.&lt;/p&gt;
    &lt;div class=&quot;tbl-wrap&quot;&gt;
      &lt;table&gt;
        &lt;thead&gt;&lt;tr&gt;&lt;th&gt;버튼&lt;/th&gt;&lt;th&gt;기능&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;&lt;td&gt;✏️&lt;/td&gt;&lt;td&gt;폴더 이름 변경&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt;색상 선택 — 5가지 프리셋 + 직접 입력(커스텀)&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt;PIN 잠금 설정 / 해제&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt;폴더 삭제 (내부 대화 함께 삭제 여부 선택 가능)&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;⠿ (드래그)&lt;/td&gt;&lt;td&gt;폴더 순서 드래그 앤 드롭으로 변경&lt;/td&gt;&lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;  하위 폴더&lt;/div&gt;
    &lt;p&gt;편집 모드에서 원하는 폴더 하단 입력창에 이름을 입력하고 + 추가를 누르거나, 폴더를 우클릭해서 &lt;strong&gt;하위 폴더 추가&lt;/strong&gt;를 선택하면 됩니다.&lt;/p&gt;
    &lt;p&gt;하위 폴더는 &lt;code style=&quot;font-size:.8rem;background:var(--bg3);padding:1px 5px;border-radius:4px&quot;&gt;└ 이름&lt;/code&gt; 형태로 표시되며, 채팅 배정 시 선택할 수 있습니다.&lt;/p&gt;
  &lt;/div&gt;

  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;  우클릭 컨텍스트 메뉴 (폴더)&lt;/div&gt;
    &lt;p&gt;폴더 헤더를 우클릭하면 이름 변경 · 색상·아이콘 · 하위 폴더 추가 · 잠금 · 전체 선택 · 폴더 삭제 메뉴가 바로 뜹니다.&lt;/p&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;!-- 04 채팅 배정 --&gt;
&lt;section id=&quot;ko-s04&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-num&quot;&gt;04&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;  채팅 배정&lt;/h2&gt;
  &lt;/div&gt;

  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;폴더에 채팅 넣기&lt;/div&gt;
    &lt;p&gt;채팅 항목을 &lt;strong&gt;우클릭 → 폴더로 이동 → 원하는 폴더 선택&lt;/strong&gt;하면 됩니다.&lt;/p&gt;
  &lt;/div&gt;

  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;우클릭 메뉴 전체 항목&lt;/div&gt;
    &lt;div class=&quot;tbl-wrap&quot;&gt;
      &lt;table&gt;
        &lt;thead&gt;&lt;tr&gt;&lt;th&gt;메뉴 항목&lt;/th&gt;&lt;th&gt;설명&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;&lt;td&gt;  고정 / 해제&lt;/td&gt;&lt;td&gt;최상단 고정 섹션에 표시&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;✏️ 이름 변경&lt;/td&gt;&lt;td&gt;앱 내에서만 표시되는 로컬 별칭 설정&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;  폴더로 이동&lt;/td&gt;&lt;td&gt;하위 폴더 포함 선택해서 이동&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;  링크 복사&lt;/td&gt;&lt;td&gt;해당 대화 URL을 클립보드에 복사&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;  휴지통으로&lt;/td&gt;&lt;td&gt;7일 후 자동 영구 삭제&lt;/td&gt;&lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;대화 이름 변경 (로컬 별칭)&lt;/div&gt;
    &lt;p&gt;편집 모드에서 채팅 제목을 더블클릭하거나 우클릭 → 이름 변경으로 별칭을 붙일 수 있어요. 변경한 이름은 &lt;strong&gt;이 앱 안에서만&lt;/strong&gt; 보이고, Gemini 원본에는 전혀 영향을 주지 않습니다.&lt;/p&gt;
    &lt;div class=&quot;tip&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt; &lt;/span&gt;설정에서 &lt;strong&gt;내가 바꾼 대화 이름 유지&lt;/strong&gt;를 켜두면 새로고침 후에도 별칭이 사라지지 않습니다.&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;!-- 05 핀 고정 --&gt;
&lt;section id=&quot;ko-s05&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-num&quot;&gt;05&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;  핀 고정&lt;/h2&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;p&gt;자주 쓰는 채팅을 목록 맨 위 &lt;strong&gt;고정된 대화&lt;/strong&gt; 섹션에 올려둘 수 있습니다.&lt;/p&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;채팅 우클릭 → &lt;strong&gt;고정&lt;/strong&gt; / 고정 해제&lt;/li&gt;
      &lt;li&gt;고정된 채팅도 폴더 배정이 가능합니다 (두 곳 모두에 표시됩니다).&lt;/li&gt;
      &lt;li&gt;고정 순서는 가장 최근에 고정한 항목이 맨 앞에 옵니다.&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;!-- 06 검색 필터 정렬 --&gt;
&lt;section id=&quot;ko-s06&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-num&quot;&gt;06&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;  검색·필터·정렬&lt;/h2&gt;
  &lt;/div&gt;

  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;  검색&lt;/div&gt;
    &lt;p&gt;상단 검색창에 입력하면 채팅 제목을 실시간으로 필터링합니다. 0.18초 딜레이 후 적용되어 타이핑하면서 바로 확인할 수 있어요.&lt;/p&gt;
  &lt;/div&gt;

  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;필터&lt;/div&gt;
    &lt;div class=&quot;tbl-wrap&quot;&gt;
      &lt;table&gt;
        &lt;thead&gt;&lt;tr&gt;&lt;th&gt;필터&lt;/th&gt;&lt;th&gt;표시 대상&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;&lt;td&gt;전체&lt;/td&gt;&lt;td&gt;모든 대화&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;고정됨&lt;/td&gt;&lt;td&gt;  핀 고정한 대화만&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;미분류&lt;/td&gt;&lt;td&gt;폴더에 배정되지 않은 대화&lt;/td&gt;&lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;↕ 정렬&lt;/div&gt;
    &lt;div class=&quot;tbl-wrap&quot;&gt;
      &lt;table&gt;
        &lt;thead&gt;&lt;tr&gt;&lt;th&gt;옵션&lt;/th&gt;&lt;th&gt;설명&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
        &lt;tbody&gt;
          &lt;tr&gt;&lt;td&gt;기본&lt;/td&gt;&lt;td&gt;Gemini 원본 순서 (최신 대화 상단) &lt;span class=&quot;tag-green tag&quot;&gt;현재 사용 가능&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;이름 A→Z&lt;/td&gt;&lt;td&gt;가나다 오름차순 &lt;span class=&quot;tag-lock tag&quot;&gt;  차기 버전&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;이름 Z→A&lt;/td&gt;&lt;td&gt;가나다 내림차순 &lt;span class=&quot;tag-lock tag&quot;&gt;  차기 버전&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
          &lt;tr&gt;&lt;td&gt;미분류 우선&lt;/td&gt;&lt;td&gt;폴더 미배정 대화를 맨 앞으로 &lt;span class=&quot;tag-lock tag&quot;&gt;  차기 버전&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
        &lt;/tbody&gt;
      &lt;/table&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;!-- 07 일괄 선택 --&gt;
&lt;section id=&quot;ko-s07&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-num&quot;&gt;07&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;☑ 일괄 선택 (Batch)&lt;/h2&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;상단 &lt;strong&gt;☑ 버튼&lt;/strong&gt; 클릭 → 각 대화 옆에 체크박스가 나타납니다.&lt;/li&gt;
      &lt;li&gt;체크박스로 개별 선택. &lt;strong&gt;Shift + 클릭&lt;/strong&gt;으로 범위 선택도 됩니다.&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;전체 선택&lt;/strong&gt; 버튼으로 현재 화면의 모든 항목을 한 번에 선택·해제.&lt;/li&gt;
      &lt;li&gt;하단 바에서 폴더를 고른 뒤 &lt;strong&gt;이동&lt;/strong&gt; 또는 &lt;strong&gt;일괄 삭제&lt;/strong&gt;.&lt;/li&gt;
    &lt;/ol&gt;
    &lt;div class=&quot;tip&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt; &lt;/span&gt;폴더 우클릭 → &lt;strong&gt;전체 선택&lt;/strong&gt;으로 해당 폴더 안의 대화를 한 번에 선택할 수 있어요.&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;!-- 08 폴더 잠금 --&gt;
&lt;section id=&quot;ko-s08&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-num&quot;&gt;08&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;  폴더 잠금 (PIN)&lt;/h2&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;편집 모드 → 폴더의   버튼, 또는 폴더 우클릭 → &lt;strong&gt;잠금 설정&lt;/strong&gt;.&lt;/li&gt;
      &lt;li&gt;4~6자리 PIN을 입력하면 잠금이 활성화됩니다. 잠긴 폴더에는   아이콘이 표시됩니다.&lt;/li&gt;
      &lt;li&gt;잠긴 폴더를 열려면 PIN을 입력하면 되고, 앱 재시작 시 다시 잠깁니다.&lt;/li&gt;
      &lt;li&gt;잠금 변경·해제는 현재 PIN 확인 후 새 PIN 설정 또는 공란으로 두면 됩니다.&lt;/li&gt;
    &lt;/ol&gt;
    &lt;div class=&quot;tip&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt; &lt;/span&gt;v3.7에서는 &lt;strong&gt;1개의 폴더&lt;/strong&gt;에만 PIN 잠금을 설정할 수 있습니다.&lt;/div&gt;
    &lt;div class=&quot;tip warn&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt;&lt;/span&gt;PIN은 기기 로컬에만 저장됩니다. 분실 시 복구가 불가능하니 반드시 기억해 두세요.&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;!-- 09 휴지통 --&gt;
&lt;section id=&quot;ko-s09&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-num&quot;&gt;09&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;  휴지통&lt;/h2&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;채팅 우클릭 → &lt;strong&gt;휴지통으로&lt;/strong&gt; → 2.5초 이내에 같은 동작 반복 시 실제 이동 (실수 방지 2단계 구조).&lt;/li&gt;
      &lt;li&gt;휴지통에 들어간 대화는 &lt;strong&gt;7일 후 자동 영구 삭제&lt;/strong&gt;됩니다.&lt;/li&gt;
      &lt;li&gt;상단   휴지통 탭에서 목록 확인. &lt;strong&gt;복원&lt;/strong&gt; 버튼으로 원래 폴더로 돌려놓을 수 있습니다.&lt;/li&gt;
      &lt;li&gt;즉시 영구 삭제:   버튼 → 3초 내 재클릭. 전체 비우기는 휴지통 탭 상단 버튼.&lt;/li&gt;
    &lt;/ol&gt;
    &lt;div class=&quot;tip warn&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt;&lt;/span&gt;영구 삭제 및 전체 비우기는 &lt;strong&gt;Gemini에서도 실제로 삭제&lt;/strong&gt;됩니다. 되돌릴 수 없으니 신중하게 사용하세요.&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;!-- 10 프로필 --&gt;
&lt;section id=&quot;ko-s10&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-num&quot;&gt;10&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;  프로필&lt;/h2&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;p&gt;한 브라우저에서 여러 Google 계정의 Gemini를 사용한다면, 프로필별로 폴더 구조를 완전히 분리해서 관리할 수 있습니다.&lt;/p&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;사이드 패널 상단 드롭다운에서 현재 프로필 확인 및 전환.&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;+ 추가&lt;/strong&gt;로 새 프로필 생성 (이름 지정 가능). v3.7에서는 최대 &lt;strong&gt;2개&lt;/strong&gt;까지 만들 수 있습니다.&lt;/li&gt;
      &lt;li&gt;각 프로필은 폴더·설정이 완전히 독립적으로 관리됩니다.&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;!-- 11 설정 --&gt;
&lt;section id=&quot;ko-s11&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-num&quot;&gt;11&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;⚙ 설정 안내&lt;/h2&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;setting-list&quot;&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;다른 기기 삭제 시 확인 묻기&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;새로고침 시 Gemini에 없는 대화가 감지되면 확인 모달 표시&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;기본: ON&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;내가 바꾼 대화 이름 유지&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;새로고침 후에도 로컬 별칭 유지&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;기본: ON&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;언어&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;KO (한국어) / EN (English) / JA (日本語)&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;기본: KO&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;테마&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;  다크 / ☀️ 라이트&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;기본: 다크&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;글자 크기&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;기본(13px) / 중간(15px) / 크게(17px) / 최대(19px)&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;기본: 기본&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;동기화 방식&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;로컬만 저장 (Cloud 동기화는 차기 버전 예정)&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;기본: 로컬&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;ABC 글자 크기 조절&lt;/div&gt;
    &lt;p&gt;설정 → 글자 크기 섹션에서 4단계로 조절할 수 있습니다. 텍스트 크기만 바뀌고 레이아웃(패딩·간격·테두리)은 그대로라 UI가 깨지지 않아요.&lt;/p&gt;
    &lt;div style=&quot;display:flex;gap:8px;flex-wrap:wrap;margin-top:12px&quot;&gt;
      &lt;div style=&quot;flex:1;min-width:60px;background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:12px 8px;text-align:center&quot;&gt;
        &lt;div style=&quot;font-size:1.1rem;font-weight:700;color:var(--accent)&quot;&gt;A&lt;/div&gt;
        &lt;div style=&quot;font-size:.7rem;color:var(--muted);margin-top:4px&quot;&gt;기본&lt;br&gt;13px&lt;/div&gt;
      &lt;/div&gt;
      &lt;div style=&quot;flex:1;min-width:60px;background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:12px 8px;text-align:center&quot;&gt;
        &lt;div style=&quot;font-size:1.3rem;font-weight:700;color:var(--accent)&quot;&gt;A&lt;/div&gt;
        &lt;div style=&quot;font-size:.7rem;color:var(--muted);margin-top:4px&quot;&gt;중간&lt;br&gt;15px&lt;/div&gt;
      &lt;/div&gt;
      &lt;div style=&quot;flex:1;min-width:60px;background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:12px 8px;text-align:center&quot;&gt;
        &lt;div style=&quot;font-size:1.55rem;font-weight:700;color:var(--accent)&quot;&gt;A&lt;/div&gt;
        &lt;div style=&quot;font-size:.7rem;color:var(--muted);margin-top:4px&quot;&gt;크게&lt;br&gt;17px&lt;/div&gt;
      &lt;/div&gt;
      &lt;div style=&quot;flex:1;min-width:60px;background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:12px 8px;text-align:center&quot;&gt;
        &lt;div style=&quot;font-size:1.8rem;font-weight:700;color:var(--accent)&quot;&gt;A&lt;/div&gt;
        &lt;div style=&quot;font-size:.7rem;color:var(--muted);margin-top:4px&quot;&gt;최대&lt;br&gt;19px&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;!-- FAQ --&gt;
&lt;section class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;
    &lt;span class=&quot;section-num&quot;&gt;FAQ&lt;/span&gt;
    &lt;h2 class=&quot;section-title&quot;&gt;❓ 자주 묻는 질문&lt;/h2&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;&lt;div class=&quot;card-title&quot;&gt;새로고침 버튼을 눌렀는데 대화가 안 보여요.&lt;/div&gt;&lt;p&gt;Gemini 탭이 반드시 열려 있어야 합니다. 탭을 먼저 열고 다시 시도해 보세요.&lt;/p&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;&lt;div class=&quot;card-title&quot;&gt;이름을 바꿨는데 Gemini에서도 바뀌나요?&lt;/div&gt;&lt;p&gt;아닙니다. 이름 변경은 이 앱 안에서만 보이는 별칭입니다. Gemini 원본에는 전혀 영향을 주지 않아요.&lt;/p&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;&lt;div class=&quot;card-title&quot;&gt;폴더 구조가 갑자기 사라졌어요.&lt;/div&gt;&lt;p&gt;Chrome 프로파일 데이터가 초기화됐을 수 있습니다. 중요한 구조는 미리 정리해 두는 게 좋습니다.&lt;/p&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;&lt;div class=&quot;card-title&quot;&gt;Google Drive 동기화는 언제 가능한가요?&lt;/div&gt;&lt;p&gt;현재 준비 중인 기능입니다. 업데이트 공지를 확인해 주세요.&lt;/p&gt;&lt;/div&gt;
&lt;/section&gt;

&lt;/main&gt;

&lt;footer class=&quot;guide-footer&quot;&gt;
  &lt;p&gt;Gemini Folder Manager v3.7&lt;/p&gt;
  &lt;p&gt;개인정보는 수집하지 않습니다. 모든 데이터는 기기 로컬에만 저장됩니다.&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;mailto:xogns022@gmail.com&quot;&gt;xogns022@gmail.com&lt;/a&gt;&lt;/p&gt;
&lt;/footer&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;!-- /content-ko --&gt;

&lt;!-- ════════════════════════════════ ENGLISH ════════════════════════════════ --&gt;
&lt;div id=&quot;content-en&quot; class=&quot;lang-content&quot;&gt;
&lt;div class=&quot;wrapper&quot; style=&quot;font-family:'Inter',sans-serif&quot;&gt;

&lt;header class=&quot;guide-header&quot;&gt;
  &lt;div class=&quot;header-badge&quot;&gt;  Official User Guide&lt;/div&gt;
  &lt;h1 class=&quot;guide-title&quot;&gt;Gemini Folder Manager &lt;span class=&quot;ver&quot;&gt;v3.7&lt;/span&gt;&lt;/h1&gt;
  &lt;p class=&quot;guide-subtitle&quot;&gt;Chrome Extension · Conversation Organizer&lt;/p&gt;
  &lt;p class=&quot;guide-intro&quot;&gt;
    Once you have dozens of Gemini conversations, finding the right one gets painful fast. &lt;strong&gt;Gemini Folder Manager&lt;/strong&gt; lets you organize them into folders, pin your favorites, and search by title — all without leaving the side panel. Pick any section below to jump right in.
  &lt;/p&gt;
&lt;/header&gt;

&lt;nav class=&quot;toc-card&quot;&gt;
  &lt;div class=&quot;toc-heading&quot;&gt;Contents&lt;/div&gt;
  &lt;ol class=&quot;toc-list&quot;&gt;
    &lt;li&gt;&lt;a href=&quot;#en-s01&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;01&lt;/span&gt;  Install &amp;amp; Setup&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#en-s02&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;02&lt;/span&gt;  Interface Overview&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#en-s03&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;03&lt;/span&gt;  Folder Management&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#en-s04&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;04&lt;/span&gt;  Assigning Chats&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#en-s05&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;05&lt;/span&gt;  Pinning Chats&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#en-s06&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;06&lt;/span&gt;  Search · Filter · Sort&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#en-s07&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;07&lt;/span&gt;☑ Batch Select&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#en-s08&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;08&lt;/span&gt;  Folder Lock&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#en-s09&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;09&lt;/span&gt;  Trash&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#en-s10&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;10&lt;/span&gt;  Profiles&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#en-s11&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;11&lt;/span&gt;⚙ Settings&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/nav&gt;

&lt;main&gt;

&lt;section id=&quot;en-s01&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;01&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  Install &amp;amp; Setup&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;Open the &lt;strong&gt;Chrome Web Store&lt;/strong&gt;, search for &lt;em&gt;Gemini Folder Manager&lt;/em&gt;, and click &lt;strong&gt;Add to Chrome&lt;/strong&gt;.&lt;/li&gt;
      &lt;li&gt;After installing, open &lt;strong&gt;gemini.google.com&lt;/strong&gt;. The extension only works when a Gemini tab is open.&lt;/li&gt;
      &lt;li&gt;Click the extension icon in the top-right of Chrome and select Gemini Folder Manager to open the side panel.&lt;/li&gt;
      &lt;li&gt;Click the   &lt;strong&gt;Refresh&lt;/strong&gt; button at the top of the panel to load your conversations.&lt;/li&gt;
    &lt;/ol&gt;
    &lt;div class=&quot;tip&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt; &lt;/span&gt;On first launch, the extension scrolls through the Gemini tab to collect all conversations. This may take a moment if you have many — just leave the tab open and wait.&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;en-s02&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;02&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  Interface Overview&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;feat-grid&quot;&gt;
    &lt;div class=&quot;feat-item&quot;&gt;&lt;div class=&quot;feat-label&quot;&gt;Tabs&lt;/div&gt;&lt;div class=&quot;feat-value&quot;&gt;  Folders &amp;nbsp;/&amp;nbsp;   Trash&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;feat-item&quot;&gt;&lt;div class=&quot;feat-label&quot;&gt;  Refresh&lt;/div&gt;&lt;div class=&quot;feat-value&quot;&gt;Fetch latest conversations from Gemini&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;feat-item&quot;&gt;&lt;div class=&quot;feat-label&quot;&gt;+ Folder&lt;/div&gt;&lt;div class=&quot;feat-value&quot;&gt;Create a new folder&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;feat-item&quot;&gt;&lt;div class=&quot;feat-label&quot;&gt;✏️ Edit Mode&lt;/div&gt;&lt;div class=&quot;feat-value&quot;&gt;Reorder, rename, recolor, add subfolders&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;feat-item&quot;&gt;&lt;div class=&quot;feat-label&quot;&gt;☑ Batch&lt;/div&gt;&lt;div class=&quot;feat-value&quot;&gt;Select multiple chats to move or delete&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;feat-item&quot;&gt;&lt;div class=&quot;feat-label&quot;&gt;⚙ Settings&lt;/div&gt;&lt;div class=&quot;feat-value&quot;&gt;Language, theme, font size, and more&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;en-s03&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;03&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  Folder Management&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;  Creating Folders&lt;/div&gt;
    &lt;p&gt;Click &lt;strong&gt;+ Folder&lt;/strong&gt; at the top, type a name, then press Enter or click Create. Folder names are limited to 40 characters and must be unique.&lt;/p&gt;
    &lt;div class=&quot;tip&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt; &lt;/span&gt;v3.7 supports up to &lt;strong&gt;7 folders total&lt;/strong&gt; (including subfolders).&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;✏️ Edit Mode&lt;/div&gt;
    &lt;p&gt;Toggle Edit Mode to reveal controls on each folder.&lt;/p&gt;
    &lt;div class=&quot;tbl-wrap&quot;&gt;&lt;table&gt;
      &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Button&lt;/th&gt;&lt;th&gt;Function&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
      &lt;tbody&gt;
        &lt;tr&gt;&lt;td&gt;✏️&lt;/td&gt;&lt;td&gt;Rename the folder&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt;Choose a color — 5 presets or a custom hex value&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt;Set or remove a PIN lock&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt;Delete folder (choose whether to delete chats inside)&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;⠿ (drag)&lt;/td&gt;&lt;td&gt;Drag to reorder folders&lt;/td&gt;&lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;  Subfolders&lt;/div&gt;
    &lt;p&gt;In Edit Mode, type a name in the input below any folder and click + Add. Or right-click the folder and choose &lt;strong&gt;Add Subfolder&lt;/strong&gt;. Subfolders appear as &lt;code style=&quot;font-size:.8rem;background:var(--bg3);padding:1px 5px;border-radius:4px&quot;&gt;└ name&lt;/code&gt; and can be selected when assigning chats.&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;  Right-click Context Menu (Folder)&lt;/div&gt;
    &lt;p&gt;Right-click any folder header for quick access: Rename · Color · Add Subfolder · Lock · Select All · Delete.&lt;/p&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;en-s04&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;04&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  Assigning Chats&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;Moving a Chat to a Folder&lt;/div&gt;
    &lt;p&gt;Right-click a chat → &lt;strong&gt;Move to Folder&lt;/strong&gt; → select the folder (or subfolder).&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;Right-click Menu Options&lt;/div&gt;
    &lt;div class=&quot;tbl-wrap&quot;&gt;&lt;table&gt;
      &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Option&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
      &lt;tbody&gt;
        &lt;tr&gt;&lt;td&gt;  Pin / Unpin&lt;/td&gt;&lt;td&gt;Show in the pinned section at the top&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;✏️ Rename&lt;/td&gt;&lt;td&gt;Set a local alias (only visible in this app)&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;  Move to Folder&lt;/td&gt;&lt;td&gt;Move to a folder or subfolder&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;  Copy Link&lt;/td&gt;&lt;td&gt;Copy the chat URL to clipboard&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;  Trash&lt;/td&gt;&lt;td&gt;Move to trash (auto-deleted after 7 days)&lt;/td&gt;&lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;Local Aliases (Rename)&lt;/div&gt;
    &lt;p&gt;Double-click a title in Edit Mode, or right-click → Rename. The new name only appears inside this app — Gemini's original title is unchanged.&lt;/p&gt;
    &lt;div class=&quot;tip&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt; &lt;/span&gt;Enable &lt;strong&gt;Keep my renamed titles&lt;/strong&gt; in Settings so aliases persist after a refresh.&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;en-s05&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;05&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  Pinning Chats&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;p&gt;Pin frequently used chats to the &lt;strong&gt;Pinned&lt;/strong&gt; section at the very top of the list.&lt;/p&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;Right-click a chat → &lt;strong&gt;Pin&lt;/strong&gt; (or Unpin to remove).&lt;/li&gt;
      &lt;li&gt;Pinned chats can still be assigned to folders — they'll appear in both places.&lt;/li&gt;
      &lt;li&gt;The most recently pinned chat appears first.&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;en-s06&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;06&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  Search · Filter · Sort&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;  Search&lt;/div&gt;
    &lt;p&gt;Type in the search bar at the top to filter chats by title in real time (0.18s debounce).&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;Filters&lt;/div&gt;
    &lt;div class=&quot;tbl-wrap&quot;&gt;&lt;table&gt;
      &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Filter&lt;/th&gt;&lt;th&gt;Shows&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
      &lt;tbody&gt;
        &lt;tr&gt;&lt;td&gt;All&lt;/td&gt;&lt;td&gt;Every conversation&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;Pinned&lt;/td&gt;&lt;td&gt;Only   pinned chats&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;Unassigned&lt;/td&gt;&lt;td&gt;Chats not in any folder&lt;/td&gt;&lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;↕ Sort&lt;/div&gt;
    &lt;div class=&quot;tbl-wrap&quot;&gt;&lt;table&gt;
      &lt;thead&gt;&lt;tr&gt;&lt;th&gt;Option&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
      &lt;tbody&gt;
        &lt;tr&gt;&lt;td&gt;Default&lt;/td&gt;&lt;td&gt;Gemini's original order (newest first) &lt;span class=&quot;tag-green tag&quot;&gt;Available&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;Name A→Z&lt;/td&gt;&lt;td&gt;Alphabetical ascending &lt;span class=&quot;tag-lock tag&quot;&gt;  Coming soon&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;Name Z→A&lt;/td&gt;&lt;td&gt;Alphabetical descending &lt;span class=&quot;tag-lock tag&quot;&gt;  Coming soon&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;Unassigned first&lt;/td&gt;&lt;td&gt;Unfoldered chats at the top &lt;span class=&quot;tag-lock tag&quot;&gt;  Coming soon&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;en-s07&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;07&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;☑ Batch Select&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;Click the &lt;strong&gt;☑ button&lt;/strong&gt; at the top — checkboxes appear next to each chat.&lt;/li&gt;
      &lt;li&gt;Click checkboxes individually or use &lt;strong&gt;Shift + click&lt;/strong&gt; to select a range.&lt;/li&gt;
      &lt;li&gt;Use &lt;strong&gt;Select All&lt;/strong&gt; to select or deselect everything on screen.&lt;/li&gt;
      &lt;li&gt;Pick a folder in the bottom bar, then click &lt;strong&gt;Move&lt;/strong&gt; or &lt;strong&gt;Delete&lt;/strong&gt;.&lt;/li&gt;
    &lt;/ol&gt;
    &lt;div class=&quot;tip&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt; &lt;/span&gt;Right-click a folder → &lt;strong&gt;Select All&lt;/strong&gt; to instantly select every chat inside it.&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;en-s08&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;08&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  Folder Lock (PIN)&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;Edit Mode → click the   button on a folder, or right-click → &lt;strong&gt;Lock&lt;/strong&gt;.&lt;/li&gt;
      &lt;li&gt;Enter a 4–6 digit PIN. The folder shows a   icon when locked.&lt;/li&gt;
      &lt;li&gt;Click a locked folder to enter the PIN. It unlocks temporarily and re-locks on restart.&lt;/li&gt;
      &lt;li&gt;To change or remove the lock, confirm the current PIN, then set a new one (or leave blank to remove).&lt;/li&gt;
    &lt;/ol&gt;
    &lt;div class=&quot;tip&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt; &lt;/span&gt;v3.7 supports locking &lt;strong&gt;1 folder&lt;/strong&gt; at a time.&lt;/div&gt;
    &lt;div class=&quot;tip warn&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt;&lt;/span&gt;The PIN is stored locally only. There is no recovery option if you forget it.&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;en-s09&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;09&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  Trash&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;Right-click a chat → &lt;strong&gt;Trash&lt;/strong&gt; → repeat within 2.5 seconds to confirm (two-step safety check).&lt;/li&gt;
      &lt;li&gt;Trashed chats are &lt;strong&gt;permanently deleted after 7 days&lt;/strong&gt;.&lt;/li&gt;
      &lt;li&gt;Open the   Trash tab to view the list and use &lt;strong&gt;Restore&lt;/strong&gt; to bring chats back.&lt;/li&gt;
      &lt;li&gt;Permanent delete: click   button → click again within 3 seconds. Empty all: button in the Trash tab header.&lt;/li&gt;
    &lt;/ol&gt;
    &lt;div class=&quot;tip warn&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt;&lt;/span&gt;Permanent deletion and emptying trash &lt;strong&gt;also deletes chats from Gemini&lt;/strong&gt;. This cannot be undone.&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;en-s10&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;10&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  Profiles&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;p&gt;If you use multiple Google accounts with Gemini, profiles let you keep completely separate folder structures for each.&lt;/p&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;Use the dropdown at the top of the panel to switch between profiles.&lt;/li&gt;
      &lt;li&gt;Click &lt;strong&gt;+&lt;/strong&gt; to add a new profile (you can name it). v3.7 supports up to &lt;strong&gt;2 profiles&lt;/strong&gt;.&lt;/li&gt;
      &lt;li&gt;Each profile has its own independent folders and settings.&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;en-s11&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;11&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;⚙ Settings&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;setting-list&quot;&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;Confirm on deleted chat&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;Show a confirmation modal when a chat is missing after refresh&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;Default: ON&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;Keep renamed titles&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;Preserve local aliases after refreshing&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;Default: ON&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;Language&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;KO · EN · JA&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;Default: KO&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;Theme&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;  Dark / ☀️ Light&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;Default: Dark&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;Font size&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;Default (13px) / Medium (15px) / Large (17px) / XL (19px)&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;Default: Default&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;Sync mode&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;Local only (Cloud sync coming in a future version)&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;Default: Local&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;FAQ&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;❓ FAQ&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;&lt;div class=&quot;card-title&quot;&gt;The refresh button isn't loading my chats.&lt;/div&gt;&lt;p&gt;Make sure a Gemini tab is open in Chrome. If it's closed, open gemini.google.com and try again.&lt;/p&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;&lt;div class=&quot;card-title&quot;&gt;Does renaming a chat change it in Gemini?&lt;/div&gt;&lt;p&gt;No. Renamed titles are local aliases only. Gemini's original title is not affected at all.&lt;/p&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;&lt;div class=&quot;card-title&quot;&gt;My folder structure disappeared.&lt;/div&gt;&lt;p&gt;This can happen if Chrome clears your extension data. There's no built-in backup in v3.7, so try to keep your folder structure simple and reproducible.&lt;/p&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;&lt;div class=&quot;card-title&quot;&gt;When is Google Drive sync coming?&lt;/div&gt;&lt;p&gt;It's in the works. Stay tuned for update announcements.&lt;/p&gt;&lt;/div&gt;
&lt;/section&gt;

&lt;/main&gt;

&lt;footer class=&quot;guide-footer&quot;&gt;
  &lt;p&gt;Gemini Folder Manager v3.7&lt;/p&gt;
  &lt;p&gt;No personal data is collected. All data is stored locally on your device.&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;mailto:xogns022@gmail.com&quot;&gt;xogns022@gmail.com&lt;/a&gt;&lt;/p&gt;
&lt;/footer&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;!-- /content-en --&gt;

&lt;!-- ════════════════════════════════ JAPANESE ════════════════════════════════ --&gt;
&lt;div id=&quot;content-ja&quot; class=&quot;lang-content&quot;&gt;
&lt;div class=&quot;wrapper&quot; style=&quot;font-family:'Noto Sans JP',sans-serif&quot;&gt;

&lt;header class=&quot;guide-header&quot;&gt;
  &lt;div class=&quot;header-badge&quot;&gt;  公式使用ガイド&lt;/div&gt;
  &lt;h1 class=&quot;guide-title&quot;&gt;Gemini Folder Manager &lt;span class=&quot;ver&quot;&gt;v3.7&lt;/span&gt;&lt;/h1&gt;
  &lt;p class=&quot;guide-subtitle&quot;&gt;Chrome拡張機能 · 会話フォルダー整理ツール&lt;/p&gt;
  &lt;p class=&quot;guide-intro&quot;&gt;
    Geminiを使い続けると、会話がどんどん増えていきますよね。50件、100件を超えたあたりから、目的の会話を探すのが一苦労になってきます。そこで作ったのが &lt;strong&gt;Gemini Folder Manager&lt;/strong&gt; です。フォルダーで分類して、よく使う会話をピン留めして、タイトルで検索できます。必要なセクションだけ読み飛ばしてOKです。
  &lt;/p&gt;
&lt;/header&gt;

&lt;nav class=&quot;toc-card&quot;&gt;
  &lt;div class=&quot;toc-heading&quot;&gt;目次&lt;/div&gt;
  &lt;ol class=&quot;toc-list&quot;&gt;
    &lt;li&gt;&lt;a href=&quot;#ja-s01&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;01&lt;/span&gt;  インストールと開始&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ja-s02&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;02&lt;/span&gt;  画面構成&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ja-s03&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;03&lt;/span&gt;  フォルダー管理&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ja-s04&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;04&lt;/span&gt;  チャットの割り当て&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ja-s05&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;05&lt;/span&gt;  ピン留め&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ja-s06&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;06&lt;/span&gt;  検索·フィルター·並び替え&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ja-s07&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;07&lt;/span&gt;☑ 一括選択&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ja-s08&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;08&lt;/span&gt;  フォルダーロック&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ja-s09&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;09&lt;/span&gt;  ゴミ箱&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ja-s10&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;10&lt;/span&gt;  プロフィール&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;#ja-s11&quot;&gt;&lt;span class=&quot;toc-num&quot;&gt;11&lt;/span&gt;⚙ 設定&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
&lt;/nav&gt;

&lt;main&gt;

&lt;section id=&quot;ja-s01&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;01&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  インストールと開始&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;&lt;strong&gt;Chrome ウェブストア&lt;/strong&gt;で「Gemini Folder Manager」を検索し、&lt;strong&gt;Chromeに追加&lt;/strong&gt;をクリックします。&lt;/li&gt;
      &lt;li&gt;インストール後、&lt;strong&gt;gemini.google.com&lt;/strong&gt; を開いてください。Geminiタブが開いていないと拡張機能は動作しません。&lt;/li&gt;
      &lt;li&gt;Chromeの右上にある拡張機能アイコンをクリックし、Gemini Folder Managerを選択するとサイドパネルが開きます。&lt;/li&gt;
      &lt;li&gt;パネル上部の  &lt;strong&gt;更新&lt;/strong&gt;ボタンをクリックすると、Geminiの会話一覧を読み込みます。&lt;/li&gt;
    &lt;/ol&gt;
    &lt;div class=&quot;tip&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt; &lt;/span&gt;初回起動時は、GeminiタブをスクロールしながらAIがすべての会話を収集します。会話数が多いほど時間がかかるので、タブを閉じずにしばらく待ってください。&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;ja-s02&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;02&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  画面構成&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;feat-grid&quot;&gt;
    &lt;div class=&quot;feat-item&quot;&gt;&lt;div class=&quot;feat-label&quot;&gt;タブ&lt;/div&gt;&lt;div class=&quot;feat-value&quot;&gt;  フォルダー整理 &amp;nbsp;/&amp;nbsp;   ゴミ箱&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;feat-item&quot;&gt;&lt;div class=&quot;feat-label&quot;&gt;  更新&lt;/div&gt;&lt;div class=&quot;feat-value&quot;&gt;Geminiから最新の会話を取得&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;feat-item&quot;&gt;&lt;div class=&quot;feat-label&quot;&gt;+ フォルダー&lt;/div&gt;&lt;div class=&quot;feat-value&quot;&gt;新しいフォルダーを作成&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;feat-item&quot;&gt;&lt;div class=&quot;feat-label&quot;&gt;✏️ 編集モード&lt;/div&gt;&lt;div class=&quot;feat-value&quot;&gt;並び替え・名前変更・色変更・サブフォルダー追加&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;feat-item&quot;&gt;&lt;div class=&quot;feat-label&quot;&gt;☑ 一括選択&lt;/div&gt;&lt;div class=&quot;feat-value&quot;&gt;複数の会話をまとめて移動・削除&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;feat-item&quot;&gt;&lt;div class=&quot;feat-label&quot;&gt;⚙ 設定&lt;/div&gt;&lt;div class=&quot;feat-value&quot;&gt;言語・テーマ・フォントサイズなど&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;ja-s03&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;03&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  フォルダー管理&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;  フォルダーの作成&lt;/div&gt;
    &lt;p&gt;上部の&lt;strong&gt;+ フォルダー&lt;/strong&gt;ボタンをクリックし、名前を入力してEnterまたは「作成」をクリックします。フォルダー名は最大40文字、重複不可です。&lt;/p&gt;
    &lt;div class=&quot;tip&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt; &lt;/span&gt;v3.7では、サブフォルダー込みで最大&lt;strong&gt;7つ&lt;/strong&gt;まで作成できます。&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;✏️ 編集モード&lt;/div&gt;
    &lt;p&gt;編集モードをオンにすると、各フォルダーに操作ボタンが表示されます。&lt;/p&gt;
    &lt;div class=&quot;tbl-wrap&quot;&gt;&lt;table&gt;
      &lt;thead&gt;&lt;tr&gt;&lt;th&gt;ボタン&lt;/th&gt;&lt;th&gt;機能&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
      &lt;tbody&gt;
        &lt;tr&gt;&lt;td&gt;✏️&lt;/td&gt;&lt;td&gt;フォルダー名の変更&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt;色の選択 — 5色プリセット＋カスタム&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt;PINロックの設定・解除&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt;フォルダーの削除（内部の会話も一緒に削除するか選択可）&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;⠿（ドラッグ）&lt;/td&gt;&lt;td&gt;ドラッグ＆ドロップでフォルダーを並び替え&lt;/td&gt;&lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;  サブフォルダー&lt;/div&gt;
    &lt;p&gt;編集モードでフォルダー下部の入力欄に名前を入力して「＋ 追加」をクリックするか、フォルダーを右クリックして&lt;strong&gt;サブフォルダーを追加&lt;/strong&gt;を選択します。サブフォルダーは &lt;code style=&quot;font-size:.8rem;background:var(--bg3);padding:1px 5px;border-radius:4px&quot;&gt;└ 名前&lt;/code&gt; の形式で表示されます。&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;  右クリックメニュー（フォルダー）&lt;/div&gt;
    &lt;p&gt;フォルダーヘッダーを右クリックすると、名前変更・色変更・サブフォルダー追加・ロック・全選択・削除のメニューがすぐに表示されます。&lt;/p&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;ja-s04&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;04&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  チャットの割り当て&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;フォルダーにチャットを入れる&lt;/div&gt;
    &lt;p&gt;チャットを&lt;strong&gt;右クリック → フォルダーへ移動 → 対象フォルダーを選択&lt;/strong&gt;します。&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;右クリックメニューの項目&lt;/div&gt;
    &lt;div class=&quot;tbl-wrap&quot;&gt;&lt;table&gt;
      &lt;thead&gt;&lt;tr&gt;&lt;th&gt;メニュー&lt;/th&gt;&lt;th&gt;説明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
      &lt;tbody&gt;
        &lt;tr&gt;&lt;td&gt;  ピン留め / 解除&lt;/td&gt;&lt;td&gt;一覧最上部のピン留めセクションに表示&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;✏️ 名前の変更&lt;/td&gt;&lt;td&gt;このアプリ内でのみ表示されるローカルエイリアスを設定&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;  フォルダーへ移動&lt;/td&gt;&lt;td&gt;サブフォルダー含め選択して移動&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;  リンクをコピー&lt;/td&gt;&lt;td&gt;チャットURLをクリップボードにコピー&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;  ゴミ箱へ&lt;/td&gt;&lt;td&gt;7日後に自動的に完全削除&lt;/td&gt;&lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;名前の変更（ローカルエイリアス）&lt;/div&gt;
    &lt;p&gt;編集モードでタイトルをダブルクリック、または右クリック → 名前の変更で別名を付けられます。変更した名前は&lt;strong&gt;このアプリ内でのみ&lt;/strong&gt;表示され、Gemini本体には影響しません。&lt;/p&gt;
    &lt;div class=&quot;tip&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt; &lt;/span&gt;設定で&lt;strong&gt;変更した会話名を保持&lt;/strong&gt;をオンにすると、更新後もエイリアスが維持されます。&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;ja-s05&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;05&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  ピン留め&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;p&gt;よく使う会話を一覧最上部の&lt;strong&gt;ピン留めされた会話&lt;/strong&gt;セクションに固定できます。&lt;/p&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;チャットを右クリック → &lt;strong&gt;ピン留め&lt;/strong&gt;（解除も同じ手順）。&lt;/li&gt;
      &lt;li&gt;ピン留めした会話はフォルダーにも割り当てられます（両方に表示されます）。&lt;/li&gt;
      &lt;li&gt;最後にピン留めした会話が先頭に表示されます。&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;ja-s06&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;06&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  検索·フィルター·並び替え&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;  検索&lt;/div&gt;
    &lt;p&gt;上部の検索バーに入力すると、会話タイトルをリアルタイムでフィルタリングします（0.18秒のデバウンス処理）。&lt;/p&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;フィルター&lt;/div&gt;
    &lt;div class=&quot;tbl-wrap&quot;&gt;&lt;table&gt;
      &lt;thead&gt;&lt;tr&gt;&lt;th&gt;フィルター&lt;/th&gt;&lt;th&gt;表示対象&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
      &lt;tbody&gt;
        &lt;tr&gt;&lt;td&gt;すべて&lt;/td&gt;&lt;td&gt;すべての会話&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;ピン留め&lt;/td&gt;&lt;td&gt;  ピン留めした会話のみ&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;未分類&lt;/td&gt;&lt;td&gt;フォルダーに割り当てられていない会話&lt;/td&gt;&lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;card-title&quot;&gt;↕ 並び替え&lt;/div&gt;
    &lt;div class=&quot;tbl-wrap&quot;&gt;&lt;table&gt;
      &lt;thead&gt;&lt;tr&gt;&lt;th&gt;オプション&lt;/th&gt;&lt;th&gt;説明&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
      &lt;tbody&gt;
        &lt;tr&gt;&lt;td&gt;デフォルト&lt;/td&gt;&lt;td&gt;Geminiの元の順序（最新が先頭） &lt;span class=&quot;tag-green tag&quot;&gt;利用可能&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;名前 A→Z&lt;/td&gt;&lt;td&gt;50音順 &lt;span class=&quot;tag-lock tag&quot;&gt;  近日公開&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;名前 Z→A&lt;/td&gt;&lt;td&gt;50音逆順 &lt;span class=&quot;tag-lock tag&quot;&gt;  近日公開&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
        &lt;tr&gt;&lt;td&gt;未分類を先頭に&lt;/td&gt;&lt;td&gt;未割り当ての会話を最初に表示 &lt;span class=&quot;tag-lock tag&quot;&gt;  近日公開&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
      &lt;/tbody&gt;
    &lt;/table&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;ja-s07&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;07&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;☑ 一括選択&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;上部の&lt;strong&gt;☑ ボタン&lt;/strong&gt;をクリック → 各会話の横にチェックボックスが表示されます。&lt;/li&gt;
      &lt;li&gt;チェックボックスで個別選択。&lt;strong&gt;Shift + クリック&lt;/strong&gt;で範囲選択も可能です。&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;全選択&lt;/strong&gt;ボタンで画面上のすべてを一括選択・解除。&lt;/li&gt;
      &lt;li&gt;下部バーでフォルダーを選んで&lt;strong&gt;移動&lt;/strong&gt;、または&lt;strong&gt;一括削除&lt;/strong&gt;。&lt;/li&gt;
    &lt;/ol&gt;
    &lt;div class=&quot;tip&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt; &lt;/span&gt;フォルダーを右クリック → &lt;strong&gt;全選択&lt;/strong&gt;で、そのフォルダー内のすべての会話を一度に選択できます。&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;ja-s08&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;08&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  フォルダーロック（PIN）&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;編集モード → フォルダーの ボタン、またはフォルダーを右クリック → &lt;strong&gt;ロックの設定&lt;/strong&gt;。&lt;/li&gt;
      &lt;li&gt;4〜6桁のPINを入力するとロックが有効になります。ロックされたフォルダーには アイコンが表示されます。&lt;/li&gt;
      &lt;li&gt;ロックされたフォルダーをクリックするとPIN入力欄が表示され、正しいPINを入力すると一時的に解除されます（再起動時に再ロック）。&lt;/li&gt;
      &lt;li&gt;ロックの変更・解除は、現在のPINを確認後に新しいPINを設定（空欄でロック解除）します。&lt;/li&gt;
    &lt;/ol&gt;
    &lt;div class=&quot;tip&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt; &lt;/span&gt;v3.7では&lt;strong&gt;1つのフォルダー&lt;/strong&gt;のみロックできます。&lt;/div&gt;
    &lt;div class=&quot;tip warn&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt;&lt;/span&gt;PINはデバイスのローカルにのみ保存されます。紛失した場合の復元はできません。必ず記憶しておいてください。&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;ja-s09&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;09&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  ゴミ箱&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;チャットを右クリック → &lt;strong&gt;ゴミ箱へ&lt;/strong&gt; → 2.5秒以内に同じ操作を繰り返すと実際に移動します（誤操作防止の2段階確認）。&lt;/li&gt;
      &lt;li&gt;ゴミ箱に入った会話は&lt;strong&gt;7日後に自動的に完全削除&lt;/strong&gt;されます。&lt;/li&gt;
      &lt;li&gt;  ゴミ箱タブで一覧を確認。&lt;strong&gt;復元&lt;/strong&gt;ボタンで元のフォルダーに戻せます。&lt;/li&gt;
      &lt;li&gt;即時完全削除： ボタン → 3秒以内に再クリック。全削除：ゴミ箱タブ上部のボタン。&lt;/li&gt;
    &lt;/ol&gt;
    &lt;div class=&quot;tip warn&quot;&gt;&lt;span class=&quot;tip-icon&quot;&gt;&lt;/span&gt;完全削除と全削除は&lt;strong&gt;Geminiからも実際に削除&lt;/strong&gt;されます。元に戻せないため、慎重に使用してください。&lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;ja-s10&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;10&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;  プロフィール&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;p&gt;1つのブラウザで複数のGoogleアカウントのGeminiを使用する場合、プロフィールごとにフォルダー構成を完全に分けて管理できます。&lt;/p&gt;
    &lt;ol class=&quot;steps&quot;&gt;
      &lt;li&gt;パネル上部のドロップダウンで現在のプロフィールを確認・切り替え。&lt;/li&gt;
      &lt;li&gt;&lt;strong&gt;＋ 追加&lt;/strong&gt;で新しいプロフィールを作成（名前を指定可能）。v3.7では最大&lt;strong&gt;2つ&lt;/strong&gt;まで作成できます。&lt;/li&gt;
      &lt;li&gt;各プロフィールは独立したフォルダーと設定を持ちます。&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section id=&quot;ja-s11&quot; class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;11&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;⚙ 設定&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;
    &lt;div class=&quot;setting-list&quot;&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;削除確認を表示&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;更新時にGeminiにない会話が検出されたら確認モーダルを表示&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;デフォルト: ON&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;変更した会話名を保持&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;更新後もローカルエイリアスを維持&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;デフォルト: ON&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;言語&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;KO（韓国語）/ EN（英語）/ JA（日本語）&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;デフォルト: KO&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;テーマ&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;  ダーク / ☀️ ライト&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;デフォルト: ダーク&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;フォントサイズ&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;標準(13px) / 中(15px) / 大(17px) / 最大(19px)&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;デフォルト: 標準&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;setting-item&quot;&gt;
        &lt;div class=&quot;setting-name&quot;&gt;同期モード&lt;/div&gt;
        &lt;div class=&quot;setting-row&quot;&gt;&lt;span class=&quot;setting-desc&quot;&gt;ローカルのみ（クラウド同期は将来のバージョンで予定）&lt;/span&gt;&lt;span class=&quot;setting-default&quot;&gt;デフォルト: ローカル&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/section&gt;

&lt;section class=&quot;section&quot;&gt;
  &lt;div class=&quot;section-header&quot;&gt;&lt;span class=&quot;section-num&quot;&gt;FAQ&lt;/span&gt;&lt;h2 class=&quot;section-title&quot;&gt;❓ よくある質問&lt;/h2&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;&lt;div class=&quot;card-title&quot;&gt;更新ボタンを押しても会話が表示されません。&lt;/div&gt;&lt;p&gt;Geminiタブが開いていることを確認してください。閉じている場合は gemini.google.com を開いてから再試行してください。&lt;/p&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;&lt;div class=&quot;card-title&quot;&gt;名前を変更するとGeminiでも変わりますか？&lt;/div&gt;&lt;p&gt;いいえ。名前の変更はこのアプリ内のみのローカルエイリアスです。Geminiの元のタイトルは一切変更されません。&lt;/p&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;&lt;div class=&quot;card-title&quot;&gt;フォルダー構成が消えてしまいました。&lt;/div&gt;&lt;p&gt;Chromeの拡張機能データがリセットされた可能性があります。シンプルな構成にしておくと再設定が楽です。&lt;/p&gt;&lt;/div&gt;
  &lt;div class=&quot;card&quot;&gt;&lt;div class=&quot;card-title&quot;&gt;Google Drive同期はいつ使えますか？&lt;/div&gt;&lt;p&gt;現在準備中の機能です。アップデートのお知らせをご確認ください。&lt;/p&gt;&lt;/div&gt;
&lt;/section&gt;

&lt;/main&gt;

&lt;footer class=&quot;guide-footer&quot;&gt;
  &lt;p&gt;Gemini Folder Manager v3.7&lt;/p&gt;
  &lt;p&gt;個人情報は収集しません。すべてのデータはデバイスのローカルにのみ保存されます。&lt;/p&gt;
  &lt;p&gt;&lt;a href=&quot;mailto:xogns022@gmail.com&quot;&gt;xogns022@gmail.com&lt;/a&gt;&lt;/p&gt;
&lt;/footer&gt;

&lt;/div&gt;
&lt;/div&gt;&lt;!-- /content-ja --&gt;

&lt;script&gt;
function setLang(lang){
  document.querySelectorAll('.lang-btn').forEach(function(b){
    b.classList.toggle('active', b.dataset.lang===lang);
  });
  document.querySelectorAll('.lang-content').forEach(function(d){
    d.classList.remove('active');
  });
  var target = document.getElementById('content-'+lang);
  if(target) target.classList.add('active');
  document.documentElement.lang = lang;
  try{ localStorage.setItem('gmf_guide_lang', lang); }catch(e){}
  window.scrollTo({top:0, behavior:'smooth'});
}

// TOC 링크 — scrollIntoView로 처리 (iframe/artifact viewer 호환)
document.addEventListener('click', function(e){
  var link = e.target.closest('a[href^=&quot;#&quot;]');
  if(!link) return;
  var id = link.getAttribute('href').slice(1);
  var target = document.getElementById(id);
  if(target){
    e.preventDefault();
    target.scrollIntoView({behavior:'smooth', block:'start'});
  }
});

// 저장된 언어 복원
(function(){
  var saved;
  try{ saved = localStorage.getItem('gmf_guide_lang'); }catch(e){}
  if(saved &amp;&amp; ['ko','en','ja'].indexOf(saved)&gt;=0) setLang(saved);
})();
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</description>
      <category>AI/제미나이</category>
      <category>제미나이 #Gemini #구글제미나이 #크롬확장프로그램 #생산성도구 #GeminiFolderManager #제미나이폴더 #대화정리 #사용법 #업무자동화</category>
      <author>data-pantry</author>
      <guid isPermaLink="true">https://data-pantry.tistory.com/13</guid>
      <comments>https://data-pantry.tistory.com/13#entry13comment</comments>
      <pubDate>Mon, 27 Apr 2026 11:11:25 +0900</pubDate>
    </item>
    <item>
      <title>AI를 이용한 티스토리 웹디자인 공부 - [DAY 3] HTML &amp;rarr; Tistory 연결</title>
      <link>https://data-pantry.tistory.com/12</link>
      <description>&lt;div style=&quot;max-width: 800px; margin: 0 auto; font-family: 'Apple SD Gothic Neo', 'Malgun Gothic', sans-serif; line-height: 1.6; color: #334155; word-break: keep-all;&quot;&gt;&lt;!-- HEADER: 흰색 글자로 가독성 극대화 --&gt;&lt;header style=&quot;background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%); padding: 32px 20px; border-radius: 12px; margin-bottom: 30px; text-align: center;&quot;&gt;
&lt;h1 style=&quot;margin: 0; font-size: 1.6rem; font-weight: 800; letter-spacing: -0.02em; color: #ffffff;&quot;&gt;Day 3 &amp;mdash; HTML &amp;rarr; Tistory 연결&lt;/h1&gt;
&lt;p style=&quot;margin: 10px 0 0 0; font-size: 1rem; opacity: 0.95; color: #ffffff;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;이론 코드가 아닌, 실제 운영 코드를 해부하는 날입니다&quot;&lt;/p&gt;
&lt;/header&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Gemini_Generated_Image_jc7cdejc7cdejc7c.png&quot; data-origin-width=&quot;2754&quot; data-origin-height=&quot;1536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvha4l/dJMcaadZa1g/KUpEwK6AbRUHQo5cSCVWK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvha4l/dJMcaadZa1g/KUpEwK6AbRUHQo5cSCVWK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvha4l/dJMcaadZa1g/KUpEwK6AbRUHQo5cSCVWK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcvha4l%2FdJMcaadZa1g%2FKUpEwK6AbRUHQo5cSCVWK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2754&quot; height=&quot;1536&quot; data-filename=&quot;Gemini_Generated_Image_jc7cdejc7cdejc7c.png&quot; data-origin-width=&quot;2754&quot; data-origin-height=&quot;1536&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;!-- 1층: 초보자를 위한 10초 핵심 요약 --&gt;
&lt;section style=&quot;background-color: #eef2ff; padding: 20px; border-radius: 10px; margin-bottom: 35px; border: 1px solid #dbeafe;&quot;&gt;
&lt;h3 style=&quot;margin-top: 0; color: #4f46e5; font-size: 1.1rem; display: flex; align-items: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;margin-right: 8px;&quot;&gt; &lt;/span&gt; 10초 핵심 요약&lt;/h3&gt;
&lt;ul style=&quot;margin: 10px 0 0 0; padding-left: 20px; font-size: 0.95rem; color: #475569;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;치환자&lt;/b&gt;: 서버가 실제 데이터로 &lt;b&gt;'미리 채워서 완성하는 자리'&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 5px;&quot;&gt;&lt;b&gt;처리 시점&lt;/b&gt;: 브라우저가 파일을 받기 &lt;b&gt;'전'&lt;/b&gt;에 서버에서 이미 완성됩니다.&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 0;&quot;&gt;&lt;b&gt;오늘의 목표&lt;/b&gt;: 수천 줄의 코드 속에서 &lt;b&gt;'레이아웃 블록'&lt;/b&gt;을 찾아 주석을 다는 것입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/section&gt;
&lt;!-- SECTION 1 --&gt;
&lt;section style=&quot;margin-bottom: 45px;&quot;&gt;
&lt;h2 style=&quot;display: inline-block; background-color: #4f46e5; color: #ffffff; padding: 6px 16px; border-radius: 30px; font-size: 1.2rem; font-weight: bold; margin-bottom: 20px;&quot; data-ke-size=&quot;size26&quot;&gt;1. 치환자는 &quot;미리 완성된 값&quot;이 들어갈 자리입니다&lt;/h2&gt;
&lt;p style=&quot;margin-top: 0;&quot; data-ke-size=&quot;size16&quot;&gt;가장 많이 하는 오해: 치환자는 브라우저에서 변하는 '빈칸'이 아닙니다. 서버가 내용을 꽉 채워 보낸 &lt;b&gt;완성품&lt;/b&gt;입니다.&lt;/p&gt;
&lt;div style=&quot;display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); margin-top: 20px;&quot;&gt;&lt;!-- 서버 처리 카드 --&gt;
&lt;div style=&quot;background-color: #ffffff; border: 1px solid #e2e8f0; padding: 22px; border-radius: 12px; margin-right: 10px; margin-bottom: 15px; box-shadow: 0 2px 4px rgba(0,0,0,0.02);&quot;&gt;
&lt;h4 style=&quot;margin-top: 0; color: #64748b; font-size: 0.85rem; text-transform: uppercase; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;서버에서 처리됨 (전송 전)&lt;/h4&gt;
&lt;div style=&quot;background: #1e293b; padding: 12px; border-radius: 8px; margin: 12px 0;&quot;&gt;&lt;code style=&quot;color: #f8fafc; font-size: 0.85rem;&quot;&gt;&amp;lt;h1&amp;gt;data-pantry 님의 블로그&amp;lt;/h1&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;p style=&quot;font-size: 0.85rem; color: #475569; margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;  서버가 이 자리에 내 블로그 제목을 &lt;b&gt;미리 채워넣습니다.&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 브라우저 결과 카드 --&gt;
&lt;div style=&quot;background-color: #ffffff; border: 1px solid #e2e8f0; padding: 22px; border-radius: 12px; margin-bottom: 15px; box-shadow: 0 2px 4px rgba(0,0,0,0.02);&quot;&gt;
&lt;h4 style=&quot;margin-top: 0; color: #4f46e5; font-size: 0.85rem; text-transform: uppercase; font-weight: bold;&quot; data-ke-size=&quot;size20&quot;&gt;브라우저가 받는 최종 결과&lt;/h4&gt;
&lt;div style=&quot;background: #eef2ff; padding: 12px; border-radius: 8px; margin: 12px 0;&quot;&gt;&lt;code style=&quot;color: #4f46e5; font-size: 0.85rem; font-weight: bold;&quot;&gt;&amp;lt;h1&amp;gt;내 멋진 블로그&amp;lt;/h1&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;p style=&quot;font-size: 0.85rem; color: #475569; margin-bottom: 0;&quot; data-ke-size=&quot;size16&quot;&gt;  브라우저는 치환자를 전혀 알지 못합니다. 이미 완성된 텍스트만 받을 뿐이죠.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #fff7ed; padding: 16px; border-radius: 10px; border-left: 5px solid #f97316; margin-top: 15px;&quot;&gt;
&lt;p style=&quot;margin: 0; font-size: 0.9rem; color: #9a3412;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;⚠️ 실전 팁:&lt;/b&gt; 자바스크립트(JS)로 &lt;code&gt;data-pantry 님의 블로그&lt;/code&gt;을 직접 건드리려 해도 소용없습니다. 브라우저가 소스를 읽을 때는 이미 그 자리가 실제 값으로 교체된 후이기 때문입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;!-- SECTION 2 --&gt;
&lt;section style=&quot;margin-bottom: 45px;&quot;&gt;
&lt;h2 style=&quot;display: inline-block; background-color: #4f46e5; color: #ffffff; padding: 6px 16px; border-radius: 30px; font-size: 1.2rem; font-weight: bold; margin-bottom: 20px;&quot; data-ke-size=&quot;size26&quot;&gt;2. skin.html을 읽는 '레이아웃 블록' 전략&lt;/h2&gt;
&lt;p style=&quot;margin-top: 0;&quot; data-ke-size=&quot;size16&quot;&gt;수천 줄의 코드를 한 줄씩 읽지 마세요. 큰 덩어리부터 먼저 파악하는 게 핵심입니다.&lt;/p&gt;
&lt;div style=&quot;background-color: #f8fafc; padding: 25px; border-radius: 12px; border: 1px solid #e2e8f0;&quot;&gt;&lt;!-- STEP 1 --&gt;
&lt;div style=&quot;margin-bottom: 18px; display: flex; align-items: flex-start;&quot;&gt;&lt;span style=&quot;background-color: #4f46e5; color: #ffffff; width: 24px; height: 24px; border-radius: 50%; display: inline-block; text-align: center; line-height: 24px; font-size: 12px; margin-right: 12px; flex-shrink: 0; font-weight: 800;&quot;&gt;1&lt;/span&gt;
&lt;div&gt;&lt;b&gt;Body 내부 찾기&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 0.9rem; color: #64748b;&quot;&gt;모든 화면 요소는 &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt; 태그 안에 있습니다.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- STEP 2 --&gt;
&lt;div style=&quot;margin-bottom: 18px; display: flex; align-items: flex-start;&quot;&gt;&lt;span style=&quot;background-color: #4f46e5; color: #ffffff; width: 24px; height: 24px; border-radius: 50%; display: inline-block; text-align: center; line-height: 24px; font-size: 12px; margin-right: 12px; flex-shrink: 0; font-weight: 800;&quot;&gt;2&lt;/span&gt;
&lt;div&gt;&lt;b&gt;큰 레이아웃 블록 식별&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 0.9rem; color: #64748b;&quot;&gt;단순 태그명보다 &lt;code&gt;div#wrap&lt;/code&gt;, &lt;code&gt;div#container&lt;/code&gt; 같은 큰 외곽 박스를 먼저 확인하세요.&lt;/span&gt;
&lt;div style=&quot;background: #1e293b; padding: 10px; border-radius: 8px; margin-top: 10px;&quot;&gt;&lt;code style=&quot;color: #a5b4fc; font-size: 0.8rem;&quot;&gt;&amp;lt;div id=&quot;container&quot;&amp;gt; &lt;!-- 레이아웃 블록 시작 --&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;lt;header&amp;gt;...&amp;lt;/header&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- STEP 3 --&gt;
&lt;div style=&quot;margin-bottom: 18px; display: flex; align-items: flex-start;&quot;&gt;&lt;span style=&quot;background-color: #4f46e5; color: #ffffff; width: 24px; height: 24px; border-radius: 50%; display: inline-block; text-align: center; line-height: 24px; font-size: 12px; margin-right: 12px; flex-shrink: 0; font-weight: 800;&quot;&gt;3&lt;/span&gt;
&lt;div&gt;&lt;b&gt;반복 블록(s_article_rep)&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 0.9rem; color: #64748b;&quot;&gt;이 안의 내용은 &lt;b&gt;JavaScript의 for문처럼 포스트 개수만큼 반복&lt;/b&gt;해서 출력됩니다.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- STEP 4 --&gt;
&lt;div style=&quot;display: flex; align-items: flex-start;&quot;&gt;&lt;span style=&quot;background-color: #4f46e5; color: #ffffff; width: 24px; height: 24px; border-radius: 50%; display: inline-block; text-align: center; line-height: 24px; font-size: 12px; margin-right: 12px; flex-shrink: 0; font-weight: 800;&quot;&gt;4&lt;/span&gt;
&lt;div&gt;&lt;b&gt;주석으로 경계 표시&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 0.9rem; color: #64748b;&quot;&gt;나만의 메모를 달아두면 나중에 수정할 위치를 바로 찾을 수 있습니다.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;!-- SECTION 3: 실습 --&gt;
&lt;section style=&quot;margin-bottom: 45px;&quot;&gt;
&lt;h2 style=&quot;display: inline-block; background-color: #4f46e5; color: #ffffff; padding: 6px 16px; border-radius: 30px; font-size: 1.2rem; font-weight: bold; margin-bottom: 20px;&quot; data-ke-size=&quot;size26&quot;&gt;3. 오늘의 실습: 스킨 구조 해부하기&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 20px;&quot; data-ke-size=&quot;size16&quot;&gt;단순히 찾는 것을 넘어, 각 영역이 &lt;b&gt;어디서 시작해서 어디서 끝나는지&lt;/b&gt; 범위를 파악해보세요.&lt;/p&gt;
&lt;div style=&quot;overflow-x: auto; border-radius: 12px; border: 1px solid #e2e8f0;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; min-width: 500px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead style=&quot;background-color: #4f46e5;&quot;&gt;
&lt;tr&gt;
&lt;th style=&quot;padding: 14px; border-bottom: 1px solid #e2e8f0; text-align: center; width: 15%; color: #ffffff; font-weight: bold;&quot;&gt;확인&lt;/th&gt;
&lt;th style=&quot;padding: 14px; border-bottom: 1px solid #e2e8f0; text-align: left; color: #ffffff; font-weight: bold;&quot;&gt;실습 미션 (Level 1~3)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody style=&quot;background-color: #ffffff;&quot;&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 14px; border-bottom: 1px solid #e2e8f0; text-align: center; font-size: 1.2rem;&quot;&gt;☐&lt;/td&gt;
&lt;td style=&quot;padding: 14px; border-bottom: 1px solid #e2e8f0; color: #475569;&quot;&gt;[Lv.1] &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt; 구역의 시작과 끝 태그를 찾아 주석을 달았는가?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 14px; border-bottom: 1px solid #e2e8f0; text-align: center; font-size: 1.2rem;&quot;&gt;☐&lt;/td&gt;
&lt;td style=&quot;padding: 14px; border-bottom: 1px solid #e2e8f0; color: #475569;&quot;&gt;[Lv.2] 반복 출력 블록(&lt;code&gt;s_article_rep&lt;/code&gt;)의 &lt;b&gt;전체 범위&lt;/b&gt;를 식별했는가?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 14px; border-bottom: 1px solid #e2e8f0; text-align: center; font-size: 1.2rem;&quot;&gt;☐&lt;/td&gt;
&lt;td style=&quot;padding: 14px; border-bottom: 1px solid #e2e8f0; color: #475569;&quot;&gt;[Lv.3] 치환자의 역할(제목 / 본문 / 사이드바 등)을 정확히 구분했는가?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 14px; text-align: center; font-size: 1.2rem;&quot;&gt;☐&lt;/td&gt;
&lt;td style=&quot;padding: 14px; color: #475569;&quot;&gt;[Lv.3] 사이드바가 &lt;code&gt;#container&lt;/code&gt; 내부에 있는지, 바깥에 있는지 확인했는가?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;!-- 흐름 정리 --&gt;
&lt;section style=&quot;background-color: #f8fafc; padding: 30px; border-radius: 15px; margin-bottom: 40px; border: 1px solid #e2e8f0; text-align: center;&quot;&gt;
&lt;h3 style=&quot;margin-top: 0; font-size: 1.1rem; color: #1e293b; margin-bottom: 25px;&quot; data-ke-size=&quot;size23&quot;&gt;  1~3일차 학습 흐름 완성&lt;/h3&gt;
&lt;div style=&quot;display: flex; flex-direction: column; align-items: center; gap: 8px;&quot;&gt;
&lt;div style=&quot;background: #ffffff; padding: 12px 24px; border-radius: 10px; border: 1px solid #cbd5e1; width: 85%; font-size: 0.95rem; font-weight: bold; color: #334155;&quot;&gt;Day 3: skin.html (치환자 포함 소스)&lt;/div&gt;
&lt;div style=&quot;color: #94a3b8; font-size: 11px; font-weight: 800;&quot;&gt;▼ 서버에서 치환자 미리 채우기 (SSR) ▼&lt;/div&gt;
&lt;div style=&quot;background: #4f46e5; padding: 12px 24px; border-radius: 10px; width: 85%; font-size: 0.95rem; color: #ffffff; font-weight: bold;&quot;&gt;데이터가 채워진 완성 HTML 전달&lt;/div&gt;
&lt;div style=&quot;color: #94a3b8; font-size: 11px; font-weight: 800;&quot;&gt;▼ 브라우저 해석 및 화면 구성 (DOM) ▼&lt;/div&gt;
&lt;div style=&quot;background: #ffffff; padding: 12px 24px; border-radius: 10px; border: 1px solid #cbd5e1; width: 85%; font-size: 0.95rem; font-weight: bold; color: #334155;&quot;&gt;CSS / JS 적용 및 최종 화면 출력&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;!-- FOOTER --&gt;&lt;footer style=&quot;border: 2px dashed #cbd5e1; padding: 30px; border-radius: 15px; text-align: center; background-color: #f8fafc;&quot;&gt;
&lt;p style=&quot;margin-top: 0; font-weight: 800; color: #1e293b; font-size: 1.1rem;&quot; data-ke-size=&quot;size16&quot;&gt;  3일차 학습 완료!&lt;/p&gt;
&lt;p style=&quot;font-size: 0.95rem; color: #64748b; margin-bottom: 25px;&quot; data-ke-size=&quot;size16&quot;&gt;  이 구조가 눈에 익어야, CSS에서 원하는 요소를 정확히 집어 디자인을 손볼 수 있습니다.&lt;/p&gt;
&lt;a style=&quot;display: inline-block; background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%); color: #ffffff !important; padding: 14px 28px; border-radius: 35px; text-decoration: none; font-weight: 800; font-size: 1rem; box-shadow: 0 10px 15px -3px rgba(79, 70, 229, 0.3);&quot; href=&quot;#&quot;&gt; Day 4: CSS를 다루기 전 필수 관문, '선택자 사고방식' 교정하기 &amp;rarr; &lt;/a&gt;&lt;/footer&gt;&lt;/div&gt;</description>
      <category>코딩/웹디자인</category>
      <author>data-pantry</author>
      <guid isPermaLink="true">https://data-pantry.tistory.com/12</guid>
      <comments>https://data-pantry.tistory.com/12#entry12comment</comments>
      <pubDate>Thu, 23 Apr 2026 13:04:40 +0900</pubDate>
    </item>
    <item>
      <title>AI를 이용한 티스토리 웹디자인 공부 - [DAY 2] DOM 트리와 시맨틱 태그</title>
      <link>https://data-pantry.tistory.com/11</link>
      <description>&lt;div style=&quot;max-width: 800px; margin: 0 auto; word-break: keep-all; font-family: 'Apple SD Gothic Neo', 'Malgun Gothic', sans-serif; line-height: 1.6; color: #333333;&quot;&gt;&lt;!-- 헤더 영역 --&gt;
&lt;div style=&quot;background: linear-gradient(135deg, #4f46e5, #7c3aed); color: #ffffff; padding: 28px 20px; border-radius: 12px; margin-bottom: 30px; text-align: center; box-shadow: 0 4px 6px rgba(0,0,0,0.1);&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;day2.png&quot; data-origin-width=&quot;2754&quot; data-origin-height=&quot;1536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZm6Qm/dJMcagL0scm/Gg2M3l6qWKbgKjlk2HmPKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZm6Qm/dJMcagL0scm/Gg2M3l6qWKbgKjlk2HmPKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZm6Qm/dJMcagL0scm/Gg2M3l6qWKbgKjlk2HmPKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZm6Qm%2FdJMcagL0scm%2FGg2M3l6qWKbgKjlk2HmPKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2754&quot; height=&quot;1536&quot; data-filename=&quot;day2.png&quot; data-origin-width=&quot;2754&quot; data-origin-height=&quot;1536&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;h1 style=&quot;margin: 0; font-size: 1.5rem; font-weight: bold;&quot;&gt;Day 2 &amp;mdash; DOM Tree와 시맨틱 태그 (개념 재정립)&lt;/h1&gt;
&lt;p style=&quot;margin: 10px 0 0 0; font-size: 1rem; opacity: 0.9;&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 HTML을 '쓰는' 연습보다, 구조를 '읽는 눈'을 키우는 날입니다&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 1층: 초보자용 10초 이해 --&gt;
&lt;div style=&quot;background: #f8fafc; padding: 20px; border-radius: 8px; margin-bottom: 30px; border: 1px solid #e2e8f0; box-shadow: 0 2px 4px rgba(0,0,0,0.02);&quot;&gt;&lt;b&gt;  일단 이것만&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;
&lt;div style=&quot;line-height: 1.8; color: #333; font-size: 1rem;&quot;&gt;&amp;bull; &lt;b&gt;HTML&lt;/b&gt; = 텍스트 파일 그 자체&lt;br /&gt;&amp;bull; &lt;b&gt;DOM&lt;/b&gt; = 브라우저가 그 텍스트를 읽고 만들어낸 구조체&lt;br /&gt;&amp;bull; &lt;b&gt;CSS&lt;/b&gt; = 그 구조 안에서 꾸밀 대상을 찾는 방법&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 2층: 핵심 요약 블록 --&gt;
&lt;div style=&quot;background: #f1f5f9; padding: 24px; border-radius: 8px; margin-bottom: 40px; border-left: 4px solid #4f46e5;&quot;&gt;&lt;b&gt;  조금 더 풀면 이렇습니다:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;
&lt;ol style=&quot;margin: 0; padding-left: 20px; color: #333; line-height: 1.8;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;HTML은 결국 텍스트 파일입니다.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;브라우저는 이걸 받아서 화면에 그리기 위해 내부적으로 '구조'로 변환합니다. 이게 DOM입니다.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;CSS가 실제로 적용되는 대상은 원본 HTML 파일이 아니라, 브라우저가 만들어낸 이 구조(DOM)입니다.&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;margin-top: 15px; padding-top: 15px; border-top: 1px dashed #cbd5e1; font-size: 0.95rem; color: #4338ca; font-weight: bold;&quot;&gt;  어디에 CSS를 넣을지 찾으려면, 이 &quot;구조(DOM)&quot;를 읽을 수 있어야 합니다.&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 1. DOM vs HTML --&gt;
&lt;h2 style=&quot;border-left: 5px solid #4f46e5; padding-left: 12px; font-size: 1.3rem; font-weight: bold; margin-top: 40px; margin-bottom: 20px; color: #1e293b;&quot; data-ke-size=&quot;size26&quot;&gt;1. DOM Tree = 단순 구조가 아니다&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 20px;&quot; data-ke-size=&quot;size16&quot;&gt;많이들 헷갈리는 부분입니다. 우리가 작성한 HTML 코드가 그대로 화면이 되는 게 아닙니다. 브라우저가 이를 해석해서 &lt;b&gt;'조작 가능한 객체 구조'&lt;/b&gt;로 새로 만들어내는데, 그게 바로 &lt;b&gt;DOM(Document Object Model)&lt;/b&gt;입니다.&lt;br /&gt;&lt;span style=&quot;display: inline-block; margin-top: 8px; color: #4f46e5; font-weight: bold; background: #eef2ff; padding: 4px 8px; border-radius: 4px;&quot;&gt;  JavaScript로 실시간으로 뜯어고칠 수 있는 구조라는 뜻입니다.&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; margin-bottom: 15px;&quot;&gt;&lt;!-- 카드 1 --&gt;
&lt;div style=&quot;background: #ffffff; padding: 24px; border-radius: 10px; border: 1px solid #e2e8f0; box-shadow: 0 1px 3px rgba(0,0,0,0.05);&quot;&gt;
&lt;h3 style=&quot;margin: 0 0 15px 0; font-size: 1.1rem; color: #4f46e5;&quot; data-ke-size=&quot;size23&quot;&gt;  HTML (파일)&lt;/h3&gt;
&lt;p style=&quot;margin: 0; font-size: 0.95rem; color: #475569;&quot; data-ke-size=&quot;size16&quot;&gt;서버에서 넘어오는 원본 텍스트 파일입니다.&lt;br /&gt;&lt;span style=&quot;display: inline-block; background: #e2e8f0; padding: 2px 6px; border-radius: 4px; font-size: 0.85rem; margin-top: 8px;&quot;&gt;&amp;lt;p&amp;gt;Hello&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 카드 2 --&gt;
&lt;div style=&quot;background: #ffffff; padding: 24px; border-radius: 10px; border: 1px solid #e2e8f0; box-shadow: 0 1px 3px rgba(0,0,0,0.05);&quot;&gt;
&lt;h3 style=&quot;margin: 0 0 15px 0; font-size: 1.1rem; color: #7c3aed;&quot; data-ke-size=&quot;size23&quot;&gt;  DOM (브라우저 메모리)&lt;/h3&gt;
&lt;p style=&quot;margin: 0; font-size: 0.95rem; color: #475569;&quot; data-ke-size=&quot;size16&quot;&gt;브라우저가 HTML을 해석해서 만들어낸 트리 구조입니다. 여기서 중요한 건, &lt;b&gt;&quot;Hello&quot; 같은 텍스트 하나도 독립된 노드로 존재한다&lt;/b&gt;는 점입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-top: 15px; margin-bottom: 30px; padding: 16px; background: #eef2ff; border-radius: 8px; font-size: 0.95rem; color: #3730a3; border-left: 4px solid #4f46e5;&quot;&gt;  &lt;b&gt;핵심:&lt;/b&gt; DOM은 고정된 구조가 아닙니다. &lt;b&gt;JavaScript가 언제든 바꿀 수 있는 살아있는 구조&lt;/b&gt;입니다.&lt;br /&gt;&amp;rarr; 웹이 '정적인 문서'가 아니라 '움직이는 프로그램'인 이유가 여기에 있습니다.&lt;/div&gt;
&lt;!-- 2. CSS 선택자와 DOM 관계 --&gt;
&lt;h2 style=&quot;border-left: 5px solid #4f46e5; padding-left: 12px; font-size: 1.3rem; font-weight: bold; margin-top: 40px; margin-bottom: 20px; color: #1e293b;&quot; data-ke-size=&quot;size26&quot;&gt;2. CSS와 DOM 구조의 관계&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 20px;&quot; data-ke-size=&quot;size16&quot;&gt;CSS 선택자는 &lt;b&gt;&quot;이 구조 안에서 스타일을 줄 대상을 어떻게 찾을 것인가&quot;&lt;/b&gt;의 문제입니다. DOM 구조를 모르면 CSS를 제대로 쓸 수가 없습니다.&lt;/p&gt;
&lt;div style=&quot;background: #eef2ff; padding: 20px; border-radius: 8px; margin-bottom: 30px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-weight: bold; color: #3730a3;&quot; data-ke-size=&quot;size16&quot;&gt;  자주 겪는 상황&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-size: 0.95rem; color: #4338ca;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code style=&quot;background: #ffffff; padding: 2px 6px; border-radius: 4px;&quot;&gt;.article h2 { color: red; }&lt;/code&gt; &amp;mdash; article 안의 h2 제목을 빨갛게 바꾸는 코드입니다.&lt;br /&gt;&lt;br /&gt;이게 안 먹힌다면?&lt;br /&gt;&amp;rarr; &lt;b&gt;클래스가 생각한 위치에 없거나, 구조의 범위를 잘못 파악한 것&lt;/b&gt;입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 3. 시맨틱 태그 실전 --&gt;
&lt;h2 style=&quot;border-left: 5px solid #4f46e5; padding-left: 12px; font-size: 1.3rem; font-weight: bold; margin-top: 40px; margin-bottom: 20px; color: #1e293b;&quot; data-ke-size=&quot;size26&quot;&gt;3. 시맨틱 태그 &amp;mdash; 실전 판단 기준&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt;과 &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt;, 어떻게 쓸지 헷갈린다면 아래 기준 하나만 기억하세요.&lt;/p&gt;
&lt;div style=&quot;overflow-x: auto; margin-bottom: 10px;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; text-align: left; border: 1px solid #e2e8f0; border-radius: 8px; overflow: hidden; word-break: keep-all;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background: #f8fafc;&quot;&gt;
&lt;th style=&quot;padding: 12px 10px; border-bottom: 1px solid #e2e8f0; font-weight: bold; color: #475569; font-size: 0.95rem;&quot;&gt;태그&lt;/th&gt;
&lt;th style=&quot;padding: 12px 10px; border-bottom: 1px solid #e2e8f0; font-weight: bold; color: #475569; font-size: 0.95rem;&quot;&gt;직관적 의미&lt;/th&gt;
&lt;th style=&quot;padding: 12px 10px; border-bottom: 1px solid #e2e8f0; font-weight: bold; color: #475569; font-size: 0.95rem;&quot;&gt;올바른 예시&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 10px; border-bottom: 1px solid #e2e8f0; font-weight: bold; color: #4f46e5; font-size: 0.95rem;&quot;&gt;&amp;lt;article&amp;gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 10px; border-bottom: 1px solid #e2e8f0; color: #333; font-size: 0.95rem;&quot;&gt;&quot;완결된 글 하나&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 10px; border-bottom: 1px solid #e2e8f0; color: #333; font-size: 0.95rem;&quot;&gt;블로그 포스트 1개, 뉴스 기사 1개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 10px; border-bottom: 1px solid #e2e8f0; font-weight: bold; color: #7c3aed; font-size: 0.95rem;&quot;&gt;&amp;lt;section&amp;gt;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 10px; border-bottom: 1px solid #e2e8f0; color: #333; font-size: 0.95rem;&quot;&gt;&quot;여러 글의 묶음&quot;&lt;/td&gt;
&lt;td style=&quot;padding: 12px 10px; border-bottom: 1px solid #e2e8f0; color: #333; font-size: 0.95rem;&quot;&gt;최신 글 목록, 인기 글 영역&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p style=&quot;margin-top: 0; margin-bottom: 30px; font-size: 0.9rem; color: #64748b;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 시맨틱 태그를 제대로 쓰면 검색엔진이 콘텐츠 구조를 더 정확하게 파악합니다. SEO에 직접 영향을 줍니다.&lt;/p&gt;
&lt;!-- 4. 티스토리 전용 주의사항 --&gt;
&lt;h2 style=&quot;border-left: 5px solid #4f46e5; padding-left: 12px; font-size: 1.3rem; font-weight: bold; margin-top: 40px; margin-bottom: 20px; color: #1e293b;&quot; data-ke-size=&quot;size26&quot;&gt;4. 티스토리에서 꼭 알아야 할 것&lt;/h2&gt;
&lt;div style=&quot;background: #fff7ed; border-left: 5px solid #f97316; padding: 20px; border-radius: 0 8px 8px 0; margin-bottom: 30px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-weight: bold; color: #c2410c;&quot; data-ke-size=&quot;size16&quot;&gt;⚠️ 우리는 이미 지어진 집 안에서 가구를 배치하고 있습니다.&lt;/p&gt;
&lt;p style=&quot;margin: 0; font-size: 0.95rem; color: #9a3412;&quot; data-ke-size=&quot;size16&quot;&gt;티스토리 스킨에는 이미 뼈대 구조가 있습니다. 본문을 작성하는 건 그 구조 안의 특정 방에 내용을 채워넣는 일입니다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;[실전 원칙]&lt;/b&gt;&lt;br /&gt;1. 스킨에 이미 있는 &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt;를 본문 안에서 또 만들지 마세요.&lt;br /&gt;2. 구조끼리 충돌하면 &lt;b&gt;레이아웃이 무너지고, 검색 노출도 떨어집니다.&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;!-- 5. DOM 트리 읽는 법 --&gt;
&lt;h2 style=&quot;border-left: 5px solid #4f46e5; padding-left: 12px; font-size: 1.3rem; font-weight: bold; margin-top: 40px; margin-bottom: 20px; color: #1e293b;&quot; data-ke-size=&quot;size26&quot;&gt;5. 실전 기술: DOM 트리 파악하기&lt;/h2&gt;
&lt;p style=&quot;margin-bottom: 20px;&quot; data-ke-size=&quot;size16&quot;&gt;F12(개발자 도구)로 구조를 직접 뜯어보는 연습입니다.&lt;/p&gt;
&lt;div style=&quot;margin-bottom: 30px;&quot;&gt;
&lt;div style=&quot;display: flex; align-items: center; margin-bottom: 12px;&quot;&gt;&lt;span style=&quot;display: inline-block; min-width: 22px; height: 22px; background: #4f46e5; color: #ffffff; border-radius: 50%; text-align: center; line-height: 22px; font-size: 12px; font-weight: bold; margin-right: 12px;&quot;&gt;1&lt;/span&gt;
&lt;p style=&quot;margin: 0; font-size: 0.95rem;&quot; data-ke-size=&quot;size16&quot;&gt;바꾸고 싶은 요소를 우클릭 &amp;rarr; 검사(Inspect)합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; align-items: center; margin-bottom: 12px;&quot;&gt;&lt;span style=&quot;display: inline-block; min-width: 22px; height: 22px; background: #4f46e5; color: #ffffff; border-radius: 50%; text-align: center; line-height: 22px; font-size: 12px; font-weight: bold; margin-right: 12px;&quot;&gt;2&lt;/span&gt;
&lt;p style=&quot;margin: 0; font-size: 0.95rem;&quot; data-ke-size=&quot;size16&quot;&gt;그 요소를 감싸고 있는 부모 태그가 뭔지 확인합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;display: flex; align-items: center; margin-bottom: 12px;&quot;&gt;&lt;span style=&quot;display: inline-block; min-width: 22px; height: 22px; background: #4f46e5; color: #ffffff; border-radius: 50%; text-align: center; line-height: 22px; font-size: 12px; font-weight: bold; margin-right: 12px;&quot;&gt;3&lt;/span&gt;
&lt;p style=&quot;margin: 0; font-size: 0.95rem;&quot; data-ke-size=&quot;size16&quot;&gt;같은 레벨에 있는 다른 요소들까지 훑으면서 전체 패턴을 잡습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-top: 16px; padding: 12px; background: #f1f5f9; border-radius: 6px; font-size: 0.95rem; color: #475569;&quot;&gt;  &lt;b&gt;핵심:&lt;/b&gt; 구조를 볼 때는 안에서 밖으로 파고들지 말고, 요소에서 &lt;b&gt;위(부모)로 거슬러 올라가면서 전체 틀을 잡아야&lt;/b&gt; 합니다.&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 6. 실습 구역 --&gt;
&lt;h2 style=&quot;border-left: 5px solid #4f46e5; padding-left: 12px; font-size: 1.3rem; font-weight: bold; margin-top: 40px; margin-bottom: 20px; color: #1e293b;&quot; data-ke-size=&quot;size26&quot;&gt;6. 오늘의 실습 &amp;mdash; 내 블로그 뼈대 찾기&lt;/h2&gt;
&lt;div style=&quot;background: #eef2ff; padding: 24px; border-radius: 8px; margin-bottom: 30px;&quot;&gt;
&lt;p style=&quot;margin: 0 0 15px 0; font-weight: bold; color: #3730a3;&quot; data-ke-size=&quot;size16&quot;&gt;목표: 코드를 읽는 게 아니라 전체 뼈대를 해석하는 것&lt;/p&gt;
&lt;p style=&quot;margin: 0 0 10px 0; font-size: 0.95rem; color: #4338ca;&quot; data-ke-size=&quot;size16&quot;&gt;본인 블로그의 [스킨 편집] &amp;rarr; [HTML 편집]에 들어가서 다음 영역을 직접 찾아보세요.&lt;/p&gt;
&lt;ul style=&quot;margin: 0; padding-left: 20px; font-size: 0.95rem; color: #3730a3; line-height: 1.8;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;최상단 &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt; 찾기&lt;/li&gt;
&lt;li&gt;메인 콘텐츠가 시작되는 &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; 또는 &lt;code&gt;#mArticle&lt;/code&gt; 찾기&lt;/li&gt;
&lt;li&gt;포스트가 생성되는 &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt; 찾기&lt;/li&gt;
&lt;li&gt;&lt;b&gt;찾은 영역들이 서로 어떤 부모-자식 관계인지 종이에 트리로 그려보기&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- 7. 체크리스트 --&gt;
&lt;h2 style=&quot;border-left: 5px solid #4f46e5; padding-left: 12px; font-size: 1.3rem; font-weight: bold; margin-top: 40px; margin-bottom: 20px; color: #1e293b;&quot; data-ke-size=&quot;size26&quot;&gt;☑️ Day 2 완료 체크리스트&lt;/h2&gt;
&lt;div style=&quot;margin-bottom: 40px;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; text-align: left; border: 1px solid #e2e8f0; border-radius: 8px; overflow: hidden;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 10px; border-bottom: 1px solid #e2e8f0; width: 30px; text-align: center; color: #4f46e5; font-size: 1.1rem; vertical-align: top;&quot;&gt;☐&lt;/td&gt;
&lt;td style=&quot;padding: 12px 10px; border-bottom: 1px solid #e2e8f0; color: #333; font-size: 0.95rem; line-height: 1.5;&quot;&gt;HTML 파일과 브라우저가 만든 DOM 트리가 어떻게 다른지 설명할 수 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 10px; border-bottom: 1px solid #e2e8f0; text-align: center; color: #4f46e5; font-size: 1.1rem; vertical-align: top;&quot;&gt;☐&lt;/td&gt;
&lt;td style=&quot;padding: 12px 10px; border-bottom: 1px solid #e2e8f0; color: #333; font-size: 0.95rem; line-height: 1.5;&quot;&gt;텍스트 노드도 DOM 구조의 일부라는 걸 이해했다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 10px; border-bottom: 1px solid #e2e8f0; text-align: center; color: #4f46e5; font-size: 1.1rem; vertical-align: top;&quot;&gt;☐&lt;/td&gt;
&lt;td style=&quot;padding: 12px 10px; border-bottom: 1px solid #e2e8f0; color: #333; font-size: 0.95rem; line-height: 1.5;&quot;&gt;CSS는 DOM 구조를 기준으로 대상을 찾아 적용된다는 걸 이해했다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 10px; border-bottom: 1px solid #e2e8f0; text-align: center; color: #4f46e5; font-size: 1.1rem; vertical-align: top;&quot;&gt;☐&lt;/td&gt;
&lt;td style=&quot;padding: 12px 10px; border-bottom: 1px solid #e2e8f0; color: #333; font-size: 0.95rem; line-height: 1.5;&quot;&gt;article(글 하나)과 section(글 묶음)의 쓰임을 명확히 구분할 수 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 10px; text-align: center; color: #4f46e5; font-size: 1.1rem; vertical-align: top;&quot;&gt;☐&lt;/td&gt;
&lt;td style=&quot;padding: 12px 10px; color: #333; font-size: 0.95rem; line-height: 1.5;&quot;&gt;티스토리 스킨에는 이미 구조가 있으며, 이걸 건드리면 어떤 문제가 생기는지 이해했다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;!-- 푸터 --&gt;
&lt;div style=&quot;border: 2px dashed #cbd5e1; padding: 30px 20px; border-radius: 12px; text-align: center; background: #f8fafc;&quot;&gt;
&lt;p style=&quot;margin: 0 0 15px 0; font-size: 1.1rem; color: #475569; font-weight: bold;&quot; data-ke-size=&quot;size16&quot;&gt;다 체크했다면, 실습에서 그린 트리 구조를 사진으로 찍어두세요.&lt;/p&gt;
&lt;div style=&quot;display: inline-block; background: linear-gradient(135deg, #4f46e5, #7c3aed); color: #ffffff; padding: 12px 24px; border-radius: 30px; font-weight: bold; font-size: 1rem;&quot;&gt;Next Step   Day 3 &amp;mdash; 구조를 활용한 CSS 선택자와 실전 스타일링&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>코딩/웹디자인</category>
      <category>티스토리 #스킨편집 #DOM #HTML #시맨틱태그 #웹디자인 #SEO #프론트엔드 #코딩교육 #웹개발입문 #티스토리강좌 #검색엔진최적화</category>
      <author>data-pantry</author>
      <guid isPermaLink="true">https://data-pantry.tistory.com/11</guid>
      <comments>https://data-pantry.tistory.com/11#entry11comment</comments>
      <pubDate>Mon, 20 Apr 2026 12:40:37 +0900</pubDate>
    </item>
    <item>
      <title>AI를 이용한 티스토리 웹디자인 공부 - [DAY 1] HTML 가이드</title>
      <link>https://data-pantry.tistory.com/10</link>
      <description>&lt;!-- 티스토리 글쓰기 'HTML 모드'에 복사하여 붙여넣으세요 --&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2752&quot; data-origin-height=&quot;1536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vwIUo/dJMcagkRrwQ/UlApy8WF0xSmx1zpQ0cvX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vwIUo/dJMcagkRrwQ/UlApy8WF0xSmx1zpQ0cvX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vwIUo/dJMcagkRrwQ/UlApy8WF0xSmx1zpQ0cvX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvwIUo%2FdJMcagkRrwQ%2FUlApy8WF0xSmx1zpQ0cvX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2752&quot; height=&quot;1536&quot; data-origin-width=&quot;2752&quot; data-origin-height=&quot;1536&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;ts-guide-container&quot; style=&quot;max-width: 800px; margin: 0 auto; font-family: 'Apple SD Gothic Neo', 'Malgun Gothic', sans-serif; color: #333; line-height: 1.7; word-break: keep-all;&quot;&gt;&lt;!-- Header --&gt;&lt;header style=&quot;background: linear-gradient(135deg, #4f46e5 0%, #7c3aed 100%); padding: 28px 20px; border-radius: 15px; color: #fff; text-align: center; margin-bottom: 30px; box-shadow: 0 10px 20px rgba(79, 70, 229, 0.1);&quot;&gt;
&lt;p style=&quot;font-weight: bold; opacity: 0.9; margin: 0 0 8px 0; letter-spacing: 2px; text-transform: uppercase; font-size: 0.85rem;&quot; data-ke-size=&quot;size16&quot;&gt;Tistory Skin Guide&lt;/p&gt;
&lt;h1 style=&quot;margin: 0; font-size: 1.5rem; font-weight: 800; line-height: 1.3;&quot;&gt;Day 1 &amp;mdash; 웹 작동 원리 &lt;span style=&quot;font-weight: 300; opacity: 0.8;&quot;&gt;(개념 리셋)&lt;/span&gt;&lt;/h1&gt;
&lt;/header&gt;&lt;!-- Section 1 --&gt;
&lt;section style=&quot;margin-bottom: 40px;&quot;&gt;
&lt;h2 style=&quot;border-left: 5px solid #4f46e5; padding-left: 15px; font-size: 1.3rem; color: #1e1b4b; margin-bottom: 20px;&quot; data-ke-size=&quot;size26&quot;&gt;1. URL을 입력하면 벌어지는 일&lt;/h2&gt;
&lt;div style=&quot;background: #f8fafc; padding: 20px; border-radius: 12px; border: 1px solid #e2e8f0;&quot;&gt;
&lt;div style=&quot;display: flex; flex-direction: column;&quot;&gt;&lt;!-- Item 1 --&gt;
&lt;div style=&quot;display: flex; align-items: flex-start; margin-bottom: 12px;&quot;&gt;&lt;span style=&quot;background: #4f46e5; color: #fff; width: 22px; height: 22px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 0.75rem; flex-shrink: 0; margin-top: 3px; margin-right: 12px;&quot;&gt;1&lt;/span&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;사용자:&lt;/b&gt; 주소창에 URL 입력&lt;/p&gt;
&lt;/div&gt;
&lt;!-- Item 2 (DNS Detail) --&gt;
&lt;div style=&quot;display: flex; flex-direction: column; margin-bottom: 12px;&quot;&gt;
&lt;div style=&quot;display: flex; align-items: flex-start;&quot;&gt;&lt;span style=&quot;background: #4f46e5; color: #fff; width: 22px; height: 22px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 0.75rem; flex-shrink: 0; margin-top: 3px; margin-right: 12px;&quot;&gt;2&lt;/span&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;브라우저:&lt;/b&gt; &quot;서버가 어디 있지?&quot; &amp;rarr; &lt;b&gt;DNS 조회&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin: 4px 0 0 34px; font-size: 0.85rem; color: #64748b;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 도메인 이름을 실제 서버 주소(IP)로 변환하는 과정입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- Item 3 (HTTP Detail) --&gt;
&lt;div style=&quot;display: flex; flex-direction: column; margin-bottom: 12px;&quot;&gt;
&lt;div style=&quot;display: flex; align-items: flex-start;&quot;&gt;&lt;span style=&quot;background: #4f46e5; color: #fff; width: 22px; height: 22px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 0.75rem; flex-shrink: 0; margin-top: 3px; margin-right: 12px;&quot;&gt;3&lt;/span&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;요청:&lt;/b&gt; 브라우저 &amp;rarr; 서버 &quot;페이지 파일 줘&quot; (**HTTP 요청**)&lt;/p&gt;
&lt;/div&gt;
&lt;p style=&quot;margin: 4px 0 0 34px; font-size: 0.85rem; color: #64748b;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 서버에 &quot;GET /index.html&quot; 같은 메시지를 보내 콘텐츠를 요청합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- Item 4 --&gt;
&lt;div style=&quot;display: flex; align-items: flex-start; margin-bottom: 12px;&quot;&gt;&lt;span style=&quot;background: #4f46e5; color: #fff; width: 22px; height: 22px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 0.75rem; flex-shrink: 0; margin-top: 3px; margin-right: 12px;&quot;&gt;4&lt;/span&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;응답:&lt;/b&gt; 서버 &amp;rarr; 브라우저 HTML 전달 (**HTTP 응답**)&lt;/p&gt;
&lt;/div&gt;
&lt;!-- Item 5 --&gt;
&lt;div style=&quot;display: flex; align-items: flex-start;&quot;&gt;&lt;span style=&quot;background: #4f46e5; color: #fff; width: 22px; height: 22px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 0.75rem; flex-shrink: 0; margin-top: 3px; margin-right: 12px;&quot;&gt;5&lt;/span&gt;
&lt;p style=&quot;margin: 0;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;렌더링:&lt;/b&gt; 브라우저가 HTML 해석 &amp;rarr; &lt;b&gt;화면 출력&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Motivation Box --&gt;
&lt;div style=&quot;margin-top: 20px; padding: 15px; background: #f1f5f9; border-radius: 8px; border-left: 4px solid #4f46e5;&quot;&gt;
&lt;p style=&quot;margin: 0; font-size: 0.9rem; color: #1e293b;&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;왜 배울까요?&lt;/b&gt; 이 과정을 이해해야 웹이 단순한 화면이 아니라 &lt;b&gt;'요청과 응답'으로 이루어진 구조&lt;/b&gt;라는 것을 알 수 있기 때문입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;div style=&quot;margin-top: 15px; padding: 15px; background: #eef2ff; border-radius: 8px;&quot;&gt;
&lt;p style=&quot;margin: 0; font-size: 0.95rem; color: #3730a3;&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;핵심:&lt;/b&gt; 브라우저가 받는 것은 결국 &lt;b&gt;텍스트 파일&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0 0; font-size: 0.9rem; color: #4338ca; font-weight: 500;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;rarr; 이 텍스트를 구조(DOM)로 바꾸는 것이 브라우저의 핵심 역할입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;!-- Section 2: SSR vs CSR --&gt;
&lt;section style=&quot;margin-bottom: 40px;&quot;&gt;
&lt;h2 style=&quot;border-left: 5px solid #4f46e5; padding-left: 15px; font-size: 1.3rem; color: #1e1b4b; margin-bottom: 20px;&quot; data-ke-size=&quot;size26&quot;&gt;2. SSR vs CSR (티스토리 핵심 이해)&lt;/h2&gt;
&lt;div style=&quot;display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 15px; margin-bottom: 20px;&quot;&gt;&lt;!-- SSR --&gt;
&lt;div style=&quot;background: #fff; border: 1px solid #e2e8f0; border-radius: 12px; padding: 20px; box-shadow: 0 4px 6px rgba(0,0,0,0.02);&quot;&gt;
&lt;h3 style=&quot;color: #4f46e5; margin-top: 0; font-size: 1.1rem; border-bottom: 2px solid #eef2ff; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;SSR (Server-Side)&lt;/h3&gt;
&lt;p style=&quot;font-size: 0.85rem; color: #64748b; margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;서버가 HTML을 완성해서 전달&lt;/p&gt;
&lt;ul style=&quot;padding-left: 18px; font-size: 0.9rem; margin: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;이미 완성된 HTML을 수신&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;데이터가 HTML 안에 이미 존재&lt;/li&gt;
&lt;li&gt;&lt;b&gt;첫 화면이 빠르고 SEO에 유리&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!-- CSR --&gt;
&lt;div style=&quot;background: #fff; border: 1px solid #e2e8f0; border-radius: 12px; padding: 20px; box-shadow: 0 4px 6px rgba(0,0,0,0.02);&quot;&gt;
&lt;h3 style=&quot;color: #94a3b8; margin-top: 0; font-size: 1.1rem; border-bottom: 2px solid #f8fafc; padding-bottom: 10px;&quot; data-ke-size=&quot;size23&quot;&gt;CSR (Client-Side)&lt;/h3&gt;
&lt;p style=&quot;font-size: 0.85rem; color: #64748b; margin-bottom: 15px;&quot; data-ke-size=&quot;size16&quot;&gt;브라우저(JS)가 HTML을 생성&lt;/p&gt;
&lt;ul style=&quot;padding-left: 18px; font-size: 0.9rem; margin: 0;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;텅 빈 HTML과 JS를 수신&lt;/li&gt;
&lt;li style=&quot;margin-bottom: 6px;&quot;&gt;브라우저에서 동적으로 생성&lt;/li&gt;
&lt;li&gt;동적인 사용자 경험에 최적화&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background: #fff7ed; padding: 15px; border-radius: 8px; border: 1px solid #ffedd5; color: #9a3412;&quot;&gt;
&lt;p style=&quot;margin: 0; font-size: 0.9rem; font-weight: bold;&quot; data-ke-size=&quot;size16&quot;&gt;⚠️ 티스토리는 SSR 기반입니다!&lt;/p&gt;
&lt;p style=&quot;margin: 5px 0 0 0; font-size: 0.85rem;&quot; data-ke-size=&quot;size16&quot;&gt;치환자는 서버에서 처리되므로 자바스크립트(JS)로 직접 제어할 수 없습니다. JS는 렌더링된 결과물에 '효과'를 주는 보조 도구일 뿐입니다.&lt;/p&gt;
&lt;p style=&quot;margin: 8px 0 0 0; font-size: 0.85rem; color: #c2410c; font-weight: 600;&quot; data-ke-size=&quot;size16&quot;&gt;  SSR은 처음 화면이 빠르게 보이고, 검색 엔진(SEO)에 노출되기 유리합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;!-- Section 3: Task Checklist --&gt;
&lt;section style=&quot;margin-bottom: 40px;&quot;&gt;
&lt;h2 style=&quot;border-left: 5px solid #4f46e5; padding-left: 15px; font-size: 1.3rem; color: #1e1b4b; margin-bottom: 20px;&quot; data-ke-size=&quot;size26&quot;&gt;3. 오늘의 실습 (F12 활용)&lt;/h2&gt;
&lt;div style=&quot;overflow-x: auto;&quot;&gt;
&lt;table style=&quot;width: 100%; border-collapse: collapse; border-radius: 10px; overflow: hidden; font-size: 0.9rem; min-width: 300px;&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background: #f1f5f9;&quot;&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: left; border-bottom: 2px solid #e2e8f0;&quot;&gt;체크포인트&lt;/th&gt;
&lt;th style=&quot;padding: 12px 15px; text-align: center; border-bottom: 2px solid #e2e8f0; width: 60px;&quot;&gt;확인&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border-bottom: 1px solid #f1f5f9;&quot;&gt;블로그 제목이 HTML에 텍스트로 들어있는가?&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border-bottom: 1px solid #f1f5f9; text-align: center; color: #4f46e5; font-size: 1.2rem;&quot;&gt;☐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;background: #fcfcfc;&quot;&gt;
&lt;td style=&quot;padding: 12px 15px; border-bottom: 1px solid #f1f5f9;&quot;&gt;포스트 제목이 실제 텍스트로 보이는가?&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border-bottom: 1px solid #f1f5f9; text-align: center; color: #4f46e5; font-size: 1.2rem;&quot;&gt;☐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 12px 15px; border-bottom: 1px solid #f1f5f9;&quot;&gt;HTML 구조 안에 &lt;b&gt;&amp;lt;header&amp;gt;, &amp;lt;main&amp;gt;&lt;/b&gt; 같은 태그가 보이는가?&lt;/td&gt;
&lt;td style=&quot;padding: 12px 15px; border-bottom: 1px solid #f1f5f9; text-align: center; color: #4f46e5; font-size: 1.2rem;&quot;&gt;☐&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;!-- Footer --&gt;&lt;footer style=&quot;text-align: center; background: #f8fafc; padding: 25px; border-radius: 12px; border: 1px dashed #cbd5e1;&quot;&gt;
&lt;p style=&quot;margin: 0 0 12px 0; color: #64748b; font-size: 0.85rem;&quot; data-ke-size=&quot;size16&quot;&gt;실습 결과를 확인했다면 웹의 뼈대를 이해할 차례입니다.&lt;/p&gt;
&lt;a href=&quot;https://data-pantry.tistory.com/11&quot; target=&quot;_blank&quot; style=&quot;text-decoration: none; display: inline-block;&quot;&gt;
    &lt;div style=&quot;display: inline-block; padding: 10px 24px; background: #4f46e5; color: #fff; border-radius: 30px; font-weight: bold; font-size: 0.95rem; text-decoration: none; cursor: pointer;&quot;&gt;
          구조 이해로 넘어가기 &amp;rarr; Day 2 (DOM Tree)
    &lt;/div&gt;
&lt;/a&gt;
&lt;/footer&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>코딩/웹디자인</category>
      <category>웹작동원리 #SSR #CSR #티스토리 #스킨편집 #브라우저 #DNS #HTTP #웹개발입문 #프론트엔드 #코딩교육 #검색엔진최적화</category>
      <author>data-pantry</author>
      <guid isPermaLink="true">https://data-pantry.tistory.com/10</guid>
      <comments>https://data-pantry.tistory.com/10#entry10comment</comments>
      <pubDate>Thu, 16 Apr 2026 13:08:44 +0900</pubDate>
    </item>
  </channel>
</rss>