@charset "utf-8";
        * { box-sizing: border-box; margin: 0; padding: 0; }
        body {
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans JP", sans-serif;
            background-color: #f4f7f6;
            color: #333;
            line-height: 1.6;
            padding: 20px;
        }
        .container { max-width: 1200px; margin: 0 auto; }
        h1 { text-align: center; color: #1e3d59; margin-bottom: 30px; font-size: 1.8rem; }

        /* レイアウト */
        .app-layout { display: grid; grid-template-columns: 1fr; gap: 20px; }
        @media (min-width: 992px) { .app-layout { grid-template-columns: /* 450px */ 320px 1fr; } }

        /* カード */
        .card { background: #ffffff; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.08); padding: 24px; margin-bottom: 20px; }
        .card-title { font-size: /* 1.1rem; */ 1.8rem; color: #1e3d59; margin-bottom: 15px; border-bottom: 2px solid #e8eff2; padding-bottom: 8px; }

        /* フォーム */
        .form-group { margin-bottom: 15px; }
        .form-row { display: flex; gap: 10px; margin-bottom: 15px; }
        .form-row .form-group { flex: 1; margin-bottom: 0; }
        label { display: block; /* font-size: 0.85rem; */ font-size: 1.6rem; font-weight: 600; margin-bottom: 6px; color: #555; }
        input[type="number"], input[type="date"], select { width: 100%; padding: 10px; border: 1px solid #ccc; border-radius: 4px; /* font-size: 1rem; */ font-size: 1.6rem; background-color: #fff; }
        input:focus, select:focus { outline: none; border-color: #1e3d59; }

        /* ボタン */
        .btn { display: inline-block; width: 100%; padding: 12px; /* font-size: 1rem; */ font-size: 1.3rem; font-weight: bold; text-align: center; border: none; border-radius: 4px; cursor: pointer; }
        .btn-primary { background-color: #ff6e40; color: #fff; }
        .btn-primary:hover { background-color: #e65527; }
        .btn-outline { background-color: transparent; border: 1px solid #1e3d59; color: #1e3d59; }
        .btn-outline:hover { background-color: #1e3d59; color: #fff; }

        /* 結果表示 */
        .result-card { border-left: 5px solid #ff6e40; }
        .meta-info { /* font-size: 0.8rem; */ font-size: 1.5rem; color: #666; margin-bottom: 12px; }
        .result-table { width: 100%; border-collapse: collapse; margin-top: 10px; font-size: 0.9rem; }
        .result-table th, .result-table td { border: 1px solid #e0e0e0; padding: 10px; text-align: left; vertical-align: middle; }
        .result-table th { background-color: #f9fbfb; font-weight: 600; }
        .text-success { color: #2e7d32; font-weight: bold; }
        .text-danger { color: #c62828; font-weight: bold; }
        .text-primary { color: #1565c0; font-weight: bold; }
        .text-muted { color: #757575; }
        .day-length-box { margin-top: 15px; background-color: #1e3d59; color: #fff; padding: 12px; border-radius: 4px; text-align: center; }
        .day-length-box span { /* font-size: 0.85rem; */ font-size: 1.2rem; opacity: 0.9; }
        .day-length-box strong { display: block; font-size: 1.3rem; color: #ffc107; margin-top: 2px; }

        /* 地図セクション */
        #map { height: 500px; width: 100%; border-radius: 6px; border: 1px solid #ddd; }
        @media (min-width: 992px) {
            #map { /* height: 100%;*/ min-height: 550px; }
            .map-container { display: flex; flex-direction: column; height: 100%; }
        }

        /* レイヤー切り替えUIの調整 */
        .leaflet-control-layers { font-family: inherit; font-size: 0.85rem; padding: 6px 10px; border-radius: 6px !important; box-shadow: 0 2px 6px rgba(0,0,0,0.2) !important; }