@charset "UTF-8";

#ls-app-wrapper {
    max-width: 720px;
    margin: 30px auto;
    font-family: 'Noto Sans JP', -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif;
    color: #2c3e50;
}
#ls-app-wrapper * { box-sizing: border-box; }

#ls-app-container {
    background: #ffffff;
    border: 1px solid #e3e8ec;
    border-radius: 8px;
    padding: 0;
    overflow: hidden;
}

/* Header */
.ls-header {
    background: #fafbfc;
    color: #2c3e50;
    padding: 18px 24px;
    border-bottom: 1px solid #e3e8ec;
}
.ls-header-title {
    font-size: 1.05rem;
    font-weight: 700;
    letter-spacing: 0.02em;
}

/* Section & Headings */
.ls-section {
    padding: 24px;
    border-bottom: 1px solid #eef1f4;
}
.ls-section:last-of-type {
    border-bottom: none;
}
.ls-sec-head {
    display: flex;
    align-items: baseline;
    margin-bottom: 16px;
    gap: 10px;
}

.ls-step-badge {
    color: #7a8794;
    font-size: 0.75rem;
    font-weight: 500;
    letter-spacing: 0.05em;
}
.ls-sec-title {
    font-size: 1rem;
    font-weight: 700;
    color: #2c3e50;
}

/* Current Fee Input */
.ls-section-current { background: #ffffff; }
.ls-input-wrapper { display: flex; align-items: center; gap: 10px; }
.ls-input-number {
    width: 100%;
    max-width: 200px;
    padding: 10px 12px;
    font-size: 1.05rem;
    border: 1px solid #d4dae0;
    border-radius: 4px;
    text-align: right;
    background: #fff;
    color: #2c3e50;
    transition: border-color 0.15s;
}
.ls-input-number:focus {
    border-color: #26c158;
    outline: none;
}
.ls-input-unit {
    font-size: 0.9rem;
    color: #4a5560;
}
.ls-note {
    font-size: 0.8rem;
    color: #7a8794;
    margin: 8px 0 0 0;
}

/* Radio & Option Cards */
.ls-radio-group {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 10px;
}
.ls-col-3 { grid-template-columns: repeat(3, 1fr); }
.ls-col-2 { grid-template-columns: repeat(2, 1fr); }

.ls-radio-card,
.ls-option-card {
    cursor: pointer;
    position: relative;
    display: block;
    margin: 0;
}
.ls-radio-card input,
.ls-option-card input { display: none; }

.ls-card-content {
    border: 1px solid #d4dae0;
    border-radius: 4px;
    padding: 12px 10px;
    text-align: center;
    height: 100%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    transition: border-color 0.15s, background-color 0.15s;
    font-size: 0.9rem;
    background: #fff;
    min-height: 60px;
    color: #2c3e50;
    line-height: 1.45;
}
.ls-card-content small {
    color: #7a8794;
    font-size: 0.8rem;
    display: block;
    margin-top: 3px;
}

.ls-radio-card input:checked + .ls-card-content,
.ls-option-card input:checked + .ls-card-content {
    border-color: #26c158;
    background: #f3fbf5;
    color: #1f7f3d;
}
.ls-radio-card input:checked + .ls-card-content small,
.ls-option-card input:checked + .ls-card-content small {
    color: #4a8f60;
}

.ls-opt-title {
    font-weight: 500;
    display: block;
    margin-bottom: 3px;
    line-height: 1.4;
    font-size: 0.9rem;
}
.ls-opt-price {
    font-size: 0.8rem;
    color: #7a8794;
}
.ls-option-card input:checked + .ls-card-content .ls-opt-price {
    color: #4a8f60;
}
.ls-option-card input:checked + .ls-card-content::after {
    content: "";
    position: absolute;
    right: 8px;
    top: 8px;
    width: 14px;
    height: 14px;
    background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14' fill='none' stroke='%2326c158' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='3 7.5 6 10.5 11 4'/></svg>") no-repeat center / contain;
}

.ls-text-xs {
    font-size: 0.7rem;
    line-height: 1.3;
    display: block;
    margin-top: 2px;
}

/* Plan Cards */
.ls-plan-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.ls-plan-card {
    cursor: pointer;
    position: relative;
    display: block;
    margin: 0;
}
.ls-plan-card input { display: none; }
.ls-plan-inner {
    border: 1px solid #d4dae0;
    border-radius: 4px;
    padding: 14px 18px;
    background: #fff;
    display: flex;
    align-items: center;
    justify-content: space-between;
    transition: border-color 0.15s, background-color 0.15s;
}
.ls-plan-info {
    display: flex;
    flex-direction: column;
    gap: 4px;
    align-items: flex-start;
}
.ls-plan-name {
    font-weight: 700;
    font-size: 0.98rem;
    color: #2c3e50;
}
.ls-plan-desc-text {
    font-size: 0.8rem;
    color: #7a8794;
}
.ls-plan-badge {
    font-size: 0.72rem;
    padding: 2px 8px;
    border-radius: 3px;
    color: #4a5560;
    display: inline-block;
    font-weight: 500;
    background: #eef1f4;
    border: 1px solid #d4dae0;
}
.bg-green,
.bg-yellow,
.bg-orange {
    background: #eef1f4;
    color: #4a5560;
}

.ls-plan-price-simple {
    font-size: 1.3rem;
    font-weight: 700;
    color: #2c3e50;
    line-height: 1;
}
.ls-plan-price-simple small {
    font-size: 0.8rem;
    font-weight: 500;
    color: #7a8794;
    margin: 0 2px;
}
.ls-tilde {
    font-size: 0.85rem;
    color: #7a8794;
    margin-left: 2px;
}

.ls-plan-card input:checked + .ls-plan-inner {
    border-color: #26c158;
    background: #f3fbf5;
}

/* Sub Section (Usage Selector) */
.ls-sub-section {
    margin-top: 14px;
    padding: 14px 16px;
    background: #fafbfc;
    border-radius: 4px;
    border: 1px solid #eef1f4;
}
.ls-sub-title {
    font-weight: 700;
    font-size: 0.88rem;
    margin-bottom: 4px;
    color: #2c3e50;
}
.ls-usage-note {
    font-size: 0.75rem;
    color: #7a8794;
    margin: 0 0 10px 0;
}

.ls-usage-group {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
}
.ls-usage-card {
    cursor: pointer;
    position: relative;
}
.ls-usage-card input { display: none; }
.ls-usage-inner {
    background: #fff;
    border: 1px solid #d4dae0;
    border-radius: 4px;
    padding: 10px;
    text-align: center;
    transition: border-color 0.15s, background-color 0.15s;
}
.ls-usage-vol {
    display: block;
    font-weight: 500;
    color: #2c3e50;
    margin-bottom: 2px;
    font-size: 0.88rem;
}
.ls-usage-price {
    display: block;
    font-size: 0.75rem;
    color: #7a8794;
}

.ls-usage-card input:checked + .ls-usage-inner {
    border-color: #26c158;
    background: #f3fbf5;
}
.ls-usage-card input:checked + .ls-usage-inner .ls-usage-vol,
.ls-usage-card input:checked + .ls-usage-inner .ls-usage-price {
    color: #1f7f3d;
}

/* Results (独立カード) */
#ls-result-container {
    background: #ffffff;
    color: #2c3e50;
    padding: 22px 24px;
    margin-top: 16px;
    border: 1px solid #d4dae0;
    border-radius: 6px;
}
.ls-result-header {
    font-weight: 700;
    font-size: 1rem;
    margin-bottom: 18px;
    color: #2c3e50;
    padding-bottom: 12px;
    border-bottom: 1px solid #e3e8ec;
    letter-spacing: 0.02em;
}

/* Savings Box */
.ls-savings-box {
    background: #fafbfc;
    border: 1px solid #e3e8ec;
    border-radius: 4px;
    padding: 14px 18px;
    margin-bottom: 18px;
}
.ls-savings-title {
    font-weight: 700;
    font-size: 0.9rem;
    color: #2c3e50;
    margin-bottom: 10px;
    padding-bottom: 8px;
    border-bottom: 1px solid #e3e8ec;
}
.ls-savings-table {
    width: 100%;
    border-collapse: collapse;
}
.ls-savings-table th,
.ls-savings-table td {
    padding: 6px 8px;
    vertical-align: middle;
}
.ls-savings-table thead th {
    text-align: left;
}
.ls-savings-table tbody th {
    text-align: left;
    width: 55%;
}
.ls-savings-table tbody td {
    text-align: left;
    font-variant-numeric: tabular-nums;
}
.ls-savings-note {
    font-size: 0.72rem;
    color: #7a8794;
    margin: 10px 0 0 0;
}

/* Savings Summary (シミュレーション結果見出し直下) */
.ls-savings-summary {
    margin: 0 0 18px 0;
    padding: 14px 18px;
    background: #fafbfc;
    border: 1px solid #e3e8ec;
    border-radius: 4px;
    font-size: 0.95rem;
    line-height: 1.55;
    color: #2c3e50;
}
.ls-savings-summary strong {
    font-size: 1.25rem;
    font-weight: 700;
    color: #2c3e50;
    margin: 0 2px;
    font-variant-numeric: tabular-nums;
}
.ls-savings-summary-sub {
    display: inline-block;
    margin-top: 4px;
    font-size: 0.82rem;
    color: #4a5560;
}
.ls-savings-summary-sub span {
    font-weight: 700;
    color: #2c3e50;
}

/* Selected Options Box */
.ls-selected-box {
    background: #fafbfc;
    border: 1px solid #e3e8ec;
    border-radius: 4px;
    padding: 14px 18px;
    margin-bottom: 18px;
}
.ls-selected-title {
    font-weight: 700;
    font-size: 0.9rem;
    color: #2c3e50;
    margin-bottom: 10px;
    padding-bottom: 8px;
    border-bottom: 1px solid #e3e8ec;
}
.ls-selected-table {
    width: 100%;
    border-collapse: collapse;
}
.ls-selected-table th,
.ls-selected-table td {
    padding: 6px 8px;
    vertical-align: middle;
}
.ls-selected-table tbody th {
    text-align: left;
    width: 55%;
    font-weight: 500;
}
.ls-selected-table tbody td {
    text-align: left;
}

.ls-result-plan-display {
    font-weight: 700;
    font-size: 0.95rem;
    color: #2c3e50;
    margin-bottom: 14px;
    padding-bottom: 10px;
    border-bottom: 1px solid #eef1f4;
}
.ls-result-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 10px;
    padding-bottom: 8px;
}
.ls-row-secondary {
    color: #4a5560;
    margin-bottom: 4px;
    padding-bottom: 0;
}
.ls-row-fee {
    margin-top: 10px;
    border-top: 1px solid #eef1f4;
    padding-top: 12px;
}
.ls-result-label {
    font-size: 0.88rem;
    color: #4a5560;
}
.ls-badge-promo {
    background: transparent;
    color: #7a8794;
    padding: 0;
    border-radius: 0;
    font-size: 0.75rem;
    margin-left: 0;
    font-weight: 500;
    display: block;
    margin-top: 2px;
}
.ls-result-price {
    font-size: 1.6rem;
    font-weight: 700;
    color: #2c3e50;
    line-height: 1;
    letter-spacing: -0.01em;
}
.ls-result-price-sm {
    font-size: 1.1rem;
    font-weight: 700;
    color: #4a5560;
}
.ls-unit {
    font-size: 0.85rem;
    margin-left: 3px;
    font-weight: 500;
    color: #7a8794;
}

/* Campaign */
.ls-campaign-box {
    background: #fff;
    color: #2c3e50;
    border-radius: 4px;
    padding: 14px 18px;
    margin-top: 18px;
    border: 1px solid #e3e8ec;
}
.ls-campaign-title {
    font-weight: 700;
    color: #2c3e50;
    margin-bottom: 8px;
    font-size: 0.88rem;
    padding-bottom: 8px;
    border-bottom: 1px solid #eef1f4;
}
#ls-campaign-list {
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: 0.85rem;
    line-height: 1.6;
    color: #4a5560;
}
#ls-campaign-list li {
    padding: 5px 0;
}
#ls-campaign-list li + li {
    border-top: 1px dotted #eef1f4;
}

/* Alerts & Notes */
.ls-alert {
    background: #fafbfc;
    color: #4a5560;
    padding: 10px 14px;
    border-radius: 4px;
    font-size: 0.82rem;
    margin-top: 12px;
    border: 1px solid #e3e8ec;
    border-left: 3px solid #d4dae0;
    line-height: 1.55;
}
.ls-alert strong {
    color: #2c3e50;
    margin-right: 6px;
    font-weight: 700;
}
.ls-micro-note {
    font-size: 0.72rem;
    color: #7a8794;
    margin: 4px 0 0 0;
}

/* Footer Note (独立カード) */
.ls-footer-note {
    padding: 16px 20px;
    margin-top: 12px;
    background: #fafbfc;
    font-size: 0.78rem;
    color: #4a5560;
    border: 1px solid #eef1f4;
    border-radius: 6px;
}
.ls-footer-title {
    display: block;
    margin: 0 0 6px 0;
    font-size: 0.82rem;
    color: #2c3e50;
    font-weight: 700;
}
.ls-footer-note ul {
    margin: 0;
    padding-left: 18px;
    line-height: 1.65;
}

@media (max-width: 480px) {
    .ls-col-3 { grid-template-columns: 1fr; }
    .ls-result-price { font-size: 1.4rem; }
    .ls-plan-inner {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
    }
    .ls-plan-price-simple { align-self: flex-end; }
    .ls-savings-box {
        flex-direction: column;
        align-items: flex-start;
        gap: 4px;
    }
    .ls-savings-amount { text-align: left; }
}
