:root{--background: #f2ede2;--card: #fbf8f1;--foreground: #212a23;--muted: #e9e2d2;--muted-foreground: #70685a;--border: #ddd4c0;--chart-1: #16815a;--chart-2: #d9822b;--chart-3: #4a6fa5;--accent-soft: #dcead9;--warning-bg: #faf0dc;--warning-fg: #8a5a12;--danger: #bb3e2a;--danger-bg: #f8e6e0;--radius: 12px;--spacing: 8px;--font-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-size-base: 16px;--form-col-width: 400px;--bp-tablet: 768px;--bp-desktop: 1120px}.app-shell{position:relative;min-height:100vh;max-width:1360px;margin:0 auto;padding:clamp(16px,3vw,40px);overflow-x:clip}.app-shell:before{content:"";position:absolute;top:-14vw;right:-18vw;width:46vw;height:46vw;min-width:320px;min-height:320px;border-radius:50%;background:radial-gradient(circle,rgba(22,129,90,.14) 0%,rgba(22,129,90,.05) 68%,transparent 72%);pointer-events:none;z-index:0}.app-header,.app-layout,.app-footer{position:relative;z-index:1}.app-header{padding:clamp(8px,2vw,24px) 0 clamp(24px,4vw,48px);max-width:720px}.brand-row{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap}.brand{margin:0;font-size:13px;letter-spacing:.14em;font-weight:600;color:var(--chart-1)}.rule-banner{margin:0;font-size:12px;color:var(--muted-foreground)}.app-header h1{margin:18px 0 14px;font-size:clamp(28px,4.5vw,44px);line-height:1.16;font-weight:500;letter-spacing:-.03em}.app-intro{margin:0;color:var(--muted-foreground);font-size:15px;max-width:56ch}.app-intro strong{color:var(--foreground);font-weight:500}.app-layout{display:grid;grid-template-columns:1fr;gap:clamp(20px,3vw,40px);align-items:start}.form-pane,.result-pane{min-width:0}@media (min-width: 768px){.app-layout{max-width:44rem;margin:0 auto}}@media (min-width: 1120px){.app-layout{max-width:none;margin:0;grid-template-columns:400px minmax(0,1fr)}.form-pane{position:sticky;top:24px;max-height:calc(100vh - 48px);overflow-y:auto;padding-right:4px;scrollbar-width:thin}}.app-footer{margin-top:48px;padding-top:20px;border-top:1px solid var(--border);color:var(--muted-foreground);font-size:12px}.planner-form{display:flex;flex-direction:column;gap:16px}.form-section{margin:0;padding:20px;border:1px solid var(--border);border-radius:calc(var(--radius) * 1.2);background:var(--card);display:flex;flex-direction:column;gap:16px}.form-section legend{padding:0 8px;margin-left:-8px;font-size:13px;font-weight:600;letter-spacing:.08em;color:var(--chart-1)}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:14px;font-weight:500}.field-hint{margin:0;font-size:12px;color:var(--muted-foreground);line-height:1.5}.field-error-text{margin:0;font-size:12px;color:var(--danger)}.field-error input,.field-error select{border-color:var(--danger)}input[type=text],select{width:100%;padding:11px 12px;border:1px solid var(--border);border-radius:10px;background:#fff;font-size:16px;transition:border-color .15s}input[type=text]:focus,select:focus{border-color:var(--chart-1);outline:none}.money-input{position:relative;display:flex;align-items:center}.money-input input{padding-right:64px;font-variant-numeric:tabular-nums}.money-unit{position:absolute;right:12px;font-size:13px;color:var(--muted-foreground);pointer-events:none}.age-ym{display:flex;align-items:center;gap:8px}.age-ym input{width:76px;text-align:center;font-variant-numeric:tabular-nums}.age-ym span{font-size:14px;color:var(--muted-foreground)}.segmented{display:flex;flex-wrap:wrap;gap:6px}.segmented-item{flex:1 0 auto;min-height:44px;padding:8px 14px;border:1px solid var(--border);border-radius:999px;background:#fff;cursor:pointer;font-size:14px;transition:all .15s}.segmented-item:hover{border-color:var(--chart-1)}.segmented-item.active{background:var(--chart-1);border-color:var(--chart-1);color:#fff;font-weight:500}.stepper{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--border);border-radius:999px;background:#fff;padding:3px}.stepper-btn{width:44px;height:44px;border:none;border-radius:50%;background:var(--muted);font-size:20px;line-height:1;cursor:pointer;transition:background .15s}.stepper-btn:hover:not(:disabled){background:var(--accent-soft);color:var(--chart-1)}.stepper-btn:disabled{opacity:.35;cursor:not-allowed}.stepper-value{min-width:72px;text-align:center;font-size:15px;font-variant-numeric:tabular-nums}.check-line{display:flex;align-items:flex-start;gap:10px;font-size:14px;line-height:1.6;cursor:pointer;min-height:44px}.check-line input{margin-top:3px;width:18px;height:18px;accent-color:var(--chart-1);flex-shrink:0}.scope-details summary{cursor:pointer;font-size:13px;color:var(--muted-foreground);list-style:none}.scope-details summary:before{content:"▸ ";color:var(--chart-1)}.scope-details[open] summary:before{content:"▾ "}.scope-details summary::-webkit-details-marker{display:none}.scope-details[open]{padding:8px 0 4px}.region-status{display:flex;flex-direction:column;gap:8px}.region-badge{margin:0;display:inline-block;padding:6px 12px;border-radius:999px;font-size:12px;line-height:1.5}.region-badge.verified{background:var(--accent-soft);color:var(--chart-1)}.region-badge.pending{background:var(--warning-bg);color:var(--warning-fg)}.region-badge.missing{background:var(--warning-bg);color:var(--warning-fg);border-radius:12px}.region-badge.blocked{background:var(--danger-bg);color:var(--danger);border-radius:12px}.region-meta{margin:0;font-size:12px;color:var(--muted-foreground)}.region-fallback{padding:12px;border:1px dashed var(--border);border-radius:12px;display:flex;flex-direction:column;gap:10px}.assumptions{border:1px solid var(--border);border-radius:calc(var(--radius) * 1.2);background:var(--card)}.assumptions summary{display:flex;flex-direction:column;gap:4px;padding:16px 20px;cursor:pointer;list-style:none}.assumptions summary::-webkit-details-marker{display:none}.assumptions summary>span:first-child{font-size:13px;font-weight:600;letter-spacing:.08em;color:var(--chart-1)}.assumptions summary>span:first-child:after{content:" ▾";color:var(--muted-foreground)}.assumptions[open] summary>span:first-child:after{content:" ▴"}.assumptions-summary{font-size:12px;color:var(--muted-foreground)}.assumptions-body{padding:16px 20px 20px;display:flex;flex-direction:column;gap:16px;border-top:1px solid var(--border)}.form-error-summary{padding:12px 16px;border-radius:12px;background:var(--danger-bg);color:var(--danger);font-size:14px}.form-actions{display:flex;flex-direction:column;gap:8px}.submit-btn{min-height:52px;border:none;border-radius:999px;background:var(--chart-1);color:#fff;font-size:17px;font-weight:500;letter-spacing:.04em;cursor:pointer;transition:transform .1s,box-shadow .15s;box-shadow:0 6px 18px #16815a40}.submit-btn:hover{transform:translateY(-1px);box-shadow:0 8px 22px #16815a4d}.privacy-note{margin:0;text-align:center;font-size:12px;color:var(--muted-foreground)}@media (max-width: 767px){.form-actions{position:sticky;bottom:0;padding:12px 0 max(12px,env(safe-area-inset-bottom));background:linear-gradient(transparent,var(--background) 30%);z-index:5}.app-header{padding-bottom:20px}.app-header h1{font-size:25px;margin:14px 0 10px}.app-intro{font-size:13.5px}.brand{font-size:12px}.rule-banner{font-size:11px}.result-head h2{font-size:18px}.key-card{padding:16px}.key-card-number{font-size:25px}.breakdown-row{flex-direction:column;align-items:flex-start;gap:4px;padding:12px 14px}.breakdown-row dd{font-size:16px}.narrative{font-size:13px;padding:12px 14px}.chart-block{padding:14px 10px}.chart-block figcaption{padding:0 4px}.chart-canvas{height:clamp(240px,60vw,320px)}.assumption-row dt{min-width:0;width:100%;font-weight:500}.milestones li{padding-bottom:12px}.chart-tabs{position:sticky;top:0;z-index:4;background:var(--background);padding:8px 0 6px;margin:-8px 0 0}}.save-toggle{display:flex;gap:8px;align-items:flex-start;margin-top:12px;font-size:12px;color:var(--muted-foreground);cursor:pointer}.save-toggle input{margin-top:1px;accent-color:var(--chart-1)}.text-btn{align-self:flex-start;margin-top:8px;border:none;background:none;padding:4px 0;font-size:12px;color:var(--muted-foreground);text-decoration:underline;cursor:pointer}.text-btn:hover{color:var(--danger)}.empty-state{min-height:320px;border:1px dashed var(--border);border-radius:calc(var(--radius) * 1.4);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:32px;text-align:center;color:var(--muted-foreground);font-size:14px}.empty-state p{margin:0;max-width:40ch}.empty-circle{width:72px;height:72px;border-radius:50%;background:var(--accent-soft);margin-bottom:12px;position:relative}.empty-circle:after{content:"¥";position:absolute;inset:0;display:grid;place-items:center;font-size:28px;color:var(--chart-1)}.result-view{display:flex;flex-direction:column;gap:clamp(20px,3vw,32px)}.result-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.result-head h2{font-size:20px}.result-head-actions{display:flex;align-items:center;gap:8px}.back-edit-btn{display:none;min-height:44px;padding:8px 16px;border:1px solid var(--border);border-radius:999px;background:var(--card);color:var(--muted-foreground);font-size:14px;cursor:pointer}@media (max-width: 1119px){.back-edit-btn{display:inline-block}}.share-btn{min-height:44px;padding:8px 20px;border:1.5px solid var(--chart-1);border-radius:999px;background:transparent;color:var(--chart-1);font-size:14px;font-weight:500;cursor:pointer;transition:all .15s}.share-btn:hover{background:var(--chart-1);color:#fff}.warning-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}.warning-item{display:flex;gap:8px;padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.55}.warning-item.blocker{background:var(--danger-bg);color:var(--danger)}.warning-item.warning{background:var(--warning-bg);color:var(--warning-fg)}.warning-item.info{background:var(--muted);color:var(--muted-foreground)}.warning-mark{flex-shrink:0}.key-cards{display:grid;grid-template-columns:1fr;gap:12px}@media (min-width: 640px){.key-cards{grid-template-columns:repeat(2,1fr)}.key-card-primary{grid-column:1 / -1}}@media (min-width: 1400px){.key-cards{grid-template-columns:repeat(3,1fr)}.key-card-primary{grid-column:auto}}.key-card{padding:20px;border:1px solid var(--border);border-radius:calc(var(--radius) * 1.3);background:var(--card);display:flex;flex-direction:column;gap:8px}.key-card-primary{background:linear-gradient(145deg,var(--card) 55%,var(--accent-soft));border-color:#16815a59}.key-card-eyebrow{margin:0;font-size:12px;letter-spacing:.08em;color:var(--chart-1);font-weight:600}.key-card-number{margin:0;font-size:clamp(26px,3.4vw,34px);font-weight:500;letter-spacing:-.04em;line-height:1.05;font-variant-numeric:tabular-nums}.key-card-number small{font-size:13px;font-weight:400;letter-spacing:0;color:var(--muted-foreground)}.key-card-partial{font-size:22px;color:var(--warning-fg)}.key-card-sub{margin:0;font-size:13px;color:var(--muted-foreground);line-height:1.55}.narrative{margin:0;padding:16px 20px;border-left:3px solid var(--chart-1);background:var(--card);border-radius:0 12px 12px 0;font-size:14px;line-height:1.7}.breakdown h3,.milestones h3,.scenarios h3,.assumption-summary h3,.method-sources h3,.chart-block h3{font-size:16px;margin-bottom:12px}.breakdown dl{margin:0;border:1px solid var(--border);border-radius:calc(var(--radius) * 1.2);background:var(--card);overflow:hidden}.breakdown-row{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:13px 18px}.breakdown-row+.breakdown-row{border-top:1px solid var(--border)}.breakdown-row dt{font-size:13px;color:var(--muted-foreground);display:flex;flex-direction:column;gap:4px}.breakdown-note{font-size:12px;opacity:.8;max-width:46ch}.breakdown-row dd{margin:0;font-size:15px;font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap}.charts{display:flex;flex-direction:column;gap:24px}.chart-tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px}.chart-tab{flex-shrink:0;min-height:44px;padding:8px 16px;border:1px solid var(--border);border-radius:999px;background:#fff;font-size:13px;cursor:pointer}.chart-tab.active{background:var(--foreground);border-color:var(--foreground);color:var(--card)}.chart-block{margin:0;padding:18px;border:1px solid var(--border);border-radius:calc(var(--radius) * 1.3);background:var(--card)}.chart-summary{margin:4px 0 8px;font-size:13px;color:var(--muted-foreground);line-height:1.6}.chart-canvas{width:100%;height:clamp(260px,38vh,380px)}.chart-table summary{margin-top:10px;font-size:13px;color:var(--chart-1);cursor:pointer}.table-scroll{overflow-x:auto;margin-top:10px}.data-table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}.data-table th,.data-table td{padding:7px 10px;text-align:right;border-bottom:1px solid var(--border);white-space:nowrap}.data-table thead th{font-weight:500;color:var(--muted-foreground);border-bottom:2px solid var(--border)}.data-table th[scope=row]{text-align:left;font-weight:400}.scenario-base{background:var(--accent-soft)}.milestones ol{margin:0;padding:0;list-style:none;border-left:2px solid var(--accent-soft)}.milestones li{position:relative;padding:0 0 16px 22px}.milestones li:last-child{padding-bottom:0}.milestones li:before{content:"";position:absolute;left:-6px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--chart-1)}.milestone-age{display:block;font-size:13px;font-weight:600;color:var(--chart-1);font-variant-numeric:tabular-nums}.milestone-label{font-size:14px}.section-note{margin:0 0 10px;font-size:12px;color:var(--muted-foreground)}.assumption-summary dl{margin:0;display:grid;gap:10px}.assumption-row{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:13px}.assumption-row dt{min-width:180px;color:var(--muted-foreground)}.assumption-row dd{margin:0;display:flex;flex-direction:column;gap:2px}.assumption-note{font-size:12px;color:var(--muted-foreground)}.method-sources{padding-top:18px;border-top:1px solid var(--border)}.rule-versions{font-size:12px;color:var(--muted-foreground);margin:0 0 10px}.source-list{margin:0 0 14px;padding-left:18px;font-size:12px;line-height:1.9}.disclaimer{margin:0;padding:12px 16px;background:var(--muted);border-radius:12px;font-size:12px;line-height:1.7;color:var(--muted-foreground)}.share-dialog-backdrop{position:fixed;inset:0;z-index:50;background:#212a238c;display:grid;place-items:center;padding:16px}.share-dialog{width:min(880px,100%);max-height:calc(100vh - 32px);overflow-y:auto;background:var(--background);border-radius:calc(var(--radius) * 1.5);padding:20px;display:flex;flex-direction:column;gap:16px}@media (max-width: 767px){.share-dialog-backdrop{padding:0}.share-dialog{width:100%;height:100%;max-height:none;border-radius:0}}.share-dialog-head{display:flex;align-items:center;justify-content:space-between}.share-dialog-head h2{font-size:18px}.share-close{width:44px;height:44px;border:1px solid var(--border);border-radius:50%;background:var(--card);cursor:pointer;font-size:16px}.share-template-picker{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px}.share-preview{align-self:center;width:min(420px,100%);border-radius:16px;overflow:hidden;box-shadow:0 18px 48px #212a232e;border:1px solid var(--border)}.share-preview svg,.share-preview img{display:block;width:100%;height:auto}.share-generating{aspect-ratio:3 / 4;display:grid;place-items:center;color:var(--muted-foreground);font-size:14px;background:var(--card)}.share-svg-source{position:absolute;width:0;height:0;overflow:hidden}.share-save-hint{margin:0;font-size:16px;font-weight:500;color:var(--chart-1)}.share-actions{display:flex;flex-direction:column;gap:8px;align-items:center}.share-actions .submit-btn{width:min(420px,100%)}*,*:before,*:after{box-sizing:border-box}html{font-size:var(--font-size-base)}body{margin:0;background:var(--background);color:var(--foreground);font-family:var(--font-sans);line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-weight:500;letter-spacing:-.02em;margin:0}button,input,select{font:inherit;color:inherit}a{color:var(--chart-1)}:focus-visible{outline:2px solid var(--chart-1);outline-offset:2px}.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}
