/* =========================================================
   xp.css — 共通シェル / shared XP (Luna) shell
   index.html と contact.html の両方が読み込みます。
   ここを直すと全ページに効きます。ページ固有のデザインは
   index.css / contact.css に置いてください。

   読み込み順: xp.css → ページ固有CSS（後勝ち）

   目次:
     1. 変数
     2. ベース（Bliss風壁紙・リンク・フォーカス）
     3. ウィンドウ枠（Luna）
     4. キャプションボタン（最小化・最大化・閉じる）
     5. ボタン（.btn）
     6. 左の青いペイン（.tasks = index / .folders = contact）
     7. タスクバー（Start・タスク・通知領域・時計・言語）
     8. レスポンシブ（共通分）
   ========================================================= */

/* ---- 1. 変数 ---- */
:root{
  --face:#ece9d8; --text:#000; --link:#0033cc;

  /* Luna Blue：タイトルバー（上→下）。中央の明るさは .bar::before で重ねる */
  --ttl-a:#0a5fd8; --ttl-b:#3a8ef5; --ttl-c:#2574ea; --ttl-d:#0f55d0; --ttl-e:#0843b3;
  /* 非アクティブ */
  --ttli-a:#7a9ad8; --ttli-b:#a9c2ef; --ttli-c:#9ab6e8; --ttli-d:#88a6de; --ttli-e:#7c99d2;
  /* 外枠の3本線：濃青 / 明青 / 白 */
  --frame-dark:#002d96; --frame:#1d63d8; --frame-light:#6aa1f5;
  --frame-i:#7d9ad6;    --frame-i-dark:#6784c2;

  /* タスクバー（XP標準に近い 30px） */
  --tb-h:30px;
  --tb-a:#3f8cf3; --tb-b:#245edb; --tb-c:#1f55cc; --tb-d:#1941a5;
  --tray-a:#1ea8f5; --tray-b:#0f8ae0; --tray-c:#0c74cf; --tray-d:#0a5fb3;
  --green-a:#58b547; --green-b:#3a9a31; --green-c:#2f8a2a; --green-d:#26791f;
}

/* ---- 2. ベース ---- */
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0; color:var(--text); font:13px/1.5 Tahoma, "MS UI Gothic", "Meiryo", Verdana, sans-serif;
  /* 写真調のオリジナル壁紙。読み込めない場合は SVG → グラデーションの順で表示 */
  background:
    url("assets/images/bliss-inspired.jpg") 50% 100% / cover no-repeat fixed,
    url("bliss.svg") 50% 100% / cover no-repeat fixed,
    linear-gradient(#1f6fd6, #6fb0ee 58%, #7cb836 60%, #3f7f1c);
  background-color:#3f8fe0}
/* 画面比率に応じたトリミング：縦長では稜線（左寄り）が見えるように寄せる */
@media (max-aspect-ratio:4/5){ body{background-position:38% 100%, 38% 100%, 0 0} }
@media (min-aspect-ratio:21/9){ body{background-position:50% 72%, 50% 72%, 0 0} }

a{color:var(--link)} a:focus-visible{outline:2px dotted #000; outline-offset:2px}
button:focus-visible{outline:2px dotted #fff; outline-offset:1px}
input:focus-visible,textarea:focus-visible{outline:2px solid #2a5fdc; outline-offset:1px}

/* ---- 3. ウィンドウ枠（Luna）----
   外側から：濃青 1px（outline 代わりの box-shadow）→ 明青の枠 3px → 内側の白 1px */
.win{background:var(--face); padding:0 4px 4px;
     border:3px solid var(--frame); border-top:0; border-radius:8px 8px 2px 2px;
     box-shadow:
       0 0 0 1px var(--frame-dark),                 /* 濃青の外線 */
       inset 1px 0 0 var(--frame-light),            /* 明青の内線（左右・下） */
       inset -1px 0 0 var(--frame-light),
       inset 0 -1px 0 var(--frame-light),
       0 10px 28px rgba(0,0,0,.38)}
/* 白の内線：クライアント領域のすぐ外側 */
.win::after{content:""; position:absolute; left:3px; right:3px; bottom:3px; top:28px; pointer-events:none;
            border:1px solid rgba(255,255,255,.75); border-top:0; border-radius:0 0 1px 1px}
.win[hidden]{display:none}

.bar{position:relative; color:#fff; font-weight:bold; font-size:13px; letter-spacing:.1px;
     margin:0 -7px; padding:0 5px 0 7px; height:29px; border-radius:8px 8px 0 0;
     display:flex; align-items:center; gap:6px; user-select:none; overflow:hidden;
     text-shadow:1px 1px 0 rgba(0,0,0,.45);
     background:linear-gradient(var(--ttl-a) 0%, var(--ttl-b) 9%, var(--ttl-c) 26%, var(--ttl-d) 78%, var(--ttl-e) 100%);
     box-shadow:inset 0 1px 0 rgba(255,255,255,.55), inset 1px 0 0 rgba(255,255,255,.25), inset -1px 0 0 rgba(0,0,0,.2), 0 0 0 1px var(--frame-dark)}
/* 中央が明るい Luna Blue */
.bar::before{content:""; position:absolute; inset:0; pointer-events:none;
             background:
               radial-gradient(120% 140% at 50% 20%, rgba(255,255,255,.20), transparent 55%),
               linear-gradient(90deg, rgba(0,0,40,.10), transparent 18%, transparent 82%, rgba(0,0,40,.12))}
.bar > *{position:relative}
.bar .ico{width:16px; height:16px; flex:none; filter:drop-shadow(1px 1px 0 rgba(0,0,0,.35))}
.bar .ttl{flex:1; min-width:0; overflow:hidden; white-space:nowrap; text-overflow:ellipsis}

/* 非アクティブ（.blur）：色を抜いて影も弱く */
.win.blur{border-color:var(--frame-i);
          box-shadow:0 0 0 1px var(--frame-i-dark), inset 1px 0 0 #a9bdea, inset -1px 0 0 #a9bdea, inset 0 -1px 0 #a9bdea, 0 4px 14px rgba(0,0,0,.25)}
.win.blur .bar{color:#dfe8f8; text-shadow:none;
               background:linear-gradient(var(--ttli-a) 0%, var(--ttli-b) 9%, var(--ttli-c) 26%, var(--ttli-d) 78%, var(--ttli-e) 100%);
               box-shadow:inset 0 1px 0 rgba(255,255,255,.45), 0 0 0 1px var(--frame-i-dark)}
.win.blur .bar .ico{opacity:.8; filter:none}
.win.blur .cap{filter:saturate(.45) brightness(1.08)}

.menu{display:flex; gap:14px; padding:3px 8px; background:#f4f3ee; border-bottom:1px solid #d5d2c6; user-select:none}
.menu u{text-decoration:underline}
.body{background:#fff; border:1px solid #7f9db9}
.status{padding:3px 8px; font-size:11px; display:flex; gap:12px; border-top:1px solid #d5d2c6}
.status span{flex:1}

/* ---- 4. キャプションボタン ----
   index は <button class="cap …">、contact は <a class="cap close"> と飾りの <span class="cap …"> */
.bar .btns{margin-left:auto; display:flex; gap:2px; flex:none}
.cap{position:relative; display:block; width:21px; height:21px; padding:0; flex:none; cursor:pointer;
     border:1px solid #fff; border-radius:3px;
     background:
       radial-gradient(90% 70% at 30% 20%, rgba(255,255,255,.55), transparent 60%),
       linear-gradient(#6aa4fb 0%, #3a7ef0 40%, #2263dd 70%, #1d56c9 100%);
     box-shadow:inset 0 0 0 1px rgba(0,40,140,.35), 0 1px 1px rgba(0,0,0,.25)}
span.cap{cursor:default}
/* 疑似要素は * のリセット対象外なので box-sizing を明示（はみ出し防止）。
   座標はボタン内側 19×19px 基準 */
.cap::before,.cap::after{content:""; position:absolute; box-sizing:border-box; background:#fff; box-shadow:1px 1px 0 rgba(0,0,0,.25)}
/* 最小化：下寄りの短い横棒 */
.cap.min::before{left:5px; top:12px; width:8px; height:3px}
/* 最大化：上辺が太い四角 */
.cap.max::before{left:4px; top:3px; width:11px; height:11px; background:none; border:1px solid #fff; border-top-width:3px;
                 box-shadow:1px 1px 0 rgba(0,0,0,.2)}
/* 元に戻す：重なった2つの四角（奥の四角は手前と重なる部分を切り抜く） */
.cap.max.restore::before{left:3px; top:7px; width:9px; height:8px; border-top-width:2px}
.cap.max.restore::after{left:7px; top:3px; width:9px; height:8px; background:none; border:1px solid #fff; border-top-width:2px;
                        clip-path:polygon(0 0,100% 0,100% 100%,5px 100%,5px 4px,0 4px); box-shadow:none}
/* 閉じる：赤い立体ボタンに白いX */
.cap.close{background:
       radial-gradient(90% 70% at 30% 20%, rgba(255,255,255,.55), transparent 60%),
       linear-gradient(#f5a38f 0%, #e5593d 38%, #d2401f 70%, #b62c12 100%);
     box-shadow:inset 0 0 0 1px rgba(120,20,0,.35), 0 1px 1px rgba(0,0,0,.25)}
.cap.close::before,.cap.close::after{left:3px; top:8px; width:13px; height:3px; border-radius:1px; transform:rotate(45deg)}
.cap.close::after{transform:rotate(-45deg)}

.cap:hover{filter:brightness(1.12)}
.cap.close:hover{filter:brightness(1.08) saturate(1.1)}
/* 押下：1px 沈む */
button.cap:active,a.cap:active{transform:translateY(1px);
     box-shadow:inset 0 2px 3px rgba(0,0,0,.35), inset 0 0 0 1px rgba(0,40,140,.35)}

/* ---- 5. ボタン ---- */
.btn{font:inherit; background:linear-gradient(#fff,#f3f2ec 40%,#e3e0d2); border:1px solid #003c74; border-radius:3px;
     padding:4px 18px; min-width:80px; cursor:pointer; box-shadow:inset 0 0 0 1px #fff, inset 0 -2px 0 #d6d0bd}
.btn:hover{box-shadow:inset 0 0 0 1px #fff, inset 0 -2px 0 #f8b33a, inset 0 2px 0 #ffd88a}
.btn.default{box-shadow:inset 0 0 0 2px #8fb5f2, inset 0 0 0 3px #fff}
.btn:active{background:#e0ddcf; transform:translateY(1px); box-shadow:inset 0 2px 3px rgba(0,0,0,.2)}

/* ---- 6. 左の青いペイン ---- */
.tasks,.folders{background:linear-gradient(#7aa7ec,#6d98e0); padding:10px; color:#fff; font-size:12px}
.tasks .box,.folders .box{background:#fff; color:#215dc6; border-radius:4px 4px 0 0; overflow:hidden; margin-bottom:12px}
.tasks .box h3,.folders .box h3{margin:0; padding:5px 8px; font-size:12px; color:#0a3d91; background:linear-gradient(#fff,#c6d3f7)}
.tasks .box ul,.folders .box ul{list-style:none; padding:6px 8px; margin:0; background:#d6dff7}
.tasks .box li,.folders .box li{margin:3px 0}
.tasks .box a,.folders .box a{text-decoration:none}

/* ---- 7. タスクバー ---- */
.taskbar{position:fixed; left:0; right:0; bottom:0; height:var(--tb-h); display:flex; align-items:center; gap:3px; z-index:1000;
         background:linear-gradient(var(--tb-a) 0%, var(--tb-b) 10%, var(--tb-c) 50%, var(--tb-b) 88%, var(--tb-d) 100%);
         border-top:1px solid #0c3a9e;
         box-shadow:inset 0 1px 0 #5e9cf6, inset 0 2px 0 rgba(255,255,255,.18)}   /* 上端のハイライト線 */

/* Start：右側が大きく丸い楕円気味。左端もわずかに丸める */
.start{position:relative; height:var(--tb-h); margin-top:-1px; padding:0 20px 0 9px; flex:none;
       display:flex; align-items:center; gap:6px; cursor:pointer; text-decoration:none;
       color:#fff; font:italic bold 17px/1 "Trebuchet MS", "Franklin Gothic Medium", Tahoma, sans-serif;
       text-shadow:1px 1px 1px rgba(0,0,0,.55); letter-spacing:.3px;
       border:0; border-radius:3px 16px 16px 3px / 3px 50% 50% 3px;
       background:
         radial-gradient(70% 60% at 40% 20%, rgba(255,255,255,.35), transparent 60%),
         linear-gradient(var(--green-a) 0%, var(--green-b) 30%, var(--green-c) 70%, var(--green-d) 100%);
       box-shadow:inset 0 1px 0 rgba(255,255,255,.5), inset -2px 0 3px rgba(0,0,0,.25), 2px 0 3px rgba(0,0,0,.35)}
.start:hover{filter:brightness(1.08)}
.start:active,.start[aria-expanded="true"]{transform:translateY(1px);
       background:linear-gradient(var(--green-d) 0%, var(--green-c) 40%, var(--green-b) 100%);
       box-shadow:inset 0 2px 5px rgba(0,0,0,.45), 2px 0 3px rgba(0,0,0,.35)}
.start .flag{width:18px; height:18px; flex:none; filter:drop-shadow(1px 1px 0 rgba(0,0,0,.45))}

/* タスクボタン：非アクティブ＝盛り上がり / アクティブ＝押し込み */
.task{height:22px; margin-left:3px; padding:0 10px 0 6px; flex:0 1 160px; min-width:0; max-width:160px;
      display:flex; align-items:center; gap:5px; cursor:pointer;
      color:#fff; font:11px/1 Tahoma,"Meiryo",sans-serif; text-align:left; text-shadow:1px 1px 0 rgba(0,0,0,.3);
      border:1px solid #1541a8; border-radius:3px; overflow:hidden; white-space:nowrap;
      background:linear-gradient(#5b9cf8 0%, #3b7fee 12%, #2f70e3 88%, #245fcf 100%);
      box-shadow:inset 0 1px 0 rgba(255,255,255,.45), inset 1px 0 0 rgba(255,255,255,.15)}
.task .ico{width:16px; height:16px; flex:none}
.task .lbl{overflow:hidden; text-overflow:ellipsis}
.task:hover{background:linear-gradient(#72acfb 0%, #4d8ef4 12%, #3f80ec 88%, #336fda 100%)}
.task.active{border-color:#0c2c7a; font-weight:bold;
      background:linear-gradient(#1b44a8 0%, #1e4fbd 20%, #2358c6 100%);
      box-shadow:inset 0 2px 3px rgba(0,0,0,.5), inset 0 -1px 0 rgba(255,255,255,.12)}
.task:active{transform:translateY(1px)}

/* 通知領域：少し明るい青、左に凹凸の区切り */
.tray{margin-left:auto; height:var(--tb-h); margin-top:-1px; padding:0 8px 0 10px; flex:none;
      display:flex; align-items:center; gap:8px; color:#fff; font-size:11px;
      background:linear-gradient(var(--tray-a) 0%, var(--tray-b) 10%, var(--tray-c) 60%, var(--tray-d) 100%);
      border-left:1px solid #0b4fa8;
      box-shadow:inset 1px 0 0 #59c3fb, inset 0 1px 0 #77d0fd}

/* 時計：クリックで 1行（時刻）⇔ 2行（時刻＋日付） */
.clock{display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1px;
       font:11px/1.05 Tahoma,"Meiryo",sans-serif; color:#fff; background:none; border:0; padding:2px 4px; cursor:pointer;
       text-shadow:1px 1px 0 rgba(0,0,0,.3); border-radius:2px}
.clock:hover{background:rgba(255,255,255,.12)}
.clock .date{display:none; font-size:10px; opacity:.95}
.tray.two .clock .date{display:block}

/* 言語切り替え（トレイ内） */
.lang{display:flex; gap:2px}
.lang button{font:11px/1 Tahoma,"Meiryo",sans-serif; color:#fff; padding:3px 7px; cursor:pointer;
     border:1px solid rgba(255,255,255,.5); border-radius:3px; background:linear-gradient(#3fb2f7,#1b8de2)}
.lang button:hover{filter:brightness(1.12)}
.lang button:active{transform:translateY(1px)}
.lang button.on{background:linear-gradient(#0a5bb8,#0c6ccc); box-shadow:inset 0 2px 3px rgba(0,0,0,.45); border-color:#fff}

/* ---- 8. レスポンシブ（共通分）----
   スマホ判定：幅720px以下、または高さ500px以下のタッチ端末（横向きのスマホ） */
@media (max-width:720px), (max-height:500px) and (pointer:coarse){
  .task{display:none}
  .tray{padding:0 6px; gap:5px}
  .start{padding:0 14px 0 8px; font-size:15px}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none!important}
}
