:root{--ff-bg: #e8eef2;--ff-surface: #f4f7f9;--ff-ink: #1a2b33;--ff-muted: #4a5d68;--ff-accent: #0d7a7a;--ff-track: #c5d4dc;--ff-border: #8aa0ad;--ff-motion: right;--ff-friction: left;--ff-touch-min: 44px;font-family:system-ui,-apple-system,Apple SD Gothic Neo,Malgun Gothic,sans-serif}body{margin:0;background:linear-gradient(160deg,#d5e3ea 0%,var(--ff-bg) 40%,#cfdce4 100%);color:var(--ff-ink)}button,.ff-card{min-height:var(--ff-touch-min);min-width:var(--ff-touch-min)}.ff-btn:focus-visible,.ff-compare-card:focus-visible,.ff-surface-card-btn:focus-visible,.ff-mission-btn:focus-visible,.ff-card:focus-visible{outline:3px solid var(--ff-accent);outline-offset:3px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.ff-app{max-width:56rem;margin:0 auto;padding:1.5rem 1.25rem 3rem}.ff-eyebrow{margin:0 0 .35rem;color:var(--ff-accent);font-size:.85rem;letter-spacing:.04em}.ff-concept{font-size:1.15rem;line-height:1.5}.ff-note{color:var(--ff-muted);line-height:1.45}.ff-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.5rem}.ff-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--ff-border);background:var(--ff-surface);color:var(--ff-ink);padding:.55rem 1rem;border-radius:.35rem;cursor:pointer;font:inherit}.ff-btn:disabled{opacity:.55;cursor:not-allowed}.ff-btn-primary{background:var(--ff-accent);border-color:var(--ff-accent);color:#f4fbfb}.ff-feedback{margin-bottom:1rem;padding:.75rem 1rem;background:#f7e8d8;border:1px solid #c98a4a;border-radius:.35rem}.ff-hub-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem}.ff-mission-list{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}.ff-mission-btn{display:grid;gap:.25rem;width:100%;text-align:left;padding:.85rem 1rem;border:1px solid var(--ff-border);background:var(--ff-surface);border-radius:.4rem;cursor:pointer;font:inherit;color:inherit}.ff-mission-btn:disabled{opacity:.65;cursor:not-allowed}.ff-mission-id{color:var(--ff-accent);font-size:.85rem}.ff-mission-title{font-size:1.05rem}.ff-mission-status{color:var(--ff-muted);font-size:.9rem}.ff-mission-lock{color:var(--ff-muted);font-size:.85rem}.ff-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1a2b3373;display:grid;place-items:center;padding:1rem;z-index:20}.ff-modal{width:min(28rem,100%);background:var(--ff-surface);border:1px solid var(--ff-border);border-radius:.5rem;padding:1rem 1.25rem 1.25rem}.ff-modal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.ff-changelog-list{list-style:none;margin:1rem 0 0;padding:0;display:grid;gap:.75rem}.ff-changelog-list li{display:grid;gap:.2rem}.ff-changelog-list time{color:var(--ff-muted);font-size:.85rem}.ff-placeholder{display:grid;gap:.75rem}.ff-condition{display:grid;gap:1rem}.ff-condition-fixed{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}.ff-condition-fixed li{display:flex;flex-wrap:wrap;gap:.5rem 1rem;padding:.65rem .85rem;border:1px solid var(--ff-border);background:var(--ff-surface);border-radius:.35rem}.ff-condition-label{color:var(--ff-accent);min-width:3.5rem;font-size:.9rem}.ff-surface-grid{display:grid;gap:.75rem;grid-template-columns:repeat(auto-fill,minmax(10rem,1fr))}.ff-surface-card{display:grid;gap:.35rem;padding:.75rem;border:1px solid var(--ff-border);background:var(--ff-surface);border-radius:.4rem;text-align:left;color:inherit}.ff-surface-card-btn{cursor:pointer;font:inherit;width:100%}.ff-surface-card.is-selected{outline:2px solid var(--ff-accent);outline-offset:2px}.ff-surface-card-name{margin:0;font-size:1rem;font-weight:600}.ff-surface-card-desc{margin:0;color:var(--ff-muted);font-size:.9rem;line-height:1.35}.ff-surface-pattern{height:2.5rem;border-radius:.25rem;border:1px solid var(--ff-border)}.ff-surface-pattern--smooth-sheen{background:linear-gradient(120deg,#dfe8ee,#f7fafc 45%,#c9d6df)}.ff-surface-pattern--wood-grain{background:repeating-linear-gradient(90deg,#c4a574 0,#c4a574 3px,#a98455 3px,#a98455 6px,tan 6px,tan 10px)}.ff-surface-pattern--rubber-dots{background-color:#5a6b72;background-image:radial-gradient(#2f3b40 1.5px,transparent 1.6px);background-size:8px 8px}.ff-surface-pattern--fabric-weave{background:repeating-linear-gradient(45deg,#8b7355 0,#8b7355 4px,#6e5a42 4px,#6e5a42 8px),repeating-linear-gradient(-45deg,#9a8060 0,#9a8060 4px,#7a6548 4px,#7a6548 8px)}.ff-status-caption{margin:0;padding:0;border:none;background:none;color:var(--ff-muted);font-size:.95rem;line-height:1.4;pointer-events:none;-webkit-user-select:none;user-select:none}.ff-dir-fieldset{border:1px solid var(--ff-border);border-radius:.35rem;padding:.75rem 1rem 1rem;margin:0}.ff-dir-fieldset legend{padding:0 .35rem;color:var(--ff-ink)}.ff-dir-choices{display:flex;flex-wrap:wrap;gap:.75rem}.ff-btn.is-active{outline:3px solid var(--ff-accent);outline-offset:2px;background:#c5e8e8;border-color:var(--ff-accent);font-weight:700;box-shadow:inset 0 0 0 1px var(--ff-accent)}.ff-btn-choice{display:grid;gap:.2rem;text-align:left;min-width:6.5rem;flex:1 1 6.5rem}.ff-btn-choice-label{font-weight:700;font-size:1.05rem}.ff-btn-choice-hint{font-size:.8rem;color:var(--ff-muted);font-weight:400}.ff-btn-choice.is-active .ff-btn-choice-hint{color:#1a4a4a}.ff-step-bar{margin-bottom:1.1rem;padding:.65rem .75rem;border:1px solid var(--ff-border);border-radius:.4rem;background:var(--ff-surface)}.ff-step-list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}.ff-step{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .55rem;border-radius:.3rem;font-size:.9rem;color:var(--ff-muted)}.ff-step-num{display:inline-flex;align-items:center;justify-content:center;width:1.35rem;height:1.35rem;border-radius:50%;border:1px solid var(--ff-border);font-size:.75rem;font-weight:700}.ff-step--done{color:var(--ff-accent)}.ff-step--done .ff-step-num{background:#c5e8e8;border-color:var(--ff-accent);color:var(--ff-accent)}.ff-step--current{color:var(--ff-ink);background:#e6f3f3;font-weight:700}.ff-step--current .ff-step-num{background:var(--ff-accent);border-color:var(--ff-accent);color:#f4fbfb}.ff-direction-explain{display:grid;gap:.65rem;padding:.85rem 1rem;border:1px solid var(--ff-border);background:var(--ff-surface);border-radius:.35rem;line-height:1.45}.ff-direction-explain p{margin:0}.ff-lab-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.25rem;align-items:start}@media(max-width:48rem){.ff-lab-split,.ff-surface-grid{grid-template-columns:1fr}.ff-track,.ff-record{display:grid;grid-template-columns:1fr}}.ff-direction{display:grid;gap:1rem}.ff-direction-scene{padding:1rem;border:1px solid var(--ff-border);background:var(--ff-surface);border-radius:.4rem;display:grid;gap:.75rem}.ff-direction-track{position:relative;height:3.25rem;background:var(--ff-track);border-radius:.25rem;overflow:hidden}.ff-direction-object{position:absolute;top:50%;left:8%;transform:translateY(-50%);font-size:1.5rem;line-height:1;color:var(--ff-ink);animation:ff-slide-right 2.4s ease-in-out infinite alternate}.ff-direction-object.is-stopped{animation:none;left:72%}.ff-direction-caption{margin:0;color:var(--ff-muted);font-size:.95rem}.ff-direction-arrows{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center}.ff-arrow{padding:.35rem .65rem;border-radius:.25rem;font-size:.95rem;min-height:var(--ff-touch-min);display:inline-flex;align-items:center}.ff-arrow-motion{border:2px solid var(--ff-ink);background:#eef3f6}.ff-arrow-friction{border:2px dashed var(--ff-accent);background:#e6f3f3}@keyframes ff-slide-right{0%{left:8%}to{left:72%}}@media(prefers-reduced-motion:reduce){.ff-direction-object,.ff-direction-object.is-stopped{animation:none;left:72%}.ff-direction-track:before{content:"출발";position:absolute;left:8%;top:50%;transform:translateY(-50%);font-size:.75rem;color:var(--ff-muted)}}.ff-skip-link{position:fixed;top:.75rem;left:.75rem;z-index:30;transform:translateY(-180%);padding:.65rem .85rem;border-radius:.35rem;background:var(--ff-ink);color:#fff;text-decoration:none}.ff-skip-link:focus{transform:translateY(0)}main:focus{outline:none}.gi-pulse{position:relative;isolation:isolate;overflow:visible;animation:gi-pulse 2.2s ease-in-out infinite}.gi-pulse:after{content:"";position:absolute;top:-.3rem;right:-.3rem;bottom:-.3rem;left:-.3rem;z-index:-1;border:2px solid rgba(13,122,122,.55);border-radius:.55rem;pointer-events:none;animation:gi-pulse-aura 2.2s ease-in-out infinite}@keyframes gi-pulse{0%,to{box-shadow:0 0 #0d7a7a14}50%{box-shadow:0 0 0 .22rem #0d7a7a29}}@keyframes gi-pulse-aura{0%,to{opacity:.25;transform:scale(.96)}50%{opacity:.85;transform:scale(1.03)}}.ff-start{display:grid;gap:1.25rem;min-height:min(34rem,calc(100svh - 4rem));align-content:center}.ff-start-copy{display:grid;align-content:center;gap:.75rem}.ff-start-copy h1{margin:0;font-size:clamp(2rem,5vw,3.35rem);line-height:1.05;letter-spacing:-.04em}.ff-start-copy .ff-concept,.ff-start-copy .ff-note{margin:0}.ff-lab-visual{position:relative;display:grid;gap:1rem;align-content:center;min-height:18rem;padding:1.25rem;border:1px solid rgba(138,160,173,.8);border-radius:.8rem;background:linear-gradient(155deg,#ffffffd1,#e2edf2b8),repeating-linear-gradient(0deg,transparent 0 2.2rem,rgba(74,93,104,.08) 2.25rem);box-shadow:0 1rem 2.5rem #1a2b331f;overflow:hidden}.ff-lab-visual:before,.ff-lab-visual:after{content:"";position:absolute;border-radius:50%;pointer-events:none}.ff-lab-visual:before{width:12rem;height:12rem;top:-5rem;right:-3rem;background:#2a9d9d21}.ff-lab-visual:after{width:7rem;height:7rem;bottom:-3rem;left:-2rem;background:#c98a4a1f}.ff-lab-visual-meta,.ff-lab-legend{position:relative;z-index:1;display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem;color:var(--ff-muted);font-size:.75rem;letter-spacing:.08em}.ff-lab-surface{position:relative;z-index:1;height:2rem;border:1px solid #9b734e;border-radius:.35rem;background:repeating-linear-gradient(90deg,#c4a574 0,#c4a574 .25rem,#a98455 .25rem,#a98455 .5rem,tan .5rem,tan .85rem);box-shadow:inset 0 -.25rem #5c3d282e}.ff-lab-lane{position:relative;z-index:1;height:5.5rem;border:1px solid var(--ff-border);border-radius:.5rem;background:linear-gradient(180deg,#d8e4eb 0%,var(--ff-track) 55%,#b7c8d2 100%);overflow:hidden}.ff-lab-lane:after{content:"";position:absolute;inset:50% 7% auto;border-top:2px dashed rgba(74,93,104,.35)}.ff-lab-start-mark,.ff-lab-stop-mark{position:absolute;top:.55rem;color:var(--ff-muted);font-size:.7rem}.ff-lab-start-mark{left:7%}.ff-lab-stop-mark{right:7%}.ff-lab-block{position:absolute;top:50%;left:47%;z-index:2;width:2.35rem;height:1.7rem;transform:translate(-50%,-50%);border:2px solid #5c3d28;border-radius:.25rem;background:linear-gradient(145deg,#d4a574,#a67c52 55%,#8b5e3c);box-shadow:inset 0 1px #ffffff59,0 .25rem #1a2b3338}.ff-lab-legend{justify-content:flex-start;gap:1rem;letter-spacing:0}.ff-lab-legend span{display:inline-flex;align-items:center;gap:.35rem}.ff-lab-dot{width:.6rem;height:.6rem;border-radius:50%}.ff-lab-dot--motion{background:var(--ff-ink)}.ff-lab-dot--friction{background:var(--ff-accent)}.ff-record-input{width:min(8rem,100%);min-height:var(--ff-touch-min);box-sizing:border-box;padding:.5rem .6rem;border:1px solid var(--ff-border);border-radius:.3rem;background:#fff;color:var(--ff-ink);font:inherit}.ff-record-input:focus-visible{outline:3px solid var(--ff-accent);outline-offset:2px}.ff-prediction-feedback{margin:0;padding:.7rem .85rem;border-left:4px solid var(--ff-accent);background:#e6f3f3;line-height:1.45}.ff-prediction-feedback.is-different{border-left-color:#c98a4a;background:#f7e8d8}@media(max-width:48rem){.ff-start{min-height:auto}.ff-lab-visual{min-height:15rem}}@media(prefers-reduced-motion:reduce){.gi-pulse,.gi-pulse:after{animation:none}.gi-pulse:after{opacity:.45;transform:none}}.ff-predict{display:grid;gap:1rem}.ff-predict-list{list-style:none;margin:0;padding:0;display:grid;gap:1rem}.ff-predict-item{display:grid;gap:.65rem;padding:.85rem 1rem;border:1px solid var(--ff-border);background:var(--ff-surface);border-radius:.4rem}.ff-predict-surface{margin:0;font-size:1.1rem}.ff-track{display:grid;gap:1rem}.ff-track-pending{color:var(--ff-muted);font-size:.95rem}.ff-track-surface-wrap{position:relative}.ff-track-done-badge{position:absolute;top:.4rem;right:.4rem;font-size:.75rem;color:var(--ff-accent);background:#e6f3f3;border:1px solid var(--ff-accent);border-radius:.25rem;padding:.15rem .4rem}.ff-test-stage{display:grid;gap:.75rem;padding:1rem;border:1px solid var(--ff-border);background:var(--ff-surface);border-radius:.4rem}.ff-test-bed{height:2.75rem;border-radius:.25rem;box-shadow:inset 0 -2px #1a2b331f}.ff-test-lane{position:relative;height:4.25rem;background:linear-gradient(180deg,#d8e4eb 0%,var(--ff-track) 55%,#b7c8d2 100%);border-radius:.35rem;overflow:hidden;border:1px solid var(--ff-border)}.ff-zone-ruler{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(5,1fr);pointer-events:none}.ff-zone-tick{display:flex;align-items:flex-end;justify-content:center;padding-bottom:.2rem;font-size:.7rem;font-weight:700;color:var(--ff-muted);border-right:1px dashed rgba(74,93,104,.35)}.ff-zone-tick:last-child{border-right:none}.ff-test-object{position:absolute;top:42%;left:8%;transform:translate(-50%,-50%);line-height:1;z-index:2;transition:left .05s linear}.ff-test-block{display:block;width:1.85rem;height:1.35rem;border-radius:.2rem;background:linear-gradient(145deg,#d4a574,#a67c52 55%,#8b5e3c);border:2px solid #5c3d28;box-shadow:inset 0 1px #ffffff59,0 2px #1a2b3340}.ff-test-stage.is-running .ff-test-object{animation:ff-trial-slide 1.5s ease-out forwards}.ff-test-result{display:grid;gap:.55rem;line-height:1.4}.ff-test-result p{margin:0}.ff-result-bar{height:.65rem;border-radius:999px;background:#d5e0e6;overflow:hidden;border:1px solid var(--ff-border)}.ff-result-bar-fill{height:100%;background:linear-gradient(90deg,#0d7a7a,#2a9d9d);border-radius:inherit;min-width:.25rem}.ff-result-bars{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}.ff-result-bars li{display:grid;grid-template-columns:minmax(5rem,7.5rem) 1fr auto;gap:.45rem;align-items:center;font-size:.85rem}.ff-result-bars-label{color:var(--ff-muted)}.ff-result-bars-cm{font-weight:700;min-width:2.75rem;text-align:right}.ff-predict-bands{display:grid;grid-template-columns:repeat(auto-fit,minmax(6.5rem,1fr));gap:.65rem}.ff-track-status{margin:0;color:var(--ff-muted)}.ff-track-workspace{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(16rem,.65fr);gap:1rem;align-items:start}.ff-inline-record{position:sticky;top:1rem;display:grid;gap:.8rem;padding:1rem;border:2px solid var(--ff-accent);border-radius:.5rem;background:#edf8f7;box-shadow:0 .5rem 1.25rem #1a2b331a}.ff-inline-record.is-complete{border-color:#4b9b80;background:#f0f8f3}.ff-inline-record-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.ff-inline-record-heading h2{margin:0;font-size:1.25rem;line-height:1.2}.ff-inline-record-heading .ff-eyebrow{margin-bottom:.25rem}.ff-inline-record-check{display:inline-flex;align-items:center;justify-content:center;min-width:2.25rem;min-height:2.25rem;padding:0 .45rem;border:1px solid var(--ff-accent);border-radius:999px;color:var(--ff-accent);font-size:.75rem;font-weight:700;white-space:nowrap}.ff-inline-record.is-complete .ff-inline-record-check{background:#d8f0e2;border-color:#4b9b80;color:#286b53}.ff-inline-record-condition{margin:0;font-weight:700;line-height:1.35}.ff-inline-record .ff-note{margin:0;font-size:.9rem}.ff-inline-record-fields{display:grid;grid-template-columns:minmax(0,1fr) minmax(6.5rem,8rem);gap:.45rem .65rem;align-items:center}.ff-inline-record-fields label{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;color:var(--ff-ink);font-weight:600}.ff-inline-record-unit{color:var(--ff-muted);font-size:.8rem;font-weight:400}.ff-inline-record-fields .ff-record-input{width:100%}.ff-inline-record-status{margin:0;color:var(--ff-muted);font-size:.86rem;line-height:1.4}.ff-inline-record>.ff-btn{width:100%}@keyframes ff-trial-slide{0%{left:8%}to{left:var(--ff-trial-end, 70%)}}@media(prefers-reduced-motion:reduce){.ff-test-stage.is-running .ff-test-object{animation:none;left:8%}.ff-test-stage.is-running .ff-test-lane:before{content:"출발";position:absolute;left:8%;top:50%;transform:translateY(-50%);font-size:.75rem;color:var(--ff-muted);z-index:1}.ff-test-stage.is-stopped .ff-test-lane:after{content:"도착";position:absolute;right:8%;top:50%;transform:translateY(-50%);font-size:.75rem;color:var(--ff-muted)}}@media(max-width:48rem){.ff-track-workspace{grid-template-columns:1fr}.ff-inline-record{position:static}}.ff-record{display:grid;gap:1rem}.ff-table-wrap{overflow-x:auto}.ff-obs-table{width:100%;border-collapse:collapse;background:var(--ff-surface)}.ff-obs-table th,.ff-obs-table td{border:1px solid var(--ff-border);padding:.55rem .75rem;text-align:left}.ff-obs-table th{background:#dfe8ee;font-weight:600}.ff-visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.ff-compare{display:grid;gap:.75rem}.ff-compare-title{margin:0;font-size:1.1rem}.ff-compare-list{list-style:none;margin:0;padding:0;display:grid;gap:.65rem}.ff-compare-card{width:100%;text-align:left;padding:.85rem 1rem;border:1px solid var(--ff-border);background:var(--ff-surface);border-radius:.4rem;cursor:pointer;font:inherit;color:inherit;line-height:1.4}.ff-compare-card.is-active{outline:2px solid var(--ff-accent);outline-offset:2px;background:#e6f3f3}.ff-classify-list{list-style:none;margin:0;padding:0;display:grid;gap:.85rem}.ff-classify-card{display:grid;gap:.55rem;padding:.85rem 1rem;border:1px solid var(--ff-border);background:var(--ff-surface);border-radius:.4rem}.ff-classify-label{margin:0;font-size:1rem}.ff-critique-card-title{display:block;margin-bottom:.35rem}.ff-critique-card-summary{display:block;font-weight:400;opacity:.92}.ff-report-blank{display:grid;gap:.65rem}.ff-report-chip-row{display:grid;gap:.4rem}.ff-report-preview{display:grid;gap:.5rem;padding:.9rem 1rem;border:1px solid var(--ff-border);background:var(--ff-surface);border-radius:.4rem}.ff-report-text{margin:0;white-space:pre-wrap;font:inherit;line-height:1.5}
