.fm-body{background:var(--mist,#faf9f7)}

/* toolbar */
.fm-toolbar{
  position:sticky;top:70px;z-index:20;
  background:rgba(255,255,255,.94);backdrop-filter:saturate(160%) blur(16px);
  border-bottom:1px solid var(--line,#e8e4db);
}
.fm-toolbar__inner{
  max-width:1220px;margin:0 auto;padding:12px clamp(22px,5vw,48px);
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
}
.fm-toolbar label{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted,#7c7871)}
.fm-record-select{
  appearance:none;border:1px solid var(--line-2,#d9d3c6);background:#fff;
  padding:9px 34px 9px 12px;font:inherit;font-size:.88rem;color:var(--ink,#1a1a1a);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%239a7c49'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;cursor:pointer;min-width:200px;
}
.fm-tools{display:flex;gap:8px;flex-wrap:wrap;margin-left:auto}
.fm-btn{
  border:1px solid var(--line-2,#d9d3c6);background:#fff;color:var(--ink,#1a1a1a);
  font:inherit;font-size:.76rem;letter-spacing:.08em;padding:9px 15px;cursor:pointer;
  transition:background .25s,border-color .25s,color .25s;white-space:nowrap;
}
.fm-btn:hover{border-color:var(--ink,#1a1a1a)}
.fm-btn--primary{background:var(--ink,#1a1a1a);border-color:var(--ink,#1a1a1a);color:#fff}
.fm-btn--primary:hover{background:#333;border-color:#333}
.fm-btn--ghost{border-style:dashed}
.fm-btn--danger:hover{border-color:#a33;color:#a33}
.fm-status{font-size:.78rem;color:var(--muted,#7c7871);min-width:150px}
.fm-status b{color:var(--accent,#9a7c49);font-weight:600}
.fm-cloudbar{border-top:1px solid var(--line,#e8e4db);padding-top:0;gap:10px}
.fm-key{
  flex:1;min-width:210px;max-width:360px;border:1px solid var(--line-2,#d9d3c6);background:#fff;
  font:inherit;font-size:.88rem;padding:9px 12px;border-radius:0;
}
.fm-key:focus{outline:none;border-color:var(--accent,#9a7c49);box-shadow:0 0 0 3px #9a7c4920}

/* 全點選版：矩陣單選、送出、完成 */
.fm-matrix--radio{min-width:880px}
.fm-matrix--radio td{vertical-align:top}
.fm-cell-choices{display:flex;flex-direction:column;gap:5px}
.fm-mini{display:flex;align-items:center;gap:7px;font-size:.82rem;color:var(--ink-2,#3c3b38);cursor:pointer;white-space:nowrap}
.fm-mini input{accent-color:var(--accent,#9a7c49);width:14px;height:14px;flex:none}
.fm-mini:hover{color:var(--ink,#1a1a1a)}
.fm-sub2{margin:26px 0 12px;font-size:1rem;font-weight:600;color:var(--ink,#1a1a1a)}
.fm-submit{margin-top:46px;padding-top:28px;border-top:1px solid var(--line,#e8e4db)}
.fm-submit-btn{font-size:.92rem;padding:15px 40px}
.fm-submit-msg{min-height:1.2em;margin:0 0 14px;font-size:.88rem;color:var(--muted,#7c7871)}
.fm-submit-msg--error{color:#a33333}
.fm-field--error input{border-color:#a33333}
.fm-error{margin:5px 0 0;font-size:.78rem;color:#a33333}
.fm-done{margin-top:45px;border:1px solid var(--line,#e8e4db);background:var(--sand,#f4f2ec);padding:clamp(28px,4vw,52px);text-align:center}
.fm-done h2{margin:0 0 14px;font-weight:400;font-size:clamp(1.4rem,2.6vw,2rem)}
.fm-done p{color:var(--muted,#7c7871);max-width:44em;margin:0 auto 24px}
.fm-done .op-btn{display:inline-flex;margin:0 auto}

/* progress */
.fm-progress{height:2px;background:var(--line,#e8e4db)}
.fm-progress__bar{height:100%;width:0;background:var(--accent,#9a7c49);transition:width .35s var(--ease,ease)}

/* layout */
.fm-main{max-width:1220px;margin:0 auto;padding:clamp(30px,4vw,56px) clamp(22px,5vw,48px) 90px}
.fm-intro{max-width:60em}
.fm-intro h1{font-size:clamp(1.7rem,3.2vw,2.6rem);font-weight:300;letter-spacing:-.02em;margin:0 0 14px}
.fm-intro p{color:var(--muted,#7c7871);margin:0 0 8px}
.fm-pill{
  display:inline-block;font-size:.72rem;letter-spacing:.1em;color:var(--accent,#9a7c49);
  border:1px solid var(--accent-2,#c3a878);padding:4px 12px;margin:6px 6px 0 0;
}
.fm-warn{
  background:#fdf9ef;border:1px solid #efe2c4;padding:14px 18px;font-size:.85rem;color:#6b5a35;
  margin:22px 0 0;line-height:1.7;
}

.fm-section{margin-top:clamp(38px,5vw,64px);border-top:1px solid var(--line,#e8e4db);padding-top:clamp(26px,3vw,40px)}
.fm-sec-head{display:flex;align-items:flex-start;gap:16px;margin-bottom:10px}
.fm-sec-num{
  flex:none;width:44px;height:44px;border:1px solid var(--accent-2,#c3a878);
  display:grid;place-items:center;color:var(--accent,#9a7c49);font-weight:600;font-size:.9rem;
}
.fm-sec-head h2{margin:2px 0 0;font-size:clamp(1.25rem,2.2vw,1.7rem);font-weight:400;letter-spacing:-.01em}
.fm-sec-head h2 small{display:block;font-size:.78rem;color:var(--muted-2,#a39e94);font-weight:400;letter-spacing:.02em;margin-top:4px}
.fm-sub{font-size:.86rem;color:var(--muted,#7c7871);margin:0 0 22px;max-width:70em}

.fm-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 26px}
.fm-field{display:flex;flex-direction:column;gap:7px;min-width:0}
.fm-field--wide{grid-column:1/-1}
.fm-field > label,.fm-legend{font-size:.86rem;font-weight:600;color:var(--ink-2,#3c3b38);letter-spacing:.01em}
.fm-hint{font-size:.76rem;color:var(--muted-2,#a39e94);font-weight:400}
.fm-req{color:var(--accent,#9a7c49);margin-left:5px;font-size:.8rem}

input[type=text],input[type=tel],input[type=email],input[type=number],input[type=date],textarea,select.fm-select{
  width:100%;border:1px solid var(--line-2,#d9d3c6);background:#fff;font:inherit;
  font-size:1rem;color:var(--ink,#1a1a1a);padding:11px 13px;border-radius:0;
}
textarea{resize:vertical;min-height:74px;line-height:1.7}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent,#9a7c49);box-shadow:0 0 0 3px #9a7c4920}
input::placeholder,textarea::placeholder{color:#bdb8ae}
select.fm-select{
  appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%239a7c49'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 13px center;padding-right:34px;
}
.fm-inline{display:flex;gap:12px}
.fm-inline > *{flex:1}
.fm-inline .fm-unit{flex:0 0 96px}

/* choice chips */
.fm-choices{display:flex;flex-wrap:wrap;gap:8px}
.fm-choice{position:relative;display:inline-flex}
.fm-choice input{position:absolute;opacity:0;width:1px;height:1px}
.fm-choice span{
  display:inline-block;border:1px solid var(--line-2,#d9d3c6);background:#fff;
  padding:9px 15px;font-size:.86rem;color:var(--ink-2,#3c3b38);cursor:pointer;
  transition:all .2s var(--ease,ease);user-select:none;
}
.fm-choice span:hover{border-color:var(--accent-2,#c3a878)}
.fm-choice input:checked + span{background:var(--ink,#1a1a1a);border-color:var(--ink,#1a1a1a);color:#fff}
.fm-choice input:focus-visible + span{box-shadow:0 0 0 3px #9a7c4940}
.fm-choice input:checked + span::before{content:"✓ ";color:var(--accent-2,#c3a878)}
.fm-choice--radio input:checked + span::before{content:"● ";}

/* matrix */
.fm-tablewrap{overflow-x:auto;border:1px solid var(--line,#e8e4db)}
.fm-matrix{border-collapse:collapse;width:100%;min-width:840px;font-size:.86rem}
.fm-matrix th,.fm-matrix td{border-bottom:1px solid var(--line,#e8e4db);border-right:1px solid var(--line,#e8e4db);padding:9px 10px;text-align:left;vertical-align:top}
.fm-matrix th:last-child,.fm-matrix td:last-child{border-right:0}
.fm-matrix thead th{background:var(--sand,#f4f2ec);font-weight:600;color:var(--ink-2,#3c3b38);white-space:nowrap;font-size:.8rem;letter-spacing:.02em}
.fm-matrix tbody tr:hover{background:#fbfaf7}
.fm-matrix td:first-child{font-weight:500;color:var(--ink,#1a1a1a);min-width:190px}
.fm-matrix input,.fm-matrix select,.fm-matrix textarea{border:1px solid transparent;background:#fbfaf7;padding:7px 8px;font-size:.86rem;min-width:88px}
.fm-matrix input:focus,.fm-matrix select:focus,.fm-matrix textarea:focus{background:#fff}
.fm-matrix .fm-col-narrow{min-width:74px}

/* repeat cards */
.fm-repeat{display:grid;gap:18px}
.fm-card{border:1px solid var(--line,#e8e4db);background:#fff;padding:clamp(18px,2vw,26px)}
.fm-card__head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px}
.fm-card__head b{font-size:1rem;font-weight:600}
.fm-del{border:1px solid var(--line-2,#d9d3c6);background:#fff;color:var(--muted,#7c7871);font-size:.74rem;padding:6px 12px;cursor:pointer}
.fm-del:hover{border-color:#a33;color:#a33}
.fm-add{margin-top:16px}

/* footer actions */
.fm-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:44px;padding-top:26px;border-top:1px solid var(--line,#e8e4db)}
.fm-save-note{font-size:.8rem;color:var(--muted-2,#a39e94);margin-top:16px;max-width:60em}

/* print */
@media print{
  .op-header,.fm-toolbar,.fm-progress,.fm-actions,.fm-add,.fm-del,.op-foot{display:none!important}
  .fm-body{background:#fff}
  .fm-main{padding:0;max-width:none}
  .fm-section{break-inside:avoid;page-break-inside:avoid}
  .fm-card{break-inside:avoid}
  input,textarea,select{border:0!important;background:#fff!important;padding-left:0!important}
  .fm-matrix{min-width:0}
  .fm-choice input:not(:checked) + span{opacity:.35}
}
@media(max-width:900px){
  .fm-grid{grid-template-columns:1fr}
  .fm-toolbar{top:62px}
  .fm-tools{margin-left:0;width:100%}
  .fm-status{width:100%}
}
